functions.hpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #define SASS_FUNCTIONS
  2. #include <string>
  3. #ifndef SASS_ENVIRONMENT
  4. #include "environment.hpp"
  5. #endif
  6. #ifndef SASS_POSITION
  7. #include "position.hpp"
  8. #endif
  9. #include "sass_functions.h"
  10. #define BUILT_IN(name) Expression*\
  11. name(Env& env, Env& d_env, Context& ctx, Signature sig, const string& path, Position position, Backtrace* backtrace)
  12. namespace Sass {
  13. struct Context;
  14. struct Backtrace;
  15. class AST_Node;
  16. class Expression;
  17. class Definition;
  18. typedef Environment<AST_Node*> Env;
  19. typedef const char* Signature;
  20. typedef Expression* (*Native_Function)(Env&, Env&, Context&, Signature, const string&, Position, Backtrace*);
  21. Definition* make_native_function(Signature, Native_Function, Context&);
  22. Definition* make_c_function(Signature sig, Sass_C_Function f, void* cookie, Context& ctx);
  23. namespace Functions {
  24. extern Signature rgb_sig;
  25. extern Signature rgba_4_sig;
  26. extern Signature rgba_2_sig;
  27. extern Signature red_sig;
  28. extern Signature green_sig;
  29. extern Signature blue_sig;
  30. extern Signature mix_sig;
  31. extern Signature hsl_sig;
  32. extern Signature hsla_sig;
  33. extern Signature hue_sig;
  34. extern Signature saturation_sig;
  35. extern Signature lightness_sig;
  36. extern Signature adjust_hue_sig;
  37. extern Signature lighten_sig;
  38. extern Signature darken_sig;
  39. extern Signature saturate_sig;
  40. extern Signature desaturate_sig;
  41. extern Signature grayscale_sig;
  42. extern Signature complement_sig;
  43. extern Signature invert_sig;
  44. extern Signature alpha_sig;
  45. extern Signature opacity_sig;
  46. extern Signature opacify_sig;
  47. extern Signature fade_in_sig;
  48. extern Signature transparentize_sig;
  49. extern Signature fade_out_sig;
  50. extern Signature adjust_color_sig;
  51. extern Signature scale_color_sig;
  52. extern Signature change_color_sig;
  53. extern Signature ie_hex_str_sig;
  54. extern Signature unquote_sig;
  55. extern Signature quote_sig;
  56. extern Signature str_length_sig;
  57. extern Signature str_insert_sig;
  58. extern Signature str_index_sig;
  59. extern Signature str_slice_sig;
  60. extern Signature to_upper_case_sig;
  61. extern Signature to_lower_case_sig;
  62. extern Signature percentage_sig;
  63. extern Signature round_sig;
  64. extern Signature ceil_sig;
  65. extern Signature floor_sig;
  66. extern Signature abs_sig;
  67. extern Signature min_sig;
  68. extern Signature max_sig;
  69. extern Signature inspect_sig;
  70. extern Signature random_sig;
  71. extern Signature length_sig;
  72. extern Signature nth_sig;
  73. extern Signature index_sig;
  74. extern Signature join_sig;
  75. extern Signature append_sig;
  76. extern Signature zip_sig;
  77. extern Signature compact_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 image_url_sig;
  92. extern Signature map_get_sig;
  93. extern Signature map_merge_sig;
  94. extern Signature map_remove_sig;
  95. extern Signature map_keys_sig;
  96. extern Signature map_values_sig;
  97. extern Signature map_has_key_sig;
  98. extern Signature keywords_sig;
  99. extern Signature set_nth_sig;
  100. extern Signature unique_id_sig;
  101. BUILT_IN(rgb);
  102. BUILT_IN(rgba_4);
  103. BUILT_IN(rgba_2);
  104. BUILT_IN(red);
  105. BUILT_IN(green);
  106. BUILT_IN(blue);
  107. BUILT_IN(mix);
  108. BUILT_IN(hsl);
  109. BUILT_IN(hsla);
  110. BUILT_IN(hue);
  111. BUILT_IN(saturation);
  112. BUILT_IN(lightness);
  113. BUILT_IN(adjust_hue);
  114. BUILT_IN(lighten);
  115. BUILT_IN(darken);
  116. BUILT_IN(saturate);
  117. BUILT_IN(desaturate);
  118. BUILT_IN(grayscale);
  119. BUILT_IN(complement);
  120. BUILT_IN(invert);
  121. BUILT_IN(alpha);
  122. BUILT_IN(opacify);
  123. BUILT_IN(transparentize);
  124. BUILT_IN(adjust_color);
  125. BUILT_IN(scale_color);
  126. BUILT_IN(change_color);
  127. BUILT_IN(ie_hex_str);
  128. BUILT_IN(sass_unquote);
  129. BUILT_IN(sass_quote);
  130. BUILT_IN(str_length);
  131. BUILT_IN(str_insert);
  132. BUILT_IN(str_index);
  133. BUILT_IN(str_slice);
  134. BUILT_IN(to_upper_case);
  135. BUILT_IN(to_lower_case);
  136. BUILT_IN(percentage);
  137. BUILT_IN(round);
  138. BUILT_IN(ceil);
  139. BUILT_IN(floor);
  140. BUILT_IN(abs);
  141. BUILT_IN(min);
  142. BUILT_IN(max);
  143. BUILT_IN(inspect);
  144. BUILT_IN(random);
  145. BUILT_IN(length);
  146. BUILT_IN(nth);
  147. BUILT_IN(index);
  148. BUILT_IN(join);
  149. BUILT_IN(append);
  150. BUILT_IN(zip);
  151. BUILT_IN(compact);
  152. BUILT_IN(list_separator);
  153. BUILT_IN(type_of);
  154. BUILT_IN(unit);
  155. BUILT_IN(unitless);
  156. BUILT_IN(comparable);
  157. BUILT_IN(variable_exists);
  158. BUILT_IN(global_variable_exists);
  159. BUILT_IN(function_exists);
  160. BUILT_IN(mixin_exists);
  161. BUILT_IN(feature_exists);
  162. BUILT_IN(call);
  163. BUILT_IN(sass_not);
  164. BUILT_IN(sass_if);
  165. BUILT_IN(image_url);
  166. BUILT_IN(map_get);
  167. BUILT_IN(map_merge);
  168. BUILT_IN(map_remove);
  169. BUILT_IN(map_keys);
  170. BUILT_IN(map_values);
  171. BUILT_IN(map_has_key);
  172. BUILT_IN(keywords);
  173. BUILT_IN(set_nth);
  174. BUILT_IN(unique_id);
  175. }
  176. }