57 #define GRU_VARIANT_STRING_INITIALIZER(x) { .type = GRU_STRING, .variant.string = (x) }
62 #define GRU_VARIANT_STRING_DEFAULT_INITIALIZER GRU_VARIANT_STRING_INITIALIZER(NULL)
67 #define GRU_VARIANT_INTEGER_INITIALIZER(x) { .type = GRU_INTEGER, .variant.inumber = (x) }
73 #define GRU_VARIANT_INTEGER_DEFAULT_INITIALIZER GRU_VARIANT_INTEGER_INITIALIZER(0)
78 #define GRU_VARIANT_DOUBLE_INITIALIZER(x) { .type = GRU_DOUBLE, .variant.fnumber = (x) }
84 #define GRU_VARIANT_DOUBLE_DEFAULT_INITIALIZER GRU_VARIANT_DOUBLE_INITIALIZER(0.0)
89 #define GRU_VARIANT_BOOLEAN_INITIALIZER(x) { .type = GRU_BOOLEAN, .variant.flag = (x) }
95 #define GRU_VARIANT_BOOLEAN_DEFAULT_INITIALIZER GRU_VARIANT_BOOLEAN_INITIALIZER(false)
#define gru_export
Definition: gru_portable.h:19
gru_variant_type_t_
Definition: gru_variant.h:32
@ GRU_BOOLEAN
Definition: gru_variant.h:36
@ GRU_DOUBLE
Definition: gru_variant.h:35
@ GRU_STRING
Definition: gru_variant.h:33
@ GRU_INTEGER
Definition: gru_variant.h:34
gru_export void gru_variant_set_integer(gru_variant_t *variant, uint64_t number)
Set the variant value to an integer.
Definition: gru_variant.c:34
struct gru_variant_t_ gru_variant_t
An abstract struct that can hold different types.
gru_export bool gru_variant_equals_str(gru_variant_t *variant, const char *str)
Simple equality check to test if the variant value matches a given string.
Definition: gru_variant.c:146
gru_export void gru_variant_clean(gru_variant_t *variant)
Release the memory used by a variant (if any used at all).
Definition: gru_variant.c:39
gru_export bool gru_variant_set_string(gru_variant_t *variant, const char *str)
Set the variant value to a string.
Definition: gru_variant.c:19
enum gru_variant_type_t_ gru_variant_type_t
gru_export gru_variant_t gru_variant_parse(const char *str)
Parses a string and sets it to the most appropriate type.
Definition: gru_variant.c:114
An abstract struct that can hold different types.
Definition: gru_variant.h:43
bool flag
Definition: gru_variant.h:49
union gru_variant_t_::@0 variant
char * string
Definition: gru_variant.h:48
long double fnumber
Definition: gru_variant.h:47
uint64_t inumber
Definition: gru_variant.h:46
gru_variant_type_t type
Definition: gru_variant.h:44