Initial commit
[yaffs-website] / node_modules / node-sass / src / libsass / include / sass / values.h
1 #ifndef SASS_C_VALUES_H
2 #define SASS_C_VALUES_H
3
4 #include <stddef.h>
5 #include <stdbool.h>
6 #include <sass/base.h>
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12
13 // Forward declaration
14 union Sass_Value;
15
16 // Type for Sass values
17 enum Sass_Tag {
18   SASS_BOOLEAN,
19   SASS_NUMBER,
20   SASS_COLOR,
21   SASS_STRING,
22   SASS_LIST,
23   SASS_MAP,
24   SASS_NULL,
25   SASS_ERROR,
26   SASS_WARNING
27 };
28
29 // Tags for denoting Sass list separators
30 enum Sass_Separator {
31   SASS_COMMA,
32   SASS_SPACE,
33   // only used internally to represent a hash map before evaluation
34   // otherwise we would be too early to check for duplicate keys
35   SASS_HASH
36 };
37
38 // Value Operators
39 enum Sass_OP {
40   AND, OR,                   // logical connectives
41   EQ, NEQ, GT, GTE, LT, LTE, // arithmetic relations
42   ADD, SUB, MUL, DIV, MOD,   // arithmetic functions
43   NUM_OPS                    // so we know how big to make the op table
44 };
45
46 // Creator functions for all value types
47 ADDAPI union Sass_Value* ADDCALL sass_make_null    (void);
48 ADDAPI union Sass_Value* ADDCALL sass_make_boolean (bool val);
49 ADDAPI union Sass_Value* ADDCALL sass_make_string  (const char* val);
50 ADDAPI union Sass_Value* ADDCALL sass_make_qstring (const char* val);
51 ADDAPI union Sass_Value* ADDCALL sass_make_number  (double val, const char* unit);
52 ADDAPI union Sass_Value* ADDCALL sass_make_color   (double r, double g, double b, double a);
53 ADDAPI union Sass_Value* ADDCALL sass_make_list    (size_t len, enum Sass_Separator sep, bool is_bracketed);
54 ADDAPI union Sass_Value* ADDCALL sass_make_map     (size_t len);
55 ADDAPI union Sass_Value* ADDCALL sass_make_error   (const char* msg);
56 ADDAPI union Sass_Value* ADDCALL sass_make_warning (const char* msg);
57
58 // Generic destructor function for all types
59 // Will release memory of all associated Sass_Values
60 // Means we will delete recursively for lists and maps
61 ADDAPI void ADDCALL sass_delete_value (union Sass_Value* val);
62
63 // Make a deep cloned copy of the given sass value
64 ADDAPI union Sass_Value* ADDCALL sass_clone_value (const union Sass_Value* val);
65
66 // Execute an operation for two Sass_Values and return the result as a Sass_Value too
67 ADDAPI union Sass_Value* ADDCALL sass_value_op (enum Sass_OP op, const union Sass_Value* a, const union Sass_Value* b);
68
69 // Stringify a Sass_Values and also return the result as a Sass_Value (of type STRING)
70 ADDAPI union Sass_Value* ADDCALL sass_value_stringify (const union Sass_Value* a, bool compressed, int precision);
71
72 // Return the sass tag for a generic sass value
73 // Check is needed before accessing specific values!
74 ADDAPI enum Sass_Tag ADDCALL sass_value_get_tag (const union Sass_Value* v);
75
76 // Check value to be of a specific type
77 // Can also be used before accessing properties!
78 ADDAPI bool ADDCALL sass_value_is_null (const union Sass_Value* v);
79 ADDAPI bool ADDCALL sass_value_is_number (const union Sass_Value* v);
80 ADDAPI bool ADDCALL sass_value_is_string (const union Sass_Value* v);
81 ADDAPI bool ADDCALL sass_value_is_boolean (const union Sass_Value* v);
82 ADDAPI bool ADDCALL sass_value_is_color (const union Sass_Value* v);
83 ADDAPI bool ADDCALL sass_value_is_list (const union Sass_Value* v);
84 ADDAPI bool ADDCALL sass_value_is_map (const union Sass_Value* v);
85 ADDAPI bool ADDCALL sass_value_is_error (const union Sass_Value* v);
86 ADDAPI bool ADDCALL sass_value_is_warning (const union Sass_Value* v);
87
88 // Getters and setters for Sass_Number
89 ADDAPI double ADDCALL sass_number_get_value (const union Sass_Value* v);
90 ADDAPI void ADDCALL sass_number_set_value (union Sass_Value* v, double value);
91 ADDAPI const char* ADDCALL sass_number_get_unit (const union Sass_Value* v);
92 ADDAPI void ADDCALL sass_number_set_unit (union Sass_Value* v, char* unit);
93
94 // Getters and setters for Sass_String
95 ADDAPI const char* ADDCALL sass_string_get_value (const union Sass_Value* v);
96 ADDAPI void ADDCALL sass_string_set_value (union Sass_Value* v, char* value);
97 ADDAPI bool ADDCALL sass_string_is_quoted(const union Sass_Value* v);
98 ADDAPI void ADDCALL sass_string_set_quoted(union Sass_Value* v, bool quoted);
99
100 // Getters and setters for Sass_Boolean
101 ADDAPI bool ADDCALL sass_boolean_get_value (const union Sass_Value* v);
102 ADDAPI void ADDCALL sass_boolean_set_value (union Sass_Value* v, bool value);
103
104 // Getters and setters for Sass_Color
105 ADDAPI double ADDCALL sass_color_get_r (const union Sass_Value* v);
106 ADDAPI void ADDCALL sass_color_set_r (union Sass_Value* v, double r);
107 ADDAPI double ADDCALL sass_color_get_g (const union Sass_Value* v);
108 ADDAPI void ADDCALL sass_color_set_g (union Sass_Value* v, double g);
109 ADDAPI double ADDCALL sass_color_get_b (const union Sass_Value* v);
110 ADDAPI void ADDCALL sass_color_set_b (union Sass_Value* v, double b);
111 ADDAPI double ADDCALL sass_color_get_a (const union Sass_Value* v);
112 ADDAPI void ADDCALL sass_color_set_a (union Sass_Value* v, double a);
113
114 // Getter for the number of items in list
115 ADDAPI size_t ADDCALL sass_list_get_length (const union Sass_Value* v);
116 // Getters and setters for Sass_List
117 ADDAPI enum Sass_Separator ADDCALL sass_list_get_separator (const union Sass_Value* v);
118 ADDAPI void ADDCALL sass_list_set_separator (union Sass_Value* v, enum Sass_Separator value);
119 ADDAPI bool ADDCALL sass_list_get_is_bracketed (const union Sass_Value* v);
120 ADDAPI void ADDCALL sass_list_set_is_bracketed (union Sass_Value* v, bool value);
121 // Getters and setters for Sass_List values
122 ADDAPI union Sass_Value* ADDCALL sass_list_get_value (const union Sass_Value* v, size_t i);
123 ADDAPI void ADDCALL sass_list_set_value (union Sass_Value* v, size_t i, union Sass_Value* value);
124
125 // Getter for the number of items in map
126 ADDAPI size_t ADDCALL sass_map_get_length (const union Sass_Value* v);
127 // Getters and setters for Sass_Map keys and values
128 ADDAPI union Sass_Value* ADDCALL sass_map_get_key (const union Sass_Value* v, size_t i);
129 ADDAPI void ADDCALL sass_map_set_key (union Sass_Value* v, size_t i, union Sass_Value*);
130 ADDAPI union Sass_Value* ADDCALL sass_map_get_value (const union Sass_Value* v, size_t i);
131 ADDAPI void ADDCALL sass_map_set_value (union Sass_Value* v, size_t i, union Sass_Value*);
132
133 // Getters and setters for Sass_Error
134 ADDAPI char* ADDCALL sass_error_get_message (const union Sass_Value* v);
135 ADDAPI void ADDCALL sass_error_set_message (union Sass_Value* v, char* msg);
136
137 // Getters and setters for Sass_Warning
138 ADDAPI char* ADDCALL sass_warning_get_message (const union Sass_Value* v);
139 ADDAPI void ADDCALL sass_warning_set_message (union Sass_Value* v, char* msg);
140
141 #ifdef __cplusplus
142 } // __cplusplus defined.
143 #endif
144
145 #endif