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,198 +0,0 @@
|
|
|
1
|
-
#ifndef SASS_FUNCTIONS_H
|
|
2
|
-
#define SASS_FUNCTIONS_H
|
|
3
|
-
|
|
4
|
-
#include "listize.hpp"
|
|
5
|
-
#include "position.hpp"
|
|
6
|
-
#include "environment.hpp"
|
|
7
|
-
#include "ast_fwd_decl.hpp"
|
|
8
|
-
#include "sass/functions.h"
|
|
9
|
-
|
|
10
|
-
#define BUILT_IN(name) Expression_Ptr \
|
|
11
|
-
name(Env& env, Env& d_env, Context& ctx, Signature sig, ParserState pstate, Backtraces traces, std::vector<Selector_List_Obj> selector_stack)
|
|
12
|
-
|
|
13
|
-
namespace Sass {
|
|
14
|
-
struct Backtrace;
|
|
15
|
-
typedef const char* Signature;
|
|
16
|
-
typedef Expression_Ptr (*Native_Function)(Env&, Env&, Context&, Signature, ParserState, Backtraces, std::vector<Selector_List_Obj>);
|
|
17
|
-
|
|
18
|
-
Definition_Ptr make_native_function(Signature, Native_Function, Context& ctx);
|
|
19
|
-
Definition_Ptr make_c_function(Sass_Function_Entry c_func, Context& ctx);
|
|
20
|
-
|
|
21
|
-
std::string function_name(Signature);
|
|
22
|
-
|
|
23
|
-
namespace Functions {
|
|
24
|
-
|
|
25
|
-
extern Signature rgb_sig;
|
|
26
|
-
extern Signature rgba_4_sig;
|
|
27
|
-
extern Signature rgba_2_sig;
|
|
28
|
-
extern Signature red_sig;
|
|
29
|
-
extern Signature green_sig;
|
|
30
|
-
extern Signature blue_sig;
|
|
31
|
-
extern Signature mix_sig;
|
|
32
|
-
extern Signature hsl_sig;
|
|
33
|
-
extern Signature hsla_sig;
|
|
34
|
-
extern Signature hue_sig;
|
|
35
|
-
extern Signature saturation_sig;
|
|
36
|
-
extern Signature lightness_sig;
|
|
37
|
-
extern Signature adjust_hue_sig;
|
|
38
|
-
extern Signature lighten_sig;
|
|
39
|
-
extern Signature darken_sig;
|
|
40
|
-
extern Signature saturate_sig;
|
|
41
|
-
extern Signature desaturate_sig;
|
|
42
|
-
extern Signature grayscale_sig;
|
|
43
|
-
extern Signature complement_sig;
|
|
44
|
-
extern Signature invert_sig;
|
|
45
|
-
extern Signature alpha_sig;
|
|
46
|
-
extern Signature opacity_sig;
|
|
47
|
-
extern Signature opacify_sig;
|
|
48
|
-
extern Signature fade_in_sig;
|
|
49
|
-
extern Signature transparentize_sig;
|
|
50
|
-
extern Signature fade_out_sig;
|
|
51
|
-
extern Signature adjust_color_sig;
|
|
52
|
-
extern Signature scale_color_sig;
|
|
53
|
-
extern Signature change_color_sig;
|
|
54
|
-
extern Signature ie_hex_str_sig;
|
|
55
|
-
extern Signature unquote_sig;
|
|
56
|
-
extern Signature quote_sig;
|
|
57
|
-
extern Signature str_length_sig;
|
|
58
|
-
extern Signature str_insert_sig;
|
|
59
|
-
extern Signature str_index_sig;
|
|
60
|
-
extern Signature str_slice_sig;
|
|
61
|
-
extern Signature to_upper_case_sig;
|
|
62
|
-
extern Signature to_lower_case_sig;
|
|
63
|
-
extern Signature percentage_sig;
|
|
64
|
-
extern Signature round_sig;
|
|
65
|
-
extern Signature ceil_sig;
|
|
66
|
-
extern Signature floor_sig;
|
|
67
|
-
extern Signature abs_sig;
|
|
68
|
-
extern Signature min_sig;
|
|
69
|
-
extern Signature max_sig;
|
|
70
|
-
extern Signature inspect_sig;
|
|
71
|
-
extern Signature random_sig;
|
|
72
|
-
extern Signature length_sig;
|
|
73
|
-
extern Signature nth_sig;
|
|
74
|
-
extern Signature index_sig;
|
|
75
|
-
extern Signature join_sig;
|
|
76
|
-
extern Signature append_sig;
|
|
77
|
-
extern Signature zip_sig;
|
|
78
|
-
extern Signature list_separator_sig;
|
|
79
|
-
extern Signature type_of_sig;
|
|
80
|
-
extern Signature unit_sig;
|
|
81
|
-
extern Signature unitless_sig;
|
|
82
|
-
extern Signature comparable_sig;
|
|
83
|
-
extern Signature variable_exists_sig;
|
|
84
|
-
extern Signature global_variable_exists_sig;
|
|
85
|
-
extern Signature function_exists_sig;
|
|
86
|
-
extern Signature mixin_exists_sig;
|
|
87
|
-
extern Signature feature_exists_sig;
|
|
88
|
-
extern Signature call_sig;
|
|
89
|
-
extern Signature not_sig;
|
|
90
|
-
extern Signature if_sig;
|
|
91
|
-
extern Signature map_get_sig;
|
|
92
|
-
extern Signature map_merge_sig;
|
|
93
|
-
extern Signature map_remove_sig;
|
|
94
|
-
extern Signature map_keys_sig;
|
|
95
|
-
extern Signature map_values_sig;
|
|
96
|
-
extern Signature map_has_key_sig;
|
|
97
|
-
extern Signature keywords_sig;
|
|
98
|
-
extern Signature set_nth_sig;
|
|
99
|
-
extern Signature unique_id_sig;
|
|
100
|
-
extern Signature selector_nest_sig;
|
|
101
|
-
extern Signature selector_append_sig;
|
|
102
|
-
extern Signature selector_extend_sig;
|
|
103
|
-
extern Signature selector_replace_sig;
|
|
104
|
-
extern Signature selector_unify_sig;
|
|
105
|
-
extern Signature is_superselector_sig;
|
|
106
|
-
extern Signature simple_selectors_sig;
|
|
107
|
-
extern Signature selector_parse_sig;
|
|
108
|
-
extern Signature is_bracketed_sig;
|
|
109
|
-
extern Signature content_exists_sig;
|
|
110
|
-
extern Signature get_function_sig;
|
|
111
|
-
|
|
112
|
-
BUILT_IN(rgb);
|
|
113
|
-
BUILT_IN(rgba_4);
|
|
114
|
-
BUILT_IN(rgba_2);
|
|
115
|
-
BUILT_IN(red);
|
|
116
|
-
BUILT_IN(green);
|
|
117
|
-
BUILT_IN(blue);
|
|
118
|
-
BUILT_IN(mix);
|
|
119
|
-
BUILT_IN(hsl);
|
|
120
|
-
BUILT_IN(hsla);
|
|
121
|
-
BUILT_IN(hue);
|
|
122
|
-
BUILT_IN(saturation);
|
|
123
|
-
BUILT_IN(lightness);
|
|
124
|
-
BUILT_IN(adjust_hue);
|
|
125
|
-
BUILT_IN(lighten);
|
|
126
|
-
BUILT_IN(darken);
|
|
127
|
-
BUILT_IN(saturate);
|
|
128
|
-
BUILT_IN(desaturate);
|
|
129
|
-
BUILT_IN(grayscale);
|
|
130
|
-
BUILT_IN(complement);
|
|
131
|
-
BUILT_IN(invert);
|
|
132
|
-
BUILT_IN(alpha);
|
|
133
|
-
BUILT_IN(opacify);
|
|
134
|
-
BUILT_IN(transparentize);
|
|
135
|
-
BUILT_IN(adjust_color);
|
|
136
|
-
BUILT_IN(scale_color);
|
|
137
|
-
BUILT_IN(change_color);
|
|
138
|
-
BUILT_IN(ie_hex_str);
|
|
139
|
-
BUILT_IN(sass_unquote);
|
|
140
|
-
BUILT_IN(sass_quote);
|
|
141
|
-
BUILT_IN(str_length);
|
|
142
|
-
BUILT_IN(str_insert);
|
|
143
|
-
BUILT_IN(str_index);
|
|
144
|
-
BUILT_IN(str_slice);
|
|
145
|
-
BUILT_IN(to_upper_case);
|
|
146
|
-
BUILT_IN(to_lower_case);
|
|
147
|
-
BUILT_IN(percentage);
|
|
148
|
-
BUILT_IN(round);
|
|
149
|
-
BUILT_IN(ceil);
|
|
150
|
-
BUILT_IN(floor);
|
|
151
|
-
BUILT_IN(abs);
|
|
152
|
-
BUILT_IN(min);
|
|
153
|
-
BUILT_IN(max);
|
|
154
|
-
BUILT_IN(inspect);
|
|
155
|
-
BUILT_IN(random);
|
|
156
|
-
BUILT_IN(length);
|
|
157
|
-
BUILT_IN(nth);
|
|
158
|
-
BUILT_IN(index);
|
|
159
|
-
BUILT_IN(join);
|
|
160
|
-
BUILT_IN(append);
|
|
161
|
-
BUILT_IN(zip);
|
|
162
|
-
BUILT_IN(list_separator);
|
|
163
|
-
BUILT_IN(type_of);
|
|
164
|
-
BUILT_IN(unit);
|
|
165
|
-
BUILT_IN(unitless);
|
|
166
|
-
BUILT_IN(comparable);
|
|
167
|
-
BUILT_IN(variable_exists);
|
|
168
|
-
BUILT_IN(global_variable_exists);
|
|
169
|
-
BUILT_IN(function_exists);
|
|
170
|
-
BUILT_IN(mixin_exists);
|
|
171
|
-
BUILT_IN(feature_exists);
|
|
172
|
-
BUILT_IN(call);
|
|
173
|
-
BUILT_IN(sass_not);
|
|
174
|
-
BUILT_IN(sass_if);
|
|
175
|
-
BUILT_IN(map_get);
|
|
176
|
-
BUILT_IN(map_merge);
|
|
177
|
-
BUILT_IN(map_remove);
|
|
178
|
-
BUILT_IN(map_keys);
|
|
179
|
-
BUILT_IN(map_values);
|
|
180
|
-
BUILT_IN(map_has_key);
|
|
181
|
-
BUILT_IN(keywords);
|
|
182
|
-
BUILT_IN(set_nth);
|
|
183
|
-
BUILT_IN(unique_id);
|
|
184
|
-
BUILT_IN(selector_nest);
|
|
185
|
-
BUILT_IN(selector_append);
|
|
186
|
-
BUILT_IN(selector_extend);
|
|
187
|
-
BUILT_IN(selector_replace);
|
|
188
|
-
BUILT_IN(selector_unify);
|
|
189
|
-
BUILT_IN(is_superselector);
|
|
190
|
-
BUILT_IN(simple_selectors);
|
|
191
|
-
BUILT_IN(selector_parse);
|
|
192
|
-
BUILT_IN(is_bracketed);
|
|
193
|
-
BUILT_IN(content_exists);
|
|
194
|
-
BUILT_IN(get_function);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
#endif
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
#include "../sass.hpp"
|
|
2
|
-
#include <iostream>
|
|
3
|
-
#include <typeinfo>
|
|
4
|
-
|
|
5
|
-
#include "SharedPtr.hpp"
|
|
6
|
-
#include "../ast_fwd_decl.hpp"
|
|
7
|
-
|
|
8
|
-
#ifdef DEBUG_SHARED_PTR
|
|
9
|
-
#include "../debugger.hpp"
|
|
10
|
-
#endif
|
|
11
|
-
|
|
12
|
-
namespace Sass {
|
|
13
|
-
|
|
14
|
-
#ifdef DEBUG_SHARED_PTR
|
|
15
|
-
void SharedObj::dumpMemLeaks() {
|
|
16
|
-
if (!all.empty()) {
|
|
17
|
-
std::cerr << "###################################\n";
|
|
18
|
-
std::cerr << "# REPORTING MISSING DEALLOCATIONS #\n";
|
|
19
|
-
std::cerr << "###################################\n";
|
|
20
|
-
for (SharedObj* var : all) {
|
|
21
|
-
if (AST_Node_Ptr ast = dynamic_cast<AST_Node*>(var)) {
|
|
22
|
-
debug_ast(ast);
|
|
23
|
-
} else {
|
|
24
|
-
std::cerr << "LEAKED " << var << "\n";
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
std::vector<SharedObj*> SharedObj::all;
|
|
30
|
-
#endif
|
|
31
|
-
|
|
32
|
-
bool SharedObj::taint = false;
|
|
33
|
-
|
|
34
|
-
SharedObj::SharedObj()
|
|
35
|
-
: detached(false)
|
|
36
|
-
#ifdef DEBUG_SHARED_PTR
|
|
37
|
-
, dbg(false)
|
|
38
|
-
#endif
|
|
39
|
-
{
|
|
40
|
-
refcounter = 0;
|
|
41
|
-
#ifdef DEBUG_SHARED_PTR
|
|
42
|
-
if (taint) all.push_back(this);
|
|
43
|
-
#endif
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
SharedObj::~SharedObj() {
|
|
47
|
-
#ifdef DEBUG_SHARED_PTR
|
|
48
|
-
if (dbg) std::cerr << "Destruct " << this << "\n";
|
|
49
|
-
if(!all.empty()) { // check needed for MSVC (no clue why?)
|
|
50
|
-
all.erase(std::remove(all.begin(), all.end(), this), all.end());
|
|
51
|
-
}
|
|
52
|
-
#endif
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
void SharedPtr::decRefCount() {
|
|
56
|
-
if (node) {
|
|
57
|
-
-- node->refcounter;
|
|
58
|
-
#ifdef DEBUG_SHARED_PTR
|
|
59
|
-
if (node->dbg) std::cerr << "- " << node << " X " << node->refcounter << " (" << this << ") " << "\n";
|
|
60
|
-
#endif
|
|
61
|
-
if (node->refcounter == 0) {
|
|
62
|
-
#ifdef DEBUG_SHARED_PTR
|
|
63
|
-
// AST_Node_Ptr ast = dynamic_cast<AST_Node*>(node);
|
|
64
|
-
if (node->dbg) std::cerr << "DELETE NODE " << node << "\n";
|
|
65
|
-
#endif
|
|
66
|
-
if (!node->detached) {
|
|
67
|
-
delete(node);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
void SharedPtr::incRefCount() {
|
|
74
|
-
if (node) {
|
|
75
|
-
++ node->refcounter;
|
|
76
|
-
node->detached = false;
|
|
77
|
-
#ifdef DEBUG_SHARED_PTR
|
|
78
|
-
if (node->dbg) {
|
|
79
|
-
std::cerr << "+ " << node << " X " << node->refcounter << " (" << this << ") " << "\n";
|
|
80
|
-
}
|
|
81
|
-
#endif
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
SharedPtr::~SharedPtr() {
|
|
86
|
-
decRefCount();
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
// the create constructor
|
|
91
|
-
SharedPtr::SharedPtr(SharedObj* ptr)
|
|
92
|
-
: node(ptr) {
|
|
93
|
-
incRefCount();
|
|
94
|
-
}
|
|
95
|
-
// copy assignment operator
|
|
96
|
-
SharedPtr& SharedPtr::operator=(const SharedPtr& rhs) {
|
|
97
|
-
void* cur_ptr = (void*) node;
|
|
98
|
-
void* rhs_ptr = (void*) rhs.node;
|
|
99
|
-
if (cur_ptr == rhs_ptr) {
|
|
100
|
-
return *this;
|
|
101
|
-
}
|
|
102
|
-
decRefCount();
|
|
103
|
-
node = rhs.node;
|
|
104
|
-
incRefCount();
|
|
105
|
-
return *this;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// the copy constructor
|
|
109
|
-
SharedPtr::SharedPtr(const SharedPtr& obj)
|
|
110
|
-
: node(obj.node) {
|
|
111
|
-
incRefCount();
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
}
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
#ifndef SASS_MEMORY_SHARED_PTR_H
|
|
2
|
-
#define SASS_MEMORY_SHARED_PTR_H
|
|
3
|
-
|
|
4
|
-
#include "sass/base.h"
|
|
5
|
-
|
|
6
|
-
#include <vector>
|
|
7
|
-
|
|
8
|
-
namespace Sass {
|
|
9
|
-
|
|
10
|
-
class SharedPtr;
|
|
11
|
-
|
|
12
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
13
|
-
// Use macros for the allocation task, since overloading operator `new`
|
|
14
|
-
// has been proven to be flaky under certain compilers (see comment below).
|
|
15
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
16
|
-
|
|
17
|
-
#ifdef DEBUG_SHARED_PTR
|
|
18
|
-
|
|
19
|
-
#define SASS_MEMORY_NEW(Class, ...) \
|
|
20
|
-
((Class*)(new Class(__VA_ARGS__))->trace(__FILE__, __LINE__)) \
|
|
21
|
-
|
|
22
|
-
#define SASS_MEMORY_COPY(obj) \
|
|
23
|
-
((obj)->copy(__FILE__, __LINE__)) \
|
|
24
|
-
|
|
25
|
-
#define SASS_MEMORY_CLONE(obj) \
|
|
26
|
-
((obj)->clone(__FILE__, __LINE__)) \
|
|
27
|
-
|
|
28
|
-
#else
|
|
29
|
-
|
|
30
|
-
#define SASS_MEMORY_NEW(Class, ...) \
|
|
31
|
-
new Class(__VA_ARGS__) \
|
|
32
|
-
|
|
33
|
-
#define SASS_MEMORY_COPY(obj) \
|
|
34
|
-
((obj)->copy()) \
|
|
35
|
-
|
|
36
|
-
#define SASS_MEMORY_CLONE(obj) \
|
|
37
|
-
((obj)->clone()) \
|
|
38
|
-
|
|
39
|
-
#endif
|
|
40
|
-
|
|
41
|
-
class SharedObj {
|
|
42
|
-
protected:
|
|
43
|
-
friend class SharedPtr;
|
|
44
|
-
friend class Memory_Manager;
|
|
45
|
-
#ifdef DEBUG_SHARED_PTR
|
|
46
|
-
static std::vector<SharedObj*> all;
|
|
47
|
-
std::string file;
|
|
48
|
-
size_t line;
|
|
49
|
-
#endif
|
|
50
|
-
static bool taint;
|
|
51
|
-
long refcounter;
|
|
52
|
-
// long refcount;
|
|
53
|
-
bool detached;
|
|
54
|
-
#ifdef DEBUG_SHARED_PTR
|
|
55
|
-
bool dbg;
|
|
56
|
-
#endif
|
|
57
|
-
public:
|
|
58
|
-
#ifdef DEBUG_SHARED_PTR
|
|
59
|
-
static void dumpMemLeaks();
|
|
60
|
-
SharedObj* trace(std::string file, size_t line) {
|
|
61
|
-
this->file = file;
|
|
62
|
-
this->line = line;
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
#endif
|
|
66
|
-
SharedObj();
|
|
67
|
-
#ifdef DEBUG_SHARED_PTR
|
|
68
|
-
std::string getDbgFile() {
|
|
69
|
-
return file;
|
|
70
|
-
}
|
|
71
|
-
size_t getDbgLine() {
|
|
72
|
-
return line;
|
|
73
|
-
}
|
|
74
|
-
void setDbg(bool dbg) {
|
|
75
|
-
this->dbg = dbg;
|
|
76
|
-
}
|
|
77
|
-
#endif
|
|
78
|
-
static void setTaint(bool val) {
|
|
79
|
-
taint = val;
|
|
80
|
-
}
|
|
81
|
-
virtual ~SharedObj();
|
|
82
|
-
long getRefCount() {
|
|
83
|
-
return refcounter;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
class SharedPtr {
|
|
89
|
-
protected:
|
|
90
|
-
SharedObj* node;
|
|
91
|
-
protected:
|
|
92
|
-
void decRefCount();
|
|
93
|
-
void incRefCount();
|
|
94
|
-
public:
|
|
95
|
-
// the empty constructor
|
|
96
|
-
SharedPtr()
|
|
97
|
-
: node(NULL) {};
|
|
98
|
-
// the create constructor
|
|
99
|
-
SharedPtr(SharedObj* ptr);
|
|
100
|
-
// the copy constructor
|
|
101
|
-
SharedPtr(const SharedPtr& obj);
|
|
102
|
-
// the move constructor
|
|
103
|
-
SharedPtr(SharedPtr&& obj);
|
|
104
|
-
// copy assignment operator
|
|
105
|
-
SharedPtr& operator=(const SharedPtr& obj);
|
|
106
|
-
// move assignment operator
|
|
107
|
-
SharedPtr& operator=(SharedPtr&& obj);
|
|
108
|
-
// pure virtual destructor
|
|
109
|
-
virtual ~SharedPtr() = 0;
|
|
110
|
-
public:
|
|
111
|
-
SharedObj* obj () const {
|
|
112
|
-
return node;
|
|
113
|
-
};
|
|
114
|
-
SharedObj* operator-> () const {
|
|
115
|
-
return node;
|
|
116
|
-
};
|
|
117
|
-
bool isNull () {
|
|
118
|
-
return node == NULL;
|
|
119
|
-
};
|
|
120
|
-
bool isNull () const {
|
|
121
|
-
return node == NULL;
|
|
122
|
-
};
|
|
123
|
-
SharedObj* detach() const {
|
|
124
|
-
if (node) {
|
|
125
|
-
node->detached = true;
|
|
126
|
-
}
|
|
127
|
-
return node;
|
|
128
|
-
};
|
|
129
|
-
operator bool() const {
|
|
130
|
-
return node != NULL;
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
template < class T >
|
|
136
|
-
class SharedImpl : private SharedPtr {
|
|
137
|
-
public:
|
|
138
|
-
SharedImpl()
|
|
139
|
-
: SharedPtr(NULL) {};
|
|
140
|
-
SharedImpl(T* node)
|
|
141
|
-
: SharedPtr(node) {};
|
|
142
|
-
template < class U >
|
|
143
|
-
SharedImpl(SharedImpl<U> obj)
|
|
144
|
-
: SharedPtr(static_cast<T*>(obj.ptr())) {}
|
|
145
|
-
SharedImpl(T&& node)
|
|
146
|
-
: SharedPtr(node) {};
|
|
147
|
-
SharedImpl(const T& node)
|
|
148
|
-
: SharedPtr(node) {};
|
|
149
|
-
// the copy constructor
|
|
150
|
-
SharedImpl(const SharedImpl<T>& impl)
|
|
151
|
-
: SharedPtr(impl.node) {};
|
|
152
|
-
// the move constructor
|
|
153
|
-
SharedImpl(SharedImpl<T>&& impl)
|
|
154
|
-
: SharedPtr(impl.node) {};
|
|
155
|
-
// copy assignment operator
|
|
156
|
-
SharedImpl<T>& operator=(const SharedImpl<T>& rhs) {
|
|
157
|
-
if (node) decRefCount();
|
|
158
|
-
node = rhs.node;
|
|
159
|
-
incRefCount();
|
|
160
|
-
return *this;
|
|
161
|
-
}
|
|
162
|
-
// move assignment operator
|
|
163
|
-
SharedImpl<T>& operator=(SharedImpl<T>&& rhs) {
|
|
164
|
-
// don't move our self
|
|
165
|
-
if (this != &rhs) {
|
|
166
|
-
if (node) decRefCount();
|
|
167
|
-
node = std::move(rhs.node);
|
|
168
|
-
rhs.node = NULL;
|
|
169
|
-
}
|
|
170
|
-
return *this;
|
|
171
|
-
}
|
|
172
|
-
~SharedImpl() {};
|
|
173
|
-
public:
|
|
174
|
-
operator T*() const {
|
|
175
|
-
return static_cast<T*>(this->obj());
|
|
176
|
-
}
|
|
177
|
-
operator T&() const {
|
|
178
|
-
return *static_cast<T*>(this->obj());
|
|
179
|
-
}
|
|
180
|
-
T& operator* () const {
|
|
181
|
-
return *static_cast<T*>(this->obj());
|
|
182
|
-
};
|
|
183
|
-
T* operator-> () const {
|
|
184
|
-
return static_cast<T*>(this->obj());
|
|
185
|
-
};
|
|
186
|
-
T* ptr () const {
|
|
187
|
-
return static_cast<T*>(this->obj());
|
|
188
|
-
};
|
|
189
|
-
T* detach() const {
|
|
190
|
-
if (this->obj() == NULL) return NULL;
|
|
191
|
-
return static_cast<T*>(SharedPtr::detach());
|
|
192
|
-
}
|
|
193
|
-
bool isNull() const {
|
|
194
|
-
return this->obj() == NULL;
|
|
195
|
-
}
|
|
196
|
-
bool operator<(const T& rhs) const {
|
|
197
|
-
return *this->ptr() < rhs;
|
|
198
|
-
};
|
|
199
|
-
operator bool() const {
|
|
200
|
-
return this->obj() != NULL;
|
|
201
|
-
};
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
#endif
|