9 #define C_TYPE_FIELD(T) T##_value 10 #define C_TYPE_FIELD_DEF(T) T T##_value; 11 #define C_TYPE_FIELD_DEF2(T, F) T F; 13 #define getset(NAME, C_TYPE, CFE_TYPE) getset2(NAME, C_TYPE, C_TYPE_FIELD(C_TYPE), CFE_TYPE) 14 #define getset2(NAME, C_TYPE, FIELD, CFE_TYPE) \ 15 uint8_t cfe_value_set_##NAME (cfe_value_t *v, C_TYPE value) \ 19 v->value.FIELD = value; \ 22 uint8_t cfe_value_get_##NAME (const cfe_value_t *v, C_TYPE *value) \ 24 if(!cfe_value_check_type(v, CFE_TYPE)) return 0; \ 25 *value = (C_TYPE)v->value.FIELD; \ 52 static void cfe_value_empty(cfe_value_t *v);
56 cfe_value_t *value = malloc(
sizeof(
struct _cfe_value));
94 *value = v->value.str;
102 v->value.str = strdup(value);
140 v->value.pointer = NULL;
156 return (v->type == type);
164 static void cfe_value_empty(cfe_value_t *v)
uint8_t cfe_value_get_string(const cfe_value_t *v, char **value)
#define getset2(NAME, C_TYPE, FIELD, CFE_TYPE)
uint8_t cfe_value_check_type(const cfe_value_t *v, cfe_value_type_t type)
uint8_t cfe_value_is_null(const cfe_value_t *v)
union _cfe_value::@0 value
#define C_TYPE_FIELD_DEF(T)
enum cfe_value_type cfe_value_type_t
#define getset(NAME, C_TYPE, CFE_TYPE)
uint8_t cfe_value_set_null(cfe_value_t *v)
uint8_t cfe_value_is_nil(const cfe_value_t *v)
uint8_t cfe_value_set_string(cfe_value_t *v, char *value)
cfe_value_type_t cfe_value_get_type(const cfe_value_t *v)
void cfe_value_free(cfe_value_t *v)
cfe_value_t * cfe_value_new(void)
#define C_TYPE_FIELD_DEF2(T, F)