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