1 #ifndef SASS_FUNCTIONS_H
2 #define SASS_FUNCTIONS_H
5 #include "position.hpp"
6 #include "environment.hpp"
7 #include "ast_fwd_decl.hpp"
8 #include "sass/functions.h"
10 #define BUILT_IN(name) Expression_Ptr \
11 name(Env& env, Env& d_env, Context& ctx, Signature sig, ParserState pstate, Backtrace* backtrace, std::vector<Selector_List_Obj> selector_stack)
15 typedef const char* Signature;
16 typedef Expression_Ptr (*Native_Function)(Env&, Env&, Context&, Signature, ParserState, Backtrace*, std::vector<Selector_List_Obj>);
18 Definition_Ptr make_native_function(Signature, Native_Function, Context& ctx);
19 Definition_Ptr make_c_function(Sass_Function_Entry c_func, Context& ctx);
21 std::string function_name(Signature);
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;
120 BUILT_IN(saturation);
122 BUILT_IN(adjust_hue);
126 BUILT_IN(desaturate);
128 BUILT_IN(complement);
132 BUILT_IN(transparentize);
133 BUILT_IN(adjust_color);
134 BUILT_IN(scale_color);
135 BUILT_IN(change_color);
136 BUILT_IN(ie_hex_str);
137 BUILT_IN(sass_unquote);
138 BUILT_IN(sass_quote);
139 BUILT_IN(str_length);
140 BUILT_IN(str_insert);
143 BUILT_IN(to_upper_case);
144 BUILT_IN(to_lower_case);
145 BUILT_IN(percentage);
160 BUILT_IN(list_separator);
164 BUILT_IN(comparable);
165 BUILT_IN(variable_exists);
166 BUILT_IN(global_variable_exists);
167 BUILT_IN(function_exists);
168 BUILT_IN(mixin_exists);
169 BUILT_IN(feature_exists);
175 BUILT_IN(map_remove);
177 BUILT_IN(map_values);
178 BUILT_IN(map_has_key);
182 BUILT_IN(selector_nest);
183 BUILT_IN(selector_append);
184 BUILT_IN(selector_extend);
185 BUILT_IN(selector_replace);
186 BUILT_IN(selector_unify);
187 BUILT_IN(is_superselector);
188 BUILT_IN(simple_selectors);
189 BUILT_IN(selector_parse);
190 BUILT_IN(is_bracketed);