feat: variant now only has double as_number

as opposed to separate numeric types for int, unsigned int, and float
This commit is contained in:
Sara 2024-01-25 00:05:44 +01:00
parent 1d92c6b827
commit c4dc2a8ccc

View file

@ -6,32 +6,25 @@
typedef enum VariantType {
Variant_Undefined = 0x0,
Variant_Float = 0x1,
Variant_Int = 0x2,
Variant_Unsigned = 0x3,
Variant_Vector = 0x4,
Variant_Object = 0x5,
Variant_String = 0x6,
Variant_Number = 0x1,
Variant_Vector = 0x2,
Variant_Object = 0x3,
Variant_String = 0x4,
} VariantType;
typedef struct Variant {
VariantType type;
union {
float as_float;
long as_int;
unsigned as_unsigned;
double as_number;
Vector as_vector;
Mirror as_object;
char* as_string;
};
} Variant;
#define FloatVariant(Value_) (Variant){.type = Variant_Float, .as_float = Value_}
#define IntVariant(Value_) (Variant){.type = Variant_Int, .as_int = Value_}
#define UnsignedVariant(Value_) (Variant){.type = Variant_Unsigned, .as_unsigned = Value_}
#define NumberVariant(Value_) (Variant){.type = Variant_Number, .as_number = Value_}
#define VectorVariant(Value_) (Variant){.type = Variant_Vector, .as_vector = Value_}
#define ObjectVariant(Value_) (Variant){.type = Variant_Object, .as_object = Value_}
#define StringVariant(Value_) (Variant){.type = Variant_String, .as_string = Value_}
#define UndefinedVariant() (Variant){.type = Variant_Undefined }
#endif // !_fencer_variant_h