ifndef SASS_SASS_VALUES_H define SASS_SASS_VALUES_H

include “sass.h”

struct Sass_Unknown {

enum Sass_Tag tag;

};

struct Sass_Boolean {

enum Sass_Tag tag;
bool          value;

};

struct Sass_Number {

enum Sass_Tag tag;
double        value;
char*         unit;

};

struct Sass_Color {

enum Sass_Tag tag;
double        r;
double        g;
double        b;
double        a;

};

struct Sass_String {

enum Sass_Tag tag;
bool          quoted;
char*         value;

};

struct Sass_List {

enum Sass_Tag       tag;
enum Sass_Separator separator;
bool                is_bracketed;
size_t              length;
// null terminated "array"
union Sass_Value**  values;

};

struct Sass_Map {

enum Sass_Tag        tag;
size_t               length;
struct Sass_MapPair* pairs;

};

struct Sass_Null {

enum Sass_Tag tag;

};

struct Sass_Error {

enum Sass_Tag tag;
char*         message;

};

struct Sass_Warning {

enum Sass_Tag tag;
char*         message;

};

union Sass_Value {

struct Sass_Unknown unknown;
struct Sass_Boolean boolean;
struct Sass_Number  number;
struct Sass_Color   color;
struct Sass_String  string;
struct Sass_List    list;
struct Sass_Map     map;
struct Sass_Null    null;
struct Sass_Error   error;
struct Sass_Warning warning;

};

struct Sass_MapPair {

union Sass_Value* key;
union Sass_Value* value;

};

endif