sassc 2.0.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.gitmodules +1 -1
- data/.travis.yml +9 -3
- data/CHANGELOG.md +36 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/README.md +1 -1
- data/Rakefile +43 -7
- data/ext/depend +4 -0
- data/ext/extconf.rb +92 -0
- data/ext/libsass/VERSION +1 -0
- data/ext/libsass/include/sass/base.h +9 -1
- data/ext/libsass/include/sass/context.h +5 -1
- data/ext/libsass/src/MurmurHash2.hpp +91 -0
- data/ext/libsass/src/ast.cpp +755 -2028
- data/ext/libsass/src/ast.hpp +492 -2477
- data/ext/libsass/src/{to_c.cpp → ast2c.cpp} +22 -16
- data/ext/libsass/src/ast2c.hpp +39 -0
- data/ext/libsass/src/ast_def_macros.hpp +70 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +5 -3
- data/ext/libsass/src/ast_fwd_decl.hpp +107 -296
- data/ext/libsass/src/ast_helpers.hpp +292 -0
- data/ext/libsass/src/ast_sel_cmp.cpp +396 -0
- data/ext/libsass/src/ast_sel_super.cpp +539 -0
- data/ext/libsass/src/ast_sel_unify.cpp +275 -0
- data/ext/libsass/src/ast_sel_weave.cpp +616 -0
- data/ext/libsass/src/ast_selectors.cpp +1043 -0
- data/ext/libsass/src/ast_selectors.hpp +522 -0
- data/ext/libsass/src/ast_supports.cpp +114 -0
- data/ext/libsass/src/ast_supports.hpp +121 -0
- data/ext/libsass/src/ast_values.cpp +1154 -0
- data/ext/libsass/src/ast_values.hpp +498 -0
- data/ext/libsass/src/backtrace.cpp +11 -7
- data/ext/libsass/src/backtrace.hpp +5 -5
- data/ext/libsass/src/base64vlq.cpp +5 -2
- data/ext/libsass/src/base64vlq.hpp +1 -1
- data/ext/libsass/src/bind.cpp +35 -34
- data/ext/libsass/src/bind.hpp +3 -1
- data/ext/libsass/src/c2ast.cpp +64 -0
- data/ext/libsass/src/c2ast.hpp +14 -0
- data/ext/libsass/src/cencode.c +4 -6
- data/ext/libsass/src/check_nesting.cpp +83 -88
- data/ext/libsass/src/check_nesting.hpp +39 -34
- data/ext/libsass/src/color_maps.cpp +168 -164
- data/ext/libsass/src/color_maps.hpp +152 -160
- data/ext/libsass/src/constants.cpp +20 -0
- data/ext/libsass/src/constants.hpp +19 -0
- data/ext/libsass/src/context.cpp +104 -121
- data/ext/libsass/src/context.hpp +43 -55
- data/ext/libsass/src/cssize.cpp +103 -188
- data/ext/libsass/src/cssize.hpp +45 -51
- data/ext/libsass/src/dart_helpers.hpp +199 -0
- data/ext/libsass/src/debugger.hpp +524 -361
- data/ext/libsass/src/emitter.cpp +26 -26
- data/ext/libsass/src/emitter.hpp +20 -18
- data/ext/libsass/src/environment.cpp +41 -27
- data/ext/libsass/src/environment.hpp +33 -22
- data/ext/libsass/src/error_handling.cpp +92 -94
- data/ext/libsass/src/error_handling.hpp +73 -50
- data/ext/libsass/src/eval.cpp +380 -515
- data/ext/libsass/src/eval.hpp +64 -57
- data/ext/libsass/src/eval_selectors.cpp +75 -0
- data/ext/libsass/src/expand.cpp +322 -263
- data/ext/libsass/src/expand.hpp +55 -39
- data/ext/libsass/src/extender.cpp +1188 -0
- data/ext/libsass/src/extender.hpp +399 -0
- data/ext/libsass/src/extension.cpp +43 -0
- data/ext/libsass/src/extension.hpp +89 -0
- data/ext/libsass/src/file.cpp +134 -88
- data/ext/libsass/src/file.hpp +28 -37
- data/ext/libsass/src/fn_colors.cpp +596 -0
- data/ext/libsass/src/fn_colors.hpp +85 -0
- data/ext/libsass/src/fn_lists.cpp +285 -0
- data/ext/libsass/src/fn_lists.hpp +34 -0
- data/ext/libsass/src/fn_maps.cpp +94 -0
- data/ext/libsass/src/fn_maps.hpp +30 -0
- data/ext/libsass/src/fn_miscs.cpp +244 -0
- data/ext/libsass/src/fn_miscs.hpp +40 -0
- data/ext/libsass/src/fn_numbers.cpp +227 -0
- data/ext/libsass/src/fn_numbers.hpp +45 -0
- data/ext/libsass/src/fn_selectors.cpp +205 -0
- data/ext/libsass/src/fn_selectors.hpp +35 -0
- data/ext/libsass/src/fn_strings.cpp +268 -0
- data/ext/libsass/src/fn_strings.hpp +34 -0
- data/ext/libsass/src/fn_utils.cpp +158 -0
- data/ext/libsass/src/fn_utils.hpp +62 -0
- data/ext/libsass/src/inspect.cpp +253 -266
- data/ext/libsass/src/inspect.hpp +72 -74
- data/ext/libsass/src/json.cpp +2 -2
- data/ext/libsass/src/lexer.cpp +25 -84
- data/ext/libsass/src/lexer.hpp +5 -16
- data/ext/libsass/src/listize.cpp +27 -43
- data/ext/libsass/src/listize.hpp +14 -11
- data/ext/libsass/src/mapping.hpp +1 -0
- data/ext/libsass/src/memory.hpp +12 -0
- data/ext/libsass/src/memory/allocator.cpp +48 -0
- data/ext/libsass/src/memory/allocator.hpp +138 -0
- data/ext/libsass/src/memory/config.hpp +20 -0
- data/ext/libsass/src/memory/memory_pool.hpp +186 -0
- data/ext/libsass/src/memory/shared_ptr.cpp +33 -0
- data/ext/libsass/src/memory/shared_ptr.hpp +332 -0
- data/ext/libsass/src/operation.hpp +193 -143
- data/ext/libsass/src/operators.cpp +56 -29
- data/ext/libsass/src/operators.hpp +11 -11
- data/ext/libsass/src/ordered_map.hpp +112 -0
- data/ext/libsass/src/output.cpp +59 -75
- data/ext/libsass/src/output.hpp +15 -22
- data/ext/libsass/src/parser.cpp +662 -818
- data/ext/libsass/src/parser.hpp +96 -100
- data/ext/libsass/src/parser_selectors.cpp +189 -0
- data/ext/libsass/src/permutate.hpp +164 -0
- data/ext/libsass/src/plugins.cpp +12 -8
- data/ext/libsass/src/plugins.hpp +8 -8
- data/ext/libsass/src/position.cpp +10 -26
- data/ext/libsass/src/position.hpp +44 -21
- data/ext/libsass/src/prelexer.cpp +14 -8
- data/ext/libsass/src/prelexer.hpp +9 -9
- data/ext/libsass/src/remove_placeholders.cpp +59 -57
- data/ext/libsass/src/remove_placeholders.hpp +20 -18
- data/ext/libsass/src/sass.cpp +25 -18
- data/ext/libsass/src/sass.hpp +22 -14
- data/ext/libsass/src/sass2scss.cpp +49 -18
- data/ext/libsass/src/sass_context.cpp +104 -132
- data/ext/libsass/src/sass_context.hpp +2 -2
- data/ext/libsass/src/sass_functions.cpp +7 -4
- data/ext/libsass/src/sass_functions.hpp +1 -1
- data/ext/libsass/src/sass_values.cpp +26 -21
- data/ext/libsass/src/settings.hpp +19 -0
- data/ext/libsass/src/source.cpp +69 -0
- data/ext/libsass/src/source.hpp +95 -0
- data/ext/libsass/src/source_data.hpp +32 -0
- data/ext/libsass/src/source_map.cpp +27 -20
- data/ext/libsass/src/source_map.hpp +14 -11
- data/ext/libsass/src/stylesheet.cpp +22 -0
- data/ext/libsass/src/stylesheet.hpp +57 -0
- data/ext/libsass/src/to_value.cpp +24 -22
- data/ext/libsass/src/to_value.hpp +18 -22
- data/ext/libsass/src/units.cpp +28 -22
- data/ext/libsass/src/units.hpp +9 -8
- data/ext/libsass/src/utf8/checked.h +12 -10
- data/ext/libsass/src/utf8/core.h +3 -0
- data/ext/libsass/src/utf8_string.cpp +12 -10
- data/ext/libsass/src/utf8_string.hpp +7 -6
- data/ext/libsass/src/util.cpp +97 -107
- data/ext/libsass/src/util.hpp +74 -30
- data/ext/libsass/src/util_string.cpp +125 -0
- data/ext/libsass/src/util_string.hpp +73 -0
- data/ext/libsass/src/values.cpp +33 -24
- data/ext/libsass/src/values.hpp +2 -2
- data/lib/sassc.rb +24 -0
- data/lib/sassc/engine.rb +7 -5
- data/lib/sassc/functions_handler.rb +11 -13
- data/lib/sassc/native.rb +10 -9
- data/lib/sassc/native/native_functions_api.rb +0 -5
- data/lib/sassc/script.rb +4 -6
- data/lib/sassc/version.rb +1 -1
- data/sassc.gemspec +32 -12
- data/test/engine_test.rb +32 -2
- data/test/functions_test.rb +38 -1
- data/test/native_test.rb +4 -4
- metadata +95 -109
- data/ext/Rakefile +0 -3
- data/ext/libsass/.editorconfig +0 -15
- data/ext/libsass/.gitattributes +0 -2
- data/ext/libsass/.github/CONTRIBUTING.md +0 -65
- data/ext/libsass/.github/ISSUE_TEMPLATE.md +0 -54
- data/ext/libsass/.gitignore +0 -85
- data/ext/libsass/.travis.yml +0 -64
- data/ext/libsass/COPYING +0 -25
- data/ext/libsass/GNUmakefile.am +0 -88
- data/ext/libsass/INSTALL +0 -1
- data/ext/libsass/LICENSE +0 -25
- data/ext/libsass/Makefile +0 -351
- data/ext/libsass/Makefile.conf +0 -55
- data/ext/libsass/Readme.md +0 -104
- data/ext/libsass/SECURITY.md +0 -10
- data/ext/libsass/appveyor.yml +0 -91
- data/ext/libsass/configure.ac +0 -138
- data/ext/libsass/contrib/libsass.spec +0 -66
- data/ext/libsass/docs/README.md +0 -20
- data/ext/libsass/docs/api-context-example.md +0 -45
- data/ext/libsass/docs/api-context-internal.md +0 -163
- data/ext/libsass/docs/api-context.md +0 -295
- data/ext/libsass/docs/api-doc.md +0 -215
- data/ext/libsass/docs/api-function-example.md +0 -67
- data/ext/libsass/docs/api-function-internal.md +0 -8
- data/ext/libsass/docs/api-function.md +0 -74
- data/ext/libsass/docs/api-importer-example.md +0 -112
- data/ext/libsass/docs/api-importer-internal.md +0 -20
- data/ext/libsass/docs/api-importer.md +0 -86
- data/ext/libsass/docs/api-value-example.md +0 -55
- data/ext/libsass/docs/api-value-internal.md +0 -76
- data/ext/libsass/docs/api-value.md +0 -154
- data/ext/libsass/docs/build-on-darwin.md +0 -27
- data/ext/libsass/docs/build-on-gentoo.md +0 -55
- data/ext/libsass/docs/build-on-windows.md +0 -139
- data/ext/libsass/docs/build-shared-library.md +0 -35
- data/ext/libsass/docs/build-with-autotools.md +0 -78
- data/ext/libsass/docs/build-with-makefiles.md +0 -68
- data/ext/libsass/docs/build-with-mingw.md +0 -107
- data/ext/libsass/docs/build-with-visual-studio.md +0 -90
- data/ext/libsass/docs/build.md +0 -97
- data/ext/libsass/docs/compatibility-plan.md +0 -48
- data/ext/libsass/docs/contributing.md +0 -17
- data/ext/libsass/docs/custom-functions-internal.md +0 -122
- data/ext/libsass/docs/dev-ast-memory.md +0 -223
- data/ext/libsass/docs/implementations.md +0 -56
- data/ext/libsass/docs/plugins.md +0 -47
- data/ext/libsass/docs/setup-environment.md +0 -68
- data/ext/libsass/docs/source-map-internals.md +0 -51
- data/ext/libsass/docs/trace.md +0 -26
- data/ext/libsass/docs/triage.md +0 -17
- data/ext/libsass/docs/unicode.md +0 -39
- data/ext/libsass/extconf.rb +0 -6
- data/ext/libsass/include/sass/version.h.in +0 -12
- data/ext/libsass/m4/.gitkeep +0 -0
- data/ext/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 +0 -167
- data/ext/libsass/res/resource.rc +0 -35
- data/ext/libsass/script/bootstrap +0 -13
- data/ext/libsass/script/branding +0 -10
- data/ext/libsass/script/ci-build-libsass +0 -134
- data/ext/libsass/script/ci-build-plugin +0 -62
- data/ext/libsass/script/ci-install-compiler +0 -6
- data/ext/libsass/script/ci-install-deps +0 -20
- data/ext/libsass/script/ci-report-coverage +0 -42
- data/ext/libsass/script/spec +0 -5
- data/ext/libsass/script/tap-driver +0 -652
- data/ext/libsass/script/tap-runner +0 -1
- data/ext/libsass/script/test-leaks.pl +0 -103
- data/ext/libsass/src/GNUmakefile.am +0 -54
- data/ext/libsass/src/extend.cpp +0 -2130
- data/ext/libsass/src/extend.hpp +0 -86
- data/ext/libsass/src/functions.cpp +0 -2234
- data/ext/libsass/src/functions.hpp +0 -198
- data/ext/libsass/src/memory/SharedPtr.cpp +0 -114
- data/ext/libsass/src/memory/SharedPtr.hpp +0 -206
- data/ext/libsass/src/node.cpp +0 -319
- data/ext/libsass/src/node.hpp +0 -118
- data/ext/libsass/src/paths.hpp +0 -71
- data/ext/libsass/src/sass_util.cpp +0 -149
- data/ext/libsass/src/sass_util.hpp +0 -256
- data/ext/libsass/src/subset_map.cpp +0 -55
- data/ext/libsass/src/subset_map.hpp +0 -76
- data/ext/libsass/src/support/libsass.pc.in +0 -11
- data/ext/libsass/src/to_c.hpp +0 -39
- data/ext/libsass/test/test_node.cpp +0 -94
- data/ext/libsass/test/test_paths.cpp +0 -28
- data/ext/libsass/test/test_selector_difference.cpp +0 -25
- data/ext/libsass/test/test_specificity.cpp +0 -25
- data/ext/libsass/test/test_subset_map.cpp +0 -472
- data/ext/libsass/test/test_superselector.cpp +0 -69
- data/ext/libsass/test/test_unification.cpp +0 -31
- data/ext/libsass/version.sh +0 -10
- data/ext/libsass/win/libsass.sln +0 -39
- data/ext/libsass/win/libsass.sln.DotSettings +0 -9
- data/ext/libsass/win/libsass.targets +0 -118
- data/ext/libsass/win/libsass.vcxproj +0 -188
- data/ext/libsass/win/libsass.vcxproj.filters +0 -357
- data/lib/sassc/native/lib_c.rb +0 -21
- data/lib/tasks/libsass.rb +0 -33
|
@@ -1,28 +1,34 @@
|
|
|
1
|
+
// sass.hpp must go before all system headers to get the
|
|
2
|
+
// __EXTENSIONS__ fix on Solaris.
|
|
1
3
|
#include "sass.hpp"
|
|
2
|
-
|
|
4
|
+
|
|
5
|
+
#include "ast2c.hpp"
|
|
3
6
|
#include "ast.hpp"
|
|
4
7
|
|
|
5
8
|
namespace Sass {
|
|
6
9
|
|
|
7
|
-
union Sass_Value*
|
|
8
|
-
{ return sass_make_error("unknown type for C-API"); }
|
|
9
|
-
|
|
10
|
-
union Sass_Value* To_C::operator()(Boolean_Ptr b)
|
|
10
|
+
union Sass_Value* AST2C::operator()(Boolean* b)
|
|
11
11
|
{ return sass_make_boolean(b->value()); }
|
|
12
12
|
|
|
13
|
-
union Sass_Value*
|
|
13
|
+
union Sass_Value* AST2C::operator()(Number* n)
|
|
14
14
|
{ return sass_make_number(n->value(), n->unit().c_str()); }
|
|
15
15
|
|
|
16
|
-
union Sass_Value*
|
|
16
|
+
union Sass_Value* AST2C::operator()(Custom_Warning* w)
|
|
17
17
|
{ return sass_make_warning(w->message().c_str()); }
|
|
18
18
|
|
|
19
|
-
union Sass_Value*
|
|
19
|
+
union Sass_Value* AST2C::operator()(Custom_Error* e)
|
|
20
20
|
{ return sass_make_error(e->message().c_str()); }
|
|
21
21
|
|
|
22
|
-
union Sass_Value*
|
|
22
|
+
union Sass_Value* AST2C::operator()(Color_RGBA* c)
|
|
23
23
|
{ return sass_make_color(c->r(), c->g(), c->b(), c->a()); }
|
|
24
24
|
|
|
25
|
-
union Sass_Value*
|
|
25
|
+
union Sass_Value* AST2C::operator()(Color_HSLA* c)
|
|
26
|
+
{
|
|
27
|
+
Color_RGBA_Obj rgba = c->copyAsRGBA();
|
|
28
|
+
return operator()(rgba.ptr());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
union Sass_Value* AST2C::operator()(String_Constant* s)
|
|
26
32
|
{
|
|
27
33
|
if (s->quote_mark()) {
|
|
28
34
|
return sass_make_qstring(s->value().c_str());
|
|
@@ -31,10 +37,10 @@ namespace Sass {
|
|
|
31
37
|
}
|
|
32
38
|
}
|
|
33
39
|
|
|
34
|
-
union Sass_Value*
|
|
40
|
+
union Sass_Value* AST2C::operator()(String_Quoted* s)
|
|
35
41
|
{ return sass_make_qstring(s->value().c_str()); }
|
|
36
42
|
|
|
37
|
-
union Sass_Value*
|
|
43
|
+
union Sass_Value* AST2C::operator()(List* l)
|
|
38
44
|
{
|
|
39
45
|
union Sass_Value* v = sass_make_list(l->length(), l->separator(), l->is_bracketed());
|
|
40
46
|
for (size_t i = 0, L = l->length(); i < L; ++i) {
|
|
@@ -43,7 +49,7 @@ namespace Sass {
|
|
|
43
49
|
return v;
|
|
44
50
|
}
|
|
45
51
|
|
|
46
|
-
union Sass_Value*
|
|
52
|
+
union Sass_Value* AST2C::operator()(Map* m)
|
|
47
53
|
{
|
|
48
54
|
union Sass_Value* v = sass_make_map(m->length());
|
|
49
55
|
int i = 0;
|
|
@@ -55,7 +61,7 @@ namespace Sass {
|
|
|
55
61
|
return v;
|
|
56
62
|
}
|
|
57
63
|
|
|
58
|
-
union Sass_Value*
|
|
64
|
+
union Sass_Value* AST2C::operator()(Arguments* a)
|
|
59
65
|
{
|
|
60
66
|
union Sass_Value* v = sass_make_list(a->length(), SASS_COMMA, false);
|
|
61
67
|
for (size_t i = 0, L = a->length(); i < L; ++i) {
|
|
@@ -64,11 +70,11 @@ namespace Sass {
|
|
|
64
70
|
return v;
|
|
65
71
|
}
|
|
66
72
|
|
|
67
|
-
union Sass_Value*
|
|
73
|
+
union Sass_Value* AST2C::operator()(Argument* a)
|
|
68
74
|
{ return a->value()->perform(this); }
|
|
69
75
|
|
|
70
76
|
// not strictly necessary because of the fallback
|
|
71
|
-
union Sass_Value*
|
|
77
|
+
union Sass_Value* AST2C::operator()(Null* n)
|
|
72
78
|
{ return sass_make_null(); }
|
|
73
79
|
|
|
74
80
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#ifndef SASS_AST2C_H
|
|
2
|
+
#define SASS_AST2C_H
|
|
3
|
+
|
|
4
|
+
#include "ast_fwd_decl.hpp"
|
|
5
|
+
#include "operation.hpp"
|
|
6
|
+
#include "sass/values.h"
|
|
7
|
+
|
|
8
|
+
namespace Sass {
|
|
9
|
+
|
|
10
|
+
class AST2C : public Operation_CRTP<union Sass_Value*, AST2C> {
|
|
11
|
+
|
|
12
|
+
public:
|
|
13
|
+
|
|
14
|
+
AST2C() { }
|
|
15
|
+
~AST2C() { }
|
|
16
|
+
|
|
17
|
+
union Sass_Value* operator()(Boolean*);
|
|
18
|
+
union Sass_Value* operator()(Number*);
|
|
19
|
+
union Sass_Value* operator()(Color_RGBA*);
|
|
20
|
+
union Sass_Value* operator()(Color_HSLA*);
|
|
21
|
+
union Sass_Value* operator()(String_Constant*);
|
|
22
|
+
union Sass_Value* operator()(String_Quoted*);
|
|
23
|
+
union Sass_Value* operator()(Custom_Warning*);
|
|
24
|
+
union Sass_Value* operator()(Custom_Error*);
|
|
25
|
+
union Sass_Value* operator()(List*);
|
|
26
|
+
union Sass_Value* operator()(Map*);
|
|
27
|
+
union Sass_Value* operator()(Null*);
|
|
28
|
+
union Sass_Value* operator()(Arguments*);
|
|
29
|
+
union Sass_Value* operator()(Argument*);
|
|
30
|
+
|
|
31
|
+
// return sass error if type is not supported
|
|
32
|
+
union Sass_Value* fallback(AST_Node* x)
|
|
33
|
+
{ return sass_make_error("unknown type for C-API"); }
|
|
34
|
+
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
#endif
|
|
@@ -35,16 +35,6 @@ class LocalOption {
|
|
|
35
35
|
LocalOption<size_t> cnt_##name(name, name + 1); \
|
|
36
36
|
if (name > MAX_NESTING) throw Exception::NestingLimitError(pstate, traces); \
|
|
37
37
|
|
|
38
|
-
#define ATTACH_OPERATIONS()\
|
|
39
|
-
virtual void perform(Operation<void>* op) { (*op)(this); }\
|
|
40
|
-
virtual AST_Node_Ptr perform(Operation<AST_Node_Ptr>* op) { return (*op)(this); }\
|
|
41
|
-
virtual Statement_Ptr perform(Operation<Statement_Ptr>* op) { return (*op)(this); }\
|
|
42
|
-
virtual Expression_Ptr perform(Operation<Expression_Ptr>* op) { return (*op)(this); }\
|
|
43
|
-
virtual Selector_Ptr perform(Operation<Selector_Ptr>* op) { return (*op)(this); }\
|
|
44
|
-
virtual std::string perform(Operation<std::string>* op) { return (*op)(this); }\
|
|
45
|
-
virtual union Sass_Value* perform(Operation<union Sass_Value*>* op) { return (*op)(this); }\
|
|
46
|
-
virtual Value_Ptr perform(Operation<Value_Ptr>* op) { return (*op)(this); }
|
|
47
|
-
|
|
48
38
|
#define ADD_PROPERTY(type, name)\
|
|
49
39
|
protected:\
|
|
50
40
|
type name##_;\
|
|
@@ -77,4 +67,74 @@ public: \
|
|
|
77
67
|
void name(type name##__) { hash_ = 0; name##_ = name##__; } \
|
|
78
68
|
private:
|
|
79
69
|
|
|
70
|
+
#ifdef DEBUG_SHARED_PTR
|
|
71
|
+
|
|
72
|
+
#define ATTACH_ABSTRACT_AST_OPERATIONS(klass) \
|
|
73
|
+
virtual klass* copy(sass::string, size_t) const = 0; \
|
|
74
|
+
virtual klass* clone(sass::string, size_t) const = 0; \
|
|
75
|
+
|
|
76
|
+
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
|
|
77
|
+
klass(const klass* ptr); \
|
|
78
|
+
virtual klass* copy(sass::string, size_t) const override = 0; \
|
|
79
|
+
virtual klass* clone(sass::string, size_t) const override = 0; \
|
|
80
|
+
|
|
81
|
+
#define ATTACH_AST_OPERATIONS(klass) \
|
|
82
|
+
klass(const klass* ptr); \
|
|
83
|
+
virtual klass* copy(sass::string, size_t) const override; \
|
|
84
|
+
virtual klass* clone(sass::string, size_t) const override; \
|
|
85
|
+
|
|
86
|
+
#else
|
|
87
|
+
|
|
88
|
+
#define ATTACH_ABSTRACT_AST_OPERATIONS(klass) \
|
|
89
|
+
virtual klass* copy() const = 0; \
|
|
90
|
+
virtual klass* clone() const = 0; \
|
|
91
|
+
|
|
92
|
+
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
|
|
93
|
+
klass(const klass* ptr); \
|
|
94
|
+
virtual klass* copy() const override = 0; \
|
|
95
|
+
virtual klass* clone() const override = 0; \
|
|
96
|
+
|
|
97
|
+
#define ATTACH_AST_OPERATIONS(klass) \
|
|
98
|
+
klass(const klass* ptr); \
|
|
99
|
+
virtual klass* copy() const override; \
|
|
100
|
+
virtual klass* clone() const override; \
|
|
101
|
+
|
|
102
|
+
#endif
|
|
103
|
+
|
|
104
|
+
#define ATTACH_VIRTUAL_CMP_OPERATIONS(klass) \
|
|
105
|
+
virtual bool operator==(const klass& rhs) const = 0; \
|
|
106
|
+
virtual bool operator!=(const klass& rhs) const { return !(*this == rhs); }; \
|
|
107
|
+
|
|
108
|
+
#define ATTACH_CMP_OPERATIONS(klass) \
|
|
109
|
+
virtual bool operator==(const klass& rhs) const; \
|
|
110
|
+
virtual bool operator!=(const klass& rhs) const { return !(*this == rhs); }; \
|
|
111
|
+
|
|
112
|
+
#ifdef DEBUG_SHARED_PTR
|
|
113
|
+
|
|
114
|
+
#define IMPLEMENT_AST_OPERATORS(klass) \
|
|
115
|
+
klass* klass::copy(sass::string file, size_t line) const { \
|
|
116
|
+
klass* cpy = SASS_MEMORY_NEW(klass, this); \
|
|
117
|
+
cpy->trace(file, line); \
|
|
118
|
+
return cpy; \
|
|
119
|
+
} \
|
|
120
|
+
klass* klass::clone(sass::string file, size_t line) const { \
|
|
121
|
+
klass* cpy = copy(file, line); \
|
|
122
|
+
cpy->cloneChildren(); \
|
|
123
|
+
return cpy; \
|
|
124
|
+
} \
|
|
125
|
+
|
|
126
|
+
#else
|
|
127
|
+
|
|
128
|
+
#define IMPLEMENT_AST_OPERATORS(klass) \
|
|
129
|
+
klass* klass::copy() const { \
|
|
130
|
+
return SASS_MEMORY_NEW(klass, this); \
|
|
131
|
+
} \
|
|
132
|
+
klass* klass::clone() const { \
|
|
133
|
+
klass* cpy = copy(); \
|
|
134
|
+
cpy->cloneChildren(); \
|
|
135
|
+
return cpy; \
|
|
136
|
+
} \
|
|
137
|
+
|
|
138
|
+
#endif
|
|
139
|
+
|
|
80
140
|
#endif
|
|
@@ -16,14 +16,16 @@ namespace Sass {
|
|
|
16
16
|
IMPLEMENT_BASE_CAST(AST_Node)
|
|
17
17
|
IMPLEMENT_BASE_CAST(Expression)
|
|
18
18
|
IMPLEMENT_BASE_CAST(Statement)
|
|
19
|
-
IMPLEMENT_BASE_CAST(
|
|
19
|
+
IMPLEMENT_BASE_CAST(ParentStatement)
|
|
20
20
|
IMPLEMENT_BASE_CAST(PreValue)
|
|
21
21
|
IMPLEMENT_BASE_CAST(Value)
|
|
22
|
+
IMPLEMENT_BASE_CAST(Color)
|
|
22
23
|
IMPLEMENT_BASE_CAST(List)
|
|
23
24
|
IMPLEMENT_BASE_CAST(String)
|
|
24
25
|
IMPLEMENT_BASE_CAST(String_Constant)
|
|
25
|
-
IMPLEMENT_BASE_CAST(
|
|
26
|
+
IMPLEMENT_BASE_CAST(SupportsCondition)
|
|
26
27
|
IMPLEMENT_BASE_CAST(Selector)
|
|
27
|
-
IMPLEMENT_BASE_CAST(
|
|
28
|
+
IMPLEMENT_BASE_CAST(SelectorComponent)
|
|
29
|
+
IMPLEMENT_BASE_CAST(SimpleSelector)
|
|
28
30
|
|
|
29
31
|
}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
#ifndef SASS_AST_FWD_DECL_H
|
|
2
2
|
#define SASS_AST_FWD_DECL_H
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
#include
|
|
7
|
-
#include
|
|
8
|
-
#include <typeinfo>
|
|
9
|
-
#include <iostream>
|
|
10
|
-
#include <algorithm>
|
|
11
|
-
#include <unordered_map>
|
|
12
|
-
#include <unordered_set>
|
|
13
|
-
#include "memory/SharedPtr.hpp"
|
|
4
|
+
// sass.hpp must go before all system headers to get the
|
|
5
|
+
// __EXTENSIONS__ fix on Solaris.
|
|
6
|
+
#include "sass.hpp"
|
|
7
|
+
#include "memory.hpp"
|
|
14
8
|
#include "sass/functions.h"
|
|
15
9
|
|
|
16
10
|
/////////////////////////////////////////////
|
|
@@ -18,297 +12,161 @@
|
|
|
18
12
|
/////////////////////////////////////////////
|
|
19
13
|
namespace Sass {
|
|
20
14
|
|
|
15
|
+
class SourceData;
|
|
16
|
+
class SourceFile;
|
|
17
|
+
class SynthFile;
|
|
18
|
+
class ItplFile;
|
|
19
|
+
|
|
21
20
|
class AST_Node;
|
|
22
|
-
typedef AST_Node* AST_Node_Ptr;
|
|
23
|
-
typedef AST_Node const* AST_Node_Ptr_Const;
|
|
24
21
|
|
|
25
|
-
class
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
class ParentStatement;
|
|
23
|
+
|
|
24
|
+
class SimpleSelector;
|
|
28
25
|
|
|
29
|
-
class
|
|
30
|
-
typedef Simple_Selector* Simple_Selector_Ptr;
|
|
31
|
-
typedef Simple_Selector const* Simple_Selector_Ptr_Const;
|
|
26
|
+
class Parent_Reference;
|
|
32
27
|
|
|
33
28
|
class PreValue;
|
|
34
|
-
typedef PreValue* PreValue_Ptr;
|
|
35
|
-
typedef PreValue const* PreValue_Ptr_Const;
|
|
36
|
-
class Thunk;
|
|
37
|
-
typedef Thunk* Thunk_Ptr;
|
|
38
|
-
typedef Thunk const* Thunk_Ptr_Const;
|
|
39
29
|
class Block;
|
|
40
|
-
typedef Block* Block_Ptr;
|
|
41
|
-
typedef Block const* Block_Ptr_Const;
|
|
42
30
|
class Expression;
|
|
43
|
-
typedef Expression* Expression_Ptr;
|
|
44
|
-
typedef Expression const* Expression_Ptr_Const;
|
|
45
31
|
class Statement;
|
|
46
|
-
typedef Statement* Statement_Ptr;
|
|
47
|
-
typedef Statement const* Statement_Ptr_Const;
|
|
48
32
|
class Value;
|
|
49
|
-
typedef Value* Value_Ptr;
|
|
50
|
-
typedef Value const* Value_Ptr_Const;
|
|
51
33
|
class Declaration;
|
|
52
|
-
|
|
53
|
-
typedef Declaration const* Declaration_Ptr_Const;
|
|
54
|
-
class Ruleset;
|
|
55
|
-
typedef Ruleset* Ruleset_Ptr;
|
|
56
|
-
typedef Ruleset const* Ruleset_Ptr_Const;
|
|
34
|
+
class StyleRule;
|
|
57
35
|
class Bubble;
|
|
58
|
-
typedef Bubble* Bubble_Ptr;
|
|
59
|
-
typedef Bubble const* Bubble_Ptr_Const;
|
|
60
36
|
class Trace;
|
|
61
|
-
typedef Trace* Trace_Ptr;
|
|
62
|
-
typedef Trace const* Trace_Ptr_Const;
|
|
63
37
|
|
|
64
|
-
class
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
class Supports_Block;
|
|
68
|
-
typedef Supports_Block* Supports_Block_Ptr;
|
|
69
|
-
typedef Supports_Block const* Supports_Block_Ptr_Const;
|
|
70
|
-
class Directive;
|
|
71
|
-
typedef Directive* Directive_Ptr;
|
|
72
|
-
typedef Directive const* Directive_Ptr_Const;
|
|
38
|
+
class MediaRule;
|
|
39
|
+
class CssMediaRule;
|
|
40
|
+
class CssMediaQuery;
|
|
73
41
|
|
|
42
|
+
class SupportsRule;
|
|
43
|
+
class AtRule;
|
|
74
44
|
|
|
75
45
|
class Keyframe_Rule;
|
|
76
|
-
|
|
77
|
-
typedef Keyframe_Rule const* Keyframe_Rule_Ptr_Const;
|
|
78
|
-
class At_Root_Block;
|
|
79
|
-
typedef At_Root_Block* At_Root_Block_Ptr;
|
|
80
|
-
typedef At_Root_Block const* At_Root_Block_Ptr_Const;
|
|
46
|
+
class AtRootRule;
|
|
81
47
|
class Assignment;
|
|
82
|
-
typedef Assignment* Assignment_Ptr;
|
|
83
|
-
typedef Assignment const* Assignment_Ptr_Const;
|
|
84
48
|
|
|
85
49
|
class Import;
|
|
86
|
-
typedef Import* Import_Ptr;
|
|
87
|
-
typedef Import const* Import_Ptr_Const;
|
|
88
50
|
class Import_Stub;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
class
|
|
92
|
-
|
|
93
|
-
typedef Warning const* Warning_Ptr_Const;
|
|
94
|
-
|
|
95
|
-
class Error;
|
|
96
|
-
typedef Error* Error_Ptr;
|
|
97
|
-
typedef Error const* Error_Ptr_Const;
|
|
98
|
-
class Debug;
|
|
99
|
-
typedef Debug* Debug_Ptr;
|
|
100
|
-
typedef Debug const* Debug_Ptr_Const;
|
|
51
|
+
class WarningRule;
|
|
52
|
+
|
|
53
|
+
class ErrorRule;
|
|
54
|
+
class DebugRule;
|
|
101
55
|
class Comment;
|
|
102
|
-
typedef Comment* Comment_Ptr;
|
|
103
|
-
typedef Comment const* Comment_Ptr_Const;
|
|
104
56
|
|
|
105
57
|
class If;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
class
|
|
109
|
-
typedef For* For_Ptr;
|
|
110
|
-
typedef For const* For_Ptr_Const;
|
|
111
|
-
class Each;
|
|
112
|
-
typedef Each* Each_Ptr;
|
|
113
|
-
typedef Each const* Each_Ptr_Const;
|
|
114
|
-
class While;
|
|
115
|
-
typedef While* While_Ptr;
|
|
116
|
-
typedef While const* While_Ptr_Const;
|
|
58
|
+
class ForRule;
|
|
59
|
+
class EachRule;
|
|
60
|
+
class WhileRule;
|
|
117
61
|
class Return;
|
|
118
|
-
typedef Return* Return_Ptr;
|
|
119
|
-
typedef Return const* Return_Ptr_Const;
|
|
120
62
|
class Content;
|
|
121
|
-
|
|
122
|
-
typedef Content const* Content_Ptr_Const;
|
|
123
|
-
class Extension;
|
|
124
|
-
typedef Extension* Extension_Ptr;
|
|
125
|
-
typedef Extension const* Extension_Ptr_Const;
|
|
63
|
+
class ExtendRule;
|
|
126
64
|
class Definition;
|
|
127
|
-
typedef Definition* Definition_Ptr;
|
|
128
|
-
typedef Definition const* Definition_Ptr_Const;
|
|
129
65
|
|
|
130
66
|
class List;
|
|
131
|
-
typedef List* List_Ptr;
|
|
132
|
-
typedef List const* List_Ptr_Const;
|
|
133
67
|
class Map;
|
|
134
|
-
typedef Map* Map_Ptr;
|
|
135
|
-
typedef Map const* Map_Ptr_Const;
|
|
136
68
|
class Function;
|
|
137
|
-
typedef Function* Function_Ptr;
|
|
138
|
-
typedef Function const* Function_Ptr_Const;
|
|
139
69
|
|
|
140
70
|
class Mixin_Call;
|
|
141
|
-
typedef Mixin_Call* Mixin_Call_Ptr;
|
|
142
|
-
typedef Mixin_Call const* Mixin_Call_Ptr_Const;
|
|
143
71
|
class Binary_Expression;
|
|
144
|
-
typedef Binary_Expression* Binary_Expression_Ptr;
|
|
145
|
-
typedef Binary_Expression const* Binary_Expression_Ptr_Const;
|
|
146
72
|
class Unary_Expression;
|
|
147
|
-
typedef Unary_Expression* Unary_Expression_Ptr;
|
|
148
|
-
typedef Unary_Expression const* Unary_Expression_Ptr_Const;
|
|
149
73
|
class Function_Call;
|
|
150
|
-
typedef Function_Call* Function_Call_Ptr;
|
|
151
|
-
typedef Function_Call const* Function_Call_Ptr_Const;
|
|
152
|
-
class Function_Call_Schema;
|
|
153
|
-
typedef Function_Call_Schema* Function_Call_Schema_Ptr;
|
|
154
|
-
typedef Function_Call_Schema const* Function_Call_Schema_Ptr_Const;
|
|
155
74
|
class Custom_Warning;
|
|
156
|
-
typedef Custom_Warning* Custom_Warning_Ptr;
|
|
157
|
-
typedef Custom_Warning const* Custom_Warning_Ptr_Const;
|
|
158
75
|
class Custom_Error;
|
|
159
|
-
typedef Custom_Error* Custom_Error_Ptr;
|
|
160
|
-
typedef Custom_Error const* Custom_Error_Ptr_Const;
|
|
161
76
|
|
|
162
77
|
class Variable;
|
|
163
|
-
typedef Variable* Variable_Ptr;
|
|
164
|
-
typedef Variable const* Variable_Ptr_Const;
|
|
165
78
|
class Number;
|
|
166
|
-
typedef Number* Number_Ptr;
|
|
167
|
-
typedef Number const* Number_Ptr_Const;
|
|
168
79
|
class Color;
|
|
169
|
-
|
|
170
|
-
|
|
80
|
+
class Color_RGBA;
|
|
81
|
+
class Color_HSLA;
|
|
171
82
|
class Boolean;
|
|
172
|
-
typedef Boolean* Boolean_Ptr;
|
|
173
|
-
typedef Boolean const* Boolean_Ptr_Const;
|
|
174
83
|
class String;
|
|
175
|
-
|
|
176
|
-
typedef String const* String_Ptr_Const;
|
|
84
|
+
class Null;
|
|
177
85
|
|
|
178
86
|
class String_Schema;
|
|
179
|
-
typedef String_Schema* String_Schema_Ptr;
|
|
180
|
-
typedef String_Schema const* String_Schema_Ptr_Const;
|
|
181
87
|
class String_Constant;
|
|
182
|
-
typedef String_Constant* String_Constant_Ptr;
|
|
183
|
-
typedef String_Constant const* String_Constant_Ptr_Const;
|
|
184
88
|
class String_Quoted;
|
|
185
|
-
typedef String_Quoted* String_Quoted_Ptr;
|
|
186
|
-
typedef String_Quoted const* String_Quoted_Ptr_Const;
|
|
187
89
|
|
|
188
90
|
class Media_Query;
|
|
189
|
-
typedef Media_Query* Media_Query_Ptr;
|
|
190
|
-
typedef Media_Query const* Media_Query_Ptr_Const;
|
|
191
91
|
class Media_Query_Expression;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
class
|
|
195
|
-
|
|
196
|
-
typedef Supports_Condition const* Supports_Condition_Ptr_Const;
|
|
197
|
-
class Supports_Operator;
|
|
198
|
-
typedef Supports_Operator* Supports_Operator_Ptr;
|
|
199
|
-
typedef Supports_Operator const* Supports_Operator_Ptr_Const;
|
|
200
|
-
class Supports_Negation;
|
|
201
|
-
typedef Supports_Negation* Supports_Negation_Ptr;
|
|
202
|
-
typedef Supports_Negation const* Supports_Negation_Ptr_Const;
|
|
203
|
-
class Supports_Declaration;
|
|
204
|
-
typedef Supports_Declaration* Supports_Declaration_Ptr;
|
|
205
|
-
typedef Supports_Declaration const* Supports_Declaration_Ptr_Const;
|
|
92
|
+
class SupportsCondition;
|
|
93
|
+
class SupportsOperation;
|
|
94
|
+
class SupportsNegation;
|
|
95
|
+
class SupportsDeclaration;
|
|
206
96
|
class Supports_Interpolation;
|
|
207
|
-
|
|
208
|
-
typedef Supports_Interpolation const* Supports_Interpolation_Ptr_Const;
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
class Null;
|
|
212
|
-
typedef Null* Null_Ptr;
|
|
213
|
-
typedef Null const* Null_Ptr_Const;
|
|
214
|
-
|
|
97
|
+
|
|
215
98
|
class At_Root_Query;
|
|
216
|
-
typedef At_Root_Query* At_Root_Query_Ptr;
|
|
217
|
-
typedef At_Root_Query const* At_Root_Query_Ptr_Const;
|
|
218
|
-
class Parent_Selector;
|
|
219
|
-
typedef Parent_Selector* Parent_Selector_Ptr;
|
|
220
|
-
typedef Parent_Selector const* Parent_Selector_Ptr_Const;
|
|
221
99
|
class Parameter;
|
|
222
|
-
typedef Parameter* Parameter_Ptr;
|
|
223
|
-
typedef Parameter const* Parameter_Ptr_Const;
|
|
224
100
|
class Parameters;
|
|
225
|
-
typedef Parameters* Parameters_Ptr;
|
|
226
|
-
typedef Parameters const* Parameters_Ptr_Const;
|
|
227
101
|
class Argument;
|
|
228
|
-
typedef Argument* Argument_Ptr;
|
|
229
|
-
typedef Argument const* Argument_Ptr_Const;
|
|
230
102
|
class Arguments;
|
|
231
|
-
typedef Arguments* Arguments_Ptr;
|
|
232
|
-
typedef Arguments const* Arguments_Ptr_Const;
|
|
233
103
|
class Selector;
|
|
234
|
-
typedef Selector* Selector_Ptr;
|
|
235
|
-
typedef Selector const* Selector_Ptr_Const;
|
|
236
104
|
|
|
237
105
|
|
|
238
106
|
class Selector_Schema;
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
class
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
class
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
class
|
|
251
|
-
|
|
252
|
-
typedef Id_Selector const* Id_Selector_Ptr_Const;
|
|
253
|
-
class Attribute_Selector;
|
|
254
|
-
typedef Attribute_Selector* Attribute_Selector_Ptr;
|
|
255
|
-
typedef Attribute_Selector const* Attribute_Selector_Ptr_Const;
|
|
256
|
-
|
|
257
|
-
class Pseudo_Selector;
|
|
258
|
-
typedef Pseudo_Selector* Pseudo_Selector_Ptr;
|
|
259
|
-
typedef Pseudo_Selector const * Pseudo_Selector_Ptr_Const;
|
|
260
|
-
class Wrapped_Selector;
|
|
261
|
-
typedef Wrapped_Selector* Wrapped_Selector_Ptr;
|
|
262
|
-
typedef Wrapped_Selector const * Wrapped_Selector_Ptr_Const;
|
|
263
|
-
class Compound_Selector;
|
|
264
|
-
typedef Compound_Selector* Compound_Selector_Ptr;
|
|
265
|
-
typedef Compound_Selector const * Compound_Selector_Ptr_Const;
|
|
266
|
-
class Complex_Selector;
|
|
267
|
-
typedef Complex_Selector* Complex_Selector_Ptr;
|
|
268
|
-
typedef Complex_Selector const * Complex_Selector_Ptr_Const;
|
|
269
|
-
class Selector_List;
|
|
270
|
-
typedef Selector_List* Selector_List_Ptr;
|
|
271
|
-
typedef Selector_List const * Selector_List_Ptr_Const;
|
|
272
|
-
|
|
107
|
+
class PlaceholderSelector;
|
|
108
|
+
class TypeSelector;
|
|
109
|
+
class ClassSelector;
|
|
110
|
+
class IDSelector;
|
|
111
|
+
class AttributeSelector;
|
|
112
|
+
|
|
113
|
+
class PseudoSelector;
|
|
114
|
+
|
|
115
|
+
class SelectorComponent;
|
|
116
|
+
class SelectorCombinator;
|
|
117
|
+
class CompoundSelector;
|
|
118
|
+
class ComplexSelector;
|
|
119
|
+
class SelectorList;
|
|
273
120
|
|
|
274
121
|
// common classes
|
|
275
122
|
class Context;
|
|
276
123
|
class Expand;
|
|
277
124
|
class Eval;
|
|
278
125
|
|
|
126
|
+
class Extension;
|
|
127
|
+
|
|
279
128
|
// declare classes that are instances of memory nodes
|
|
280
|
-
//
|
|
281
|
-
|
|
129
|
+
// Note: also add a mapping without underscore
|
|
130
|
+
// ToDo: move to camelCase vars in the future
|
|
131
|
+
#define IMPL_MEM_OBJ(type) \
|
|
132
|
+
typedef SharedImpl<type> type##Obj; \
|
|
133
|
+
typedef SharedImpl<type> type##_Obj; \
|
|
134
|
+
|
|
135
|
+
IMPL_MEM_OBJ(SourceData);
|
|
136
|
+
IMPL_MEM_OBJ(SourceFile);
|
|
137
|
+
IMPL_MEM_OBJ(SynthFile);
|
|
138
|
+
IMPL_MEM_OBJ(ItplFile);
|
|
282
139
|
|
|
283
140
|
IMPL_MEM_OBJ(AST_Node);
|
|
284
141
|
IMPL_MEM_OBJ(Statement);
|
|
285
142
|
IMPL_MEM_OBJ(Block);
|
|
286
|
-
IMPL_MEM_OBJ(
|
|
143
|
+
IMPL_MEM_OBJ(StyleRule);
|
|
287
144
|
IMPL_MEM_OBJ(Bubble);
|
|
288
145
|
IMPL_MEM_OBJ(Trace);
|
|
289
|
-
IMPL_MEM_OBJ(
|
|
290
|
-
IMPL_MEM_OBJ(
|
|
291
|
-
IMPL_MEM_OBJ(
|
|
146
|
+
IMPL_MEM_OBJ(MediaRule);
|
|
147
|
+
IMPL_MEM_OBJ(CssMediaRule);
|
|
148
|
+
IMPL_MEM_OBJ(CssMediaQuery);
|
|
149
|
+
IMPL_MEM_OBJ(SupportsRule);
|
|
150
|
+
IMPL_MEM_OBJ(AtRule);
|
|
292
151
|
IMPL_MEM_OBJ(Keyframe_Rule);
|
|
293
|
-
IMPL_MEM_OBJ(
|
|
152
|
+
IMPL_MEM_OBJ(AtRootRule);
|
|
294
153
|
IMPL_MEM_OBJ(Declaration);
|
|
295
154
|
IMPL_MEM_OBJ(Assignment);
|
|
296
155
|
IMPL_MEM_OBJ(Import);
|
|
297
156
|
IMPL_MEM_OBJ(Import_Stub);
|
|
298
|
-
IMPL_MEM_OBJ(
|
|
299
|
-
IMPL_MEM_OBJ(
|
|
300
|
-
IMPL_MEM_OBJ(
|
|
157
|
+
IMPL_MEM_OBJ(WarningRule);
|
|
158
|
+
IMPL_MEM_OBJ(ErrorRule);
|
|
159
|
+
IMPL_MEM_OBJ(DebugRule);
|
|
301
160
|
IMPL_MEM_OBJ(Comment);
|
|
302
161
|
IMPL_MEM_OBJ(PreValue);
|
|
303
|
-
IMPL_MEM_OBJ(
|
|
304
|
-
IMPL_MEM_OBJ(Thunk);
|
|
162
|
+
IMPL_MEM_OBJ(ParentStatement);
|
|
305
163
|
IMPL_MEM_OBJ(If);
|
|
306
|
-
IMPL_MEM_OBJ(
|
|
307
|
-
IMPL_MEM_OBJ(
|
|
308
|
-
IMPL_MEM_OBJ(
|
|
164
|
+
IMPL_MEM_OBJ(ForRule);
|
|
165
|
+
IMPL_MEM_OBJ(EachRule);
|
|
166
|
+
IMPL_MEM_OBJ(WhileRule);
|
|
309
167
|
IMPL_MEM_OBJ(Return);
|
|
310
168
|
IMPL_MEM_OBJ(Content);
|
|
311
|
-
IMPL_MEM_OBJ(
|
|
169
|
+
IMPL_MEM_OBJ(ExtendRule);
|
|
312
170
|
IMPL_MEM_OBJ(Definition);
|
|
313
171
|
IMPL_MEM_OBJ(Mixin_Call);
|
|
314
172
|
IMPL_MEM_OBJ(Value);
|
|
@@ -319,12 +177,13 @@ namespace Sass {
|
|
|
319
177
|
IMPL_MEM_OBJ(Binary_Expression);
|
|
320
178
|
IMPL_MEM_OBJ(Unary_Expression);
|
|
321
179
|
IMPL_MEM_OBJ(Function_Call);
|
|
322
|
-
IMPL_MEM_OBJ(Function_Call_Schema);
|
|
323
180
|
IMPL_MEM_OBJ(Custom_Warning);
|
|
324
181
|
IMPL_MEM_OBJ(Custom_Error);
|
|
325
182
|
IMPL_MEM_OBJ(Variable);
|
|
326
183
|
IMPL_MEM_OBJ(Number);
|
|
327
184
|
IMPL_MEM_OBJ(Color);
|
|
185
|
+
IMPL_MEM_OBJ(Color_RGBA);
|
|
186
|
+
IMPL_MEM_OBJ(Color_HSLA);
|
|
328
187
|
IMPL_MEM_OBJ(Boolean);
|
|
329
188
|
IMPL_MEM_OBJ(String_Schema);
|
|
330
189
|
IMPL_MEM_OBJ(String);
|
|
@@ -332,94 +191,44 @@ namespace Sass {
|
|
|
332
191
|
IMPL_MEM_OBJ(String_Quoted);
|
|
333
192
|
IMPL_MEM_OBJ(Media_Query);
|
|
334
193
|
IMPL_MEM_OBJ(Media_Query_Expression);
|
|
335
|
-
IMPL_MEM_OBJ(
|
|
336
|
-
IMPL_MEM_OBJ(
|
|
337
|
-
IMPL_MEM_OBJ(
|
|
338
|
-
IMPL_MEM_OBJ(
|
|
194
|
+
IMPL_MEM_OBJ(SupportsCondition);
|
|
195
|
+
IMPL_MEM_OBJ(SupportsOperation);
|
|
196
|
+
IMPL_MEM_OBJ(SupportsNegation);
|
|
197
|
+
IMPL_MEM_OBJ(SupportsDeclaration);
|
|
339
198
|
IMPL_MEM_OBJ(Supports_Interpolation);
|
|
340
199
|
IMPL_MEM_OBJ(At_Root_Query);
|
|
341
200
|
IMPL_MEM_OBJ(Null);
|
|
342
|
-
IMPL_MEM_OBJ(
|
|
201
|
+
IMPL_MEM_OBJ(Parent_Reference);
|
|
343
202
|
IMPL_MEM_OBJ(Parameter);
|
|
344
203
|
IMPL_MEM_OBJ(Parameters);
|
|
345
204
|
IMPL_MEM_OBJ(Argument);
|
|
346
205
|
IMPL_MEM_OBJ(Arguments);
|
|
347
206
|
IMPL_MEM_OBJ(Selector);
|
|
348
207
|
IMPL_MEM_OBJ(Selector_Schema);
|
|
349
|
-
IMPL_MEM_OBJ(
|
|
350
|
-
IMPL_MEM_OBJ(
|
|
351
|
-
IMPL_MEM_OBJ(
|
|
352
|
-
IMPL_MEM_OBJ(
|
|
353
|
-
IMPL_MEM_OBJ(
|
|
354
|
-
IMPL_MEM_OBJ(
|
|
355
|
-
IMPL_MEM_OBJ(
|
|
356
|
-
|
|
357
|
-
IMPL_MEM_OBJ(
|
|
358
|
-
IMPL_MEM_OBJ(
|
|
359
|
-
IMPL_MEM_OBJ(
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
// Implement compare, order and hashing operations for AST Nodes
|
|
363
|
-
// ###########################################################################
|
|
364
|
-
|
|
365
|
-
struct HashNodes {
|
|
366
|
-
template <class T>
|
|
367
|
-
size_t operator() (const T& ex) const {
|
|
368
|
-
return ex.isNull() ? 0 : ex->hash();
|
|
369
|
-
}
|
|
370
|
-
};
|
|
371
|
-
struct OrderNodes {
|
|
372
|
-
template <class T>
|
|
373
|
-
bool operator() (const T& lhs, const T& rhs) const {
|
|
374
|
-
return !lhs.isNull() && !rhs.isNull() && *lhs < *rhs;
|
|
375
|
-
}
|
|
376
|
-
};
|
|
377
|
-
struct CompareNodes {
|
|
378
|
-
template <class T>
|
|
379
|
-
bool operator() (const T& lhs, const T& rhs) const {
|
|
380
|
-
// code around sass logic issue. 1px == 1 is true
|
|
381
|
-
// but both items are still different keys in maps
|
|
382
|
-
if (dynamic_cast<Number*>(lhs.ptr()))
|
|
383
|
-
if (dynamic_cast<Number*>(rhs.ptr()))
|
|
384
|
-
return lhs->hash() == rhs->hash();
|
|
385
|
-
return !lhs.isNull() && !rhs.isNull() && *lhs == *rhs;
|
|
386
|
-
}
|
|
387
|
-
};
|
|
208
|
+
IMPL_MEM_OBJ(SimpleSelector);
|
|
209
|
+
IMPL_MEM_OBJ(PlaceholderSelector);
|
|
210
|
+
IMPL_MEM_OBJ(TypeSelector);
|
|
211
|
+
IMPL_MEM_OBJ(ClassSelector);
|
|
212
|
+
IMPL_MEM_OBJ(IDSelector);
|
|
213
|
+
IMPL_MEM_OBJ(AttributeSelector);
|
|
214
|
+
IMPL_MEM_OBJ(PseudoSelector);
|
|
215
|
+
|
|
216
|
+
IMPL_MEM_OBJ(SelectorComponent);
|
|
217
|
+
IMPL_MEM_OBJ(SelectorCombinator);
|
|
218
|
+
IMPL_MEM_OBJ(CompoundSelector);
|
|
219
|
+
IMPL_MEM_OBJ(ComplexSelector);
|
|
220
|
+
IMPL_MEM_OBJ(SelectorList);
|
|
388
221
|
|
|
389
222
|
// ###########################################################################
|
|
390
223
|
// some often used typedefs
|
|
391
224
|
// ###########################################################################
|
|
392
225
|
|
|
393
|
-
typedef
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
>
|
|
399
|
-
typedef std::unordered_set<
|
|
400
|
-
Expression_Obj, // value
|
|
401
|
-
HashNodes, // hasher
|
|
402
|
-
CompareNodes // compare
|
|
403
|
-
> ExpressionSet;
|
|
404
|
-
|
|
405
|
-
typedef std::string SubSetMapKey;
|
|
406
|
-
typedef std::vector<std::string> SubSetMapKeys;
|
|
407
|
-
|
|
408
|
-
typedef std::pair<Complex_Selector_Obj, Compound_Selector_Obj> SubSetMapPair;
|
|
409
|
-
typedef std::pair<Compound_Selector_Obj, Complex_Selector_Obj> SubSetMapLookup;
|
|
410
|
-
typedef std::vector<SubSetMapPair> SubSetMapPairs;
|
|
411
|
-
typedef std::vector<SubSetMapLookup> SubSetMapLookups;
|
|
412
|
-
|
|
413
|
-
typedef std::pair<Complex_Selector_Obj, SubSetMapPairs> SubSetMapResult;
|
|
414
|
-
typedef std::vector<SubSetMapResult> SubSetMapResults;
|
|
415
|
-
|
|
416
|
-
typedef std::deque<Complex_Selector_Obj> ComplexSelectorDeque;
|
|
417
|
-
typedef std::set<Simple_Selector_Obj, OrderNodes> SimpleSelectorSet;
|
|
418
|
-
typedef std::set<Complex_Selector_Obj, OrderNodes> ComplexSelectorSet;
|
|
419
|
-
typedef std::set<Compound_Selector_Obj, OrderNodes> CompoundSelectorSet;
|
|
420
|
-
typedef std::unordered_set<Simple_Selector_Obj, HashNodes, CompareNodes> SimpleSelectorDict;
|
|
421
|
-
|
|
422
|
-
typedef std::vector<Sass_Import_Entry>* ImporterStack;
|
|
226
|
+
typedef sass::vector<Block*> BlockStack;
|
|
227
|
+
typedef sass::vector<Sass_Callee> CalleeStack;
|
|
228
|
+
typedef sass::vector<AST_Node_Obj> CallStack;
|
|
229
|
+
typedef sass::vector<CssMediaRuleObj> MediaStack;
|
|
230
|
+
typedef sass::vector<SelectorListObj> SelectorStack;
|
|
231
|
+
typedef sass::vector<Sass_Import_Entry> ImporterStack;
|
|
423
232
|
|
|
424
233
|
// only to switch implementations for testing
|
|
425
234
|
#define environment_map std::map
|
|
@@ -448,15 +257,17 @@ namespace Sass {
|
|
|
448
257
|
DECLARE_BASE_CAST(AST_Node)
|
|
449
258
|
DECLARE_BASE_CAST(Expression)
|
|
450
259
|
DECLARE_BASE_CAST(Statement)
|
|
451
|
-
DECLARE_BASE_CAST(
|
|
260
|
+
DECLARE_BASE_CAST(ParentStatement)
|
|
452
261
|
DECLARE_BASE_CAST(PreValue)
|
|
453
262
|
DECLARE_BASE_CAST(Value)
|
|
454
263
|
DECLARE_BASE_CAST(List)
|
|
264
|
+
DECLARE_BASE_CAST(Color)
|
|
455
265
|
DECLARE_BASE_CAST(String)
|
|
456
266
|
DECLARE_BASE_CAST(String_Constant)
|
|
457
|
-
DECLARE_BASE_CAST(
|
|
267
|
+
DECLARE_BASE_CAST(SupportsCondition)
|
|
458
268
|
DECLARE_BASE_CAST(Selector)
|
|
459
|
-
DECLARE_BASE_CAST(
|
|
269
|
+
DECLARE_BASE_CAST(SimpleSelector)
|
|
270
|
+
DECLARE_BASE_CAST(SelectorComponent)
|
|
460
271
|
|
|
461
272
|
}
|
|
462
273
|
|