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