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:
parent
1d92c6b827
commit
c4dc2a8ccc
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue