1 #ifndef SASS_SASS_VALUES_H 2 #define SASS_SASS_VALUES_H 3 4 #include "sass.h" 5 6 struct Sass_Unknown { 7 enum Sass_Tag tag; 8 }; 9 10 struct Sass_Boolean { 11 enum Sass_Tag tag; 12 bool value; 13 }; 14 15 struct Sass_Number { 16 enum Sass_Tag tag; 17 double value; 18 char* unit; 19 }; 20 21 struct Sass_Color { 22 enum Sass_Tag tag; 23 double r; 24 double g; 25 double b; 26 double a; 27 }; 28 29 struct Sass_String { 30 enum Sass_Tag tag; 31 bool quoted; 32 char* value; 33 }; 34 35 struct Sass_List { 36 enum Sass_Tag tag; 37 enum Sass_Separator separator; 38 bool is_bracketed; 39 size_t length; 40 // null terminated "array" 41 union Sass_Value** values; 42 }; 43 44 struct Sass_Map { 45 enum Sass_Tag tag; 46 size_t length; 47 struct Sass_MapPair* pairs; 48 }; 49 50 struct Sass_Null { 51 enum Sass_Tag tag; 52 }; 53 54 struct Sass_Error { 55 enum Sass_Tag tag; 56 char* message; 57 }; 58 59 struct Sass_Warning { 60 enum Sass_Tag tag; 61 char* message; 62 }; 63 64 union Sass_Value { 65 struct Sass_Unknown unknown; 66 struct Sass_Boolean boolean; 67 struct Sass_Number number; 68 struct Sass_Color color; 69 struct Sass_String string; 70 struct Sass_List list; 71 struct Sass_Map map; 72 struct Sass_Null null; 73 struct Sass_Error error; 74 struct Sass_Warning warning; 75 }; 76 77 struct Sass_MapPair { 78 union Sass_Value* key; 79 union Sass_Value* value; 80 }; 81 82 #endif 83