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.
Files changed (260) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.gitmodules +1 -1
  4. data/.travis.yml +9 -3
  5. data/CHANGELOG.md +36 -0
  6. data/CODE_OF_CONDUCT.md +1 -1
  7. data/README.md +1 -1
  8. data/Rakefile +43 -7
  9. data/ext/depend +4 -0
  10. data/ext/extconf.rb +92 -0
  11. data/ext/libsass/VERSION +1 -0
  12. data/ext/libsass/include/sass/base.h +9 -1
  13. data/ext/libsass/include/sass/context.h +5 -1
  14. data/ext/libsass/src/MurmurHash2.hpp +91 -0
  15. data/ext/libsass/src/ast.cpp +755 -2028
  16. data/ext/libsass/src/ast.hpp +492 -2477
  17. data/ext/libsass/src/{to_c.cpp → ast2c.cpp} +22 -16
  18. data/ext/libsass/src/ast2c.hpp +39 -0
  19. data/ext/libsass/src/ast_def_macros.hpp +70 -10
  20. data/ext/libsass/src/ast_fwd_decl.cpp +5 -3
  21. data/ext/libsass/src/ast_fwd_decl.hpp +107 -296
  22. data/ext/libsass/src/ast_helpers.hpp +292 -0
  23. data/ext/libsass/src/ast_sel_cmp.cpp +396 -0
  24. data/ext/libsass/src/ast_sel_super.cpp +539 -0
  25. data/ext/libsass/src/ast_sel_unify.cpp +275 -0
  26. data/ext/libsass/src/ast_sel_weave.cpp +616 -0
  27. data/ext/libsass/src/ast_selectors.cpp +1043 -0
  28. data/ext/libsass/src/ast_selectors.hpp +522 -0
  29. data/ext/libsass/src/ast_supports.cpp +114 -0
  30. data/ext/libsass/src/ast_supports.hpp +121 -0
  31. data/ext/libsass/src/ast_values.cpp +1154 -0
  32. data/ext/libsass/src/ast_values.hpp +498 -0
  33. data/ext/libsass/src/backtrace.cpp +11 -7
  34. data/ext/libsass/src/backtrace.hpp +5 -5
  35. data/ext/libsass/src/base64vlq.cpp +5 -2
  36. data/ext/libsass/src/base64vlq.hpp +1 -1
  37. data/ext/libsass/src/bind.cpp +35 -34
  38. data/ext/libsass/src/bind.hpp +3 -1
  39. data/ext/libsass/src/c2ast.cpp +64 -0
  40. data/ext/libsass/src/c2ast.hpp +14 -0
  41. data/ext/libsass/src/cencode.c +4 -6
  42. data/ext/libsass/src/check_nesting.cpp +83 -88
  43. data/ext/libsass/src/check_nesting.hpp +39 -34
  44. data/ext/libsass/src/color_maps.cpp +168 -164
  45. data/ext/libsass/src/color_maps.hpp +152 -160
  46. data/ext/libsass/src/constants.cpp +20 -0
  47. data/ext/libsass/src/constants.hpp +19 -0
  48. data/ext/libsass/src/context.cpp +104 -121
  49. data/ext/libsass/src/context.hpp +43 -55
  50. data/ext/libsass/src/cssize.cpp +103 -188
  51. data/ext/libsass/src/cssize.hpp +45 -51
  52. data/ext/libsass/src/dart_helpers.hpp +199 -0
  53. data/ext/libsass/src/debugger.hpp +524 -361
  54. data/ext/libsass/src/emitter.cpp +26 -26
  55. data/ext/libsass/src/emitter.hpp +20 -18
  56. data/ext/libsass/src/environment.cpp +41 -27
  57. data/ext/libsass/src/environment.hpp +33 -22
  58. data/ext/libsass/src/error_handling.cpp +92 -94
  59. data/ext/libsass/src/error_handling.hpp +73 -50
  60. data/ext/libsass/src/eval.cpp +380 -515
  61. data/ext/libsass/src/eval.hpp +64 -57
  62. data/ext/libsass/src/eval_selectors.cpp +75 -0
  63. data/ext/libsass/src/expand.cpp +322 -263
  64. data/ext/libsass/src/expand.hpp +55 -39
  65. data/ext/libsass/src/extender.cpp +1188 -0
  66. data/ext/libsass/src/extender.hpp +399 -0
  67. data/ext/libsass/src/extension.cpp +43 -0
  68. data/ext/libsass/src/extension.hpp +89 -0
  69. data/ext/libsass/src/file.cpp +134 -88
  70. data/ext/libsass/src/file.hpp +28 -37
  71. data/ext/libsass/src/fn_colors.cpp +596 -0
  72. data/ext/libsass/src/fn_colors.hpp +85 -0
  73. data/ext/libsass/src/fn_lists.cpp +285 -0
  74. data/ext/libsass/src/fn_lists.hpp +34 -0
  75. data/ext/libsass/src/fn_maps.cpp +94 -0
  76. data/ext/libsass/src/fn_maps.hpp +30 -0
  77. data/ext/libsass/src/fn_miscs.cpp +244 -0
  78. data/ext/libsass/src/fn_miscs.hpp +40 -0
  79. data/ext/libsass/src/fn_numbers.cpp +227 -0
  80. data/ext/libsass/src/fn_numbers.hpp +45 -0
  81. data/ext/libsass/src/fn_selectors.cpp +205 -0
  82. data/ext/libsass/src/fn_selectors.hpp +35 -0
  83. data/ext/libsass/src/fn_strings.cpp +268 -0
  84. data/ext/libsass/src/fn_strings.hpp +34 -0
  85. data/ext/libsass/src/fn_utils.cpp +158 -0
  86. data/ext/libsass/src/fn_utils.hpp +62 -0
  87. data/ext/libsass/src/inspect.cpp +253 -266
  88. data/ext/libsass/src/inspect.hpp +72 -74
  89. data/ext/libsass/src/json.cpp +2 -2
  90. data/ext/libsass/src/lexer.cpp +25 -84
  91. data/ext/libsass/src/lexer.hpp +5 -16
  92. data/ext/libsass/src/listize.cpp +27 -43
  93. data/ext/libsass/src/listize.hpp +14 -11
  94. data/ext/libsass/src/mapping.hpp +1 -0
  95. data/ext/libsass/src/memory.hpp +12 -0
  96. data/ext/libsass/src/memory/allocator.cpp +48 -0
  97. data/ext/libsass/src/memory/allocator.hpp +138 -0
  98. data/ext/libsass/src/memory/config.hpp +20 -0
  99. data/ext/libsass/src/memory/memory_pool.hpp +186 -0
  100. data/ext/libsass/src/memory/shared_ptr.cpp +33 -0
  101. data/ext/libsass/src/memory/shared_ptr.hpp +332 -0
  102. data/ext/libsass/src/operation.hpp +193 -143
  103. data/ext/libsass/src/operators.cpp +56 -29
  104. data/ext/libsass/src/operators.hpp +11 -11
  105. data/ext/libsass/src/ordered_map.hpp +112 -0
  106. data/ext/libsass/src/output.cpp +59 -75
  107. data/ext/libsass/src/output.hpp +15 -22
  108. data/ext/libsass/src/parser.cpp +662 -818
  109. data/ext/libsass/src/parser.hpp +96 -100
  110. data/ext/libsass/src/parser_selectors.cpp +189 -0
  111. data/ext/libsass/src/permutate.hpp +164 -0
  112. data/ext/libsass/src/plugins.cpp +12 -8
  113. data/ext/libsass/src/plugins.hpp +8 -8
  114. data/ext/libsass/src/position.cpp +10 -26
  115. data/ext/libsass/src/position.hpp +44 -21
  116. data/ext/libsass/src/prelexer.cpp +14 -8
  117. data/ext/libsass/src/prelexer.hpp +9 -9
  118. data/ext/libsass/src/remove_placeholders.cpp +59 -57
  119. data/ext/libsass/src/remove_placeholders.hpp +20 -18
  120. data/ext/libsass/src/sass.cpp +25 -18
  121. data/ext/libsass/src/sass.hpp +22 -14
  122. data/ext/libsass/src/sass2scss.cpp +49 -18
  123. data/ext/libsass/src/sass_context.cpp +104 -132
  124. data/ext/libsass/src/sass_context.hpp +2 -2
  125. data/ext/libsass/src/sass_functions.cpp +7 -4
  126. data/ext/libsass/src/sass_functions.hpp +1 -1
  127. data/ext/libsass/src/sass_values.cpp +26 -21
  128. data/ext/libsass/src/settings.hpp +19 -0
  129. data/ext/libsass/src/source.cpp +69 -0
  130. data/ext/libsass/src/source.hpp +95 -0
  131. data/ext/libsass/src/source_data.hpp +32 -0
  132. data/ext/libsass/src/source_map.cpp +27 -20
  133. data/ext/libsass/src/source_map.hpp +14 -11
  134. data/ext/libsass/src/stylesheet.cpp +22 -0
  135. data/ext/libsass/src/stylesheet.hpp +57 -0
  136. data/ext/libsass/src/to_value.cpp +24 -22
  137. data/ext/libsass/src/to_value.hpp +18 -22
  138. data/ext/libsass/src/units.cpp +28 -22
  139. data/ext/libsass/src/units.hpp +9 -8
  140. data/ext/libsass/src/utf8/checked.h +12 -10
  141. data/ext/libsass/src/utf8/core.h +3 -0
  142. data/ext/libsass/src/utf8_string.cpp +12 -10
  143. data/ext/libsass/src/utf8_string.hpp +7 -6
  144. data/ext/libsass/src/util.cpp +97 -107
  145. data/ext/libsass/src/util.hpp +74 -30
  146. data/ext/libsass/src/util_string.cpp +125 -0
  147. data/ext/libsass/src/util_string.hpp +73 -0
  148. data/ext/libsass/src/values.cpp +33 -24
  149. data/ext/libsass/src/values.hpp +2 -2
  150. data/lib/sassc.rb +24 -0
  151. data/lib/sassc/engine.rb +7 -5
  152. data/lib/sassc/functions_handler.rb +11 -13
  153. data/lib/sassc/native.rb +10 -9
  154. data/lib/sassc/native/native_functions_api.rb +0 -5
  155. data/lib/sassc/script.rb +4 -6
  156. data/lib/sassc/version.rb +1 -1
  157. data/sassc.gemspec +32 -12
  158. data/test/engine_test.rb +32 -2
  159. data/test/functions_test.rb +38 -1
  160. data/test/native_test.rb +4 -4
  161. metadata +95 -109
  162. data/ext/Rakefile +0 -3
  163. data/ext/libsass/.editorconfig +0 -15
  164. data/ext/libsass/.gitattributes +0 -2
  165. data/ext/libsass/.github/CONTRIBUTING.md +0 -65
  166. data/ext/libsass/.github/ISSUE_TEMPLATE.md +0 -54
  167. data/ext/libsass/.gitignore +0 -85
  168. data/ext/libsass/.travis.yml +0 -64
  169. data/ext/libsass/COPYING +0 -25
  170. data/ext/libsass/GNUmakefile.am +0 -88
  171. data/ext/libsass/INSTALL +0 -1
  172. data/ext/libsass/LICENSE +0 -25
  173. data/ext/libsass/Makefile +0 -351
  174. data/ext/libsass/Makefile.conf +0 -55
  175. data/ext/libsass/Readme.md +0 -104
  176. data/ext/libsass/SECURITY.md +0 -10
  177. data/ext/libsass/appveyor.yml +0 -91
  178. data/ext/libsass/configure.ac +0 -138
  179. data/ext/libsass/contrib/libsass.spec +0 -66
  180. data/ext/libsass/docs/README.md +0 -20
  181. data/ext/libsass/docs/api-context-example.md +0 -45
  182. data/ext/libsass/docs/api-context-internal.md +0 -163
  183. data/ext/libsass/docs/api-context.md +0 -295
  184. data/ext/libsass/docs/api-doc.md +0 -215
  185. data/ext/libsass/docs/api-function-example.md +0 -67
  186. data/ext/libsass/docs/api-function-internal.md +0 -8
  187. data/ext/libsass/docs/api-function.md +0 -74
  188. data/ext/libsass/docs/api-importer-example.md +0 -112
  189. data/ext/libsass/docs/api-importer-internal.md +0 -20
  190. data/ext/libsass/docs/api-importer.md +0 -86
  191. data/ext/libsass/docs/api-value-example.md +0 -55
  192. data/ext/libsass/docs/api-value-internal.md +0 -76
  193. data/ext/libsass/docs/api-value.md +0 -154
  194. data/ext/libsass/docs/build-on-darwin.md +0 -27
  195. data/ext/libsass/docs/build-on-gentoo.md +0 -55
  196. data/ext/libsass/docs/build-on-windows.md +0 -139
  197. data/ext/libsass/docs/build-shared-library.md +0 -35
  198. data/ext/libsass/docs/build-with-autotools.md +0 -78
  199. data/ext/libsass/docs/build-with-makefiles.md +0 -68
  200. data/ext/libsass/docs/build-with-mingw.md +0 -107
  201. data/ext/libsass/docs/build-with-visual-studio.md +0 -90
  202. data/ext/libsass/docs/build.md +0 -97
  203. data/ext/libsass/docs/compatibility-plan.md +0 -48
  204. data/ext/libsass/docs/contributing.md +0 -17
  205. data/ext/libsass/docs/custom-functions-internal.md +0 -122
  206. data/ext/libsass/docs/dev-ast-memory.md +0 -223
  207. data/ext/libsass/docs/implementations.md +0 -56
  208. data/ext/libsass/docs/plugins.md +0 -47
  209. data/ext/libsass/docs/setup-environment.md +0 -68
  210. data/ext/libsass/docs/source-map-internals.md +0 -51
  211. data/ext/libsass/docs/trace.md +0 -26
  212. data/ext/libsass/docs/triage.md +0 -17
  213. data/ext/libsass/docs/unicode.md +0 -39
  214. data/ext/libsass/extconf.rb +0 -6
  215. data/ext/libsass/include/sass/version.h.in +0 -12
  216. data/ext/libsass/m4/.gitkeep +0 -0
  217. data/ext/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 +0 -167
  218. data/ext/libsass/res/resource.rc +0 -35
  219. data/ext/libsass/script/bootstrap +0 -13
  220. data/ext/libsass/script/branding +0 -10
  221. data/ext/libsass/script/ci-build-libsass +0 -134
  222. data/ext/libsass/script/ci-build-plugin +0 -62
  223. data/ext/libsass/script/ci-install-compiler +0 -6
  224. data/ext/libsass/script/ci-install-deps +0 -20
  225. data/ext/libsass/script/ci-report-coverage +0 -42
  226. data/ext/libsass/script/spec +0 -5
  227. data/ext/libsass/script/tap-driver +0 -652
  228. data/ext/libsass/script/tap-runner +0 -1
  229. data/ext/libsass/script/test-leaks.pl +0 -103
  230. data/ext/libsass/src/GNUmakefile.am +0 -54
  231. data/ext/libsass/src/extend.cpp +0 -2130
  232. data/ext/libsass/src/extend.hpp +0 -86
  233. data/ext/libsass/src/functions.cpp +0 -2234
  234. data/ext/libsass/src/functions.hpp +0 -198
  235. data/ext/libsass/src/memory/SharedPtr.cpp +0 -114
  236. data/ext/libsass/src/memory/SharedPtr.hpp +0 -206
  237. data/ext/libsass/src/node.cpp +0 -319
  238. data/ext/libsass/src/node.hpp +0 -118
  239. data/ext/libsass/src/paths.hpp +0 -71
  240. data/ext/libsass/src/sass_util.cpp +0 -149
  241. data/ext/libsass/src/sass_util.hpp +0 -256
  242. data/ext/libsass/src/subset_map.cpp +0 -55
  243. data/ext/libsass/src/subset_map.hpp +0 -76
  244. data/ext/libsass/src/support/libsass.pc.in +0 -11
  245. data/ext/libsass/src/to_c.hpp +0 -39
  246. data/ext/libsass/test/test_node.cpp +0 -94
  247. data/ext/libsass/test/test_paths.cpp +0 -28
  248. data/ext/libsass/test/test_selector_difference.cpp +0 -25
  249. data/ext/libsass/test/test_specificity.cpp +0 -25
  250. data/ext/libsass/test/test_subset_map.cpp +0 -472
  251. data/ext/libsass/test/test_superselector.cpp +0 -69
  252. data/ext/libsass/test/test_unification.cpp +0 -31
  253. data/ext/libsass/version.sh +0 -10
  254. data/ext/libsass/win/libsass.sln +0 -39
  255. data/ext/libsass/win/libsass.sln.DotSettings +0 -9
  256. data/ext/libsass/win/libsass.targets +0 -118
  257. data/ext/libsass/win/libsass.vcxproj +0 -188
  258. data/ext/libsass/win/libsass.vcxproj.filters +0 -357
  259. data/lib/sassc/native/lib_c.rb +0 -21
  260. 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