feat: added Variant type for use in serialization

This commit is contained in:
Sara 2024-01-24 16:56:31 +01:00
parent 2d2d0bb7ca
commit fc5deef324

37
core/src/variant.h Normal file
View file

@ -0,0 +1,37 @@
#ifndef _fencer_variant_h
#define _fencer_variant_h
#include "vmath.h"
#include "mirror.h"
typedef enum VariantType {
Variant_Undefined = 0x0,
Variant_Float = 0x1,
Variant_Int = 0x2,
Variant_Unsigned = 0x3,
Variant_Vector = 0x4,
Variant_Object = 0x5,
Variant_String = 0x6,
} VariantType;
typedef struct Variant {
VariantType type;
union {
float as_float;
long as_int;
unsigned as_unsigned;
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 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