121 dest->
data.ui32 = src->
data.ui32 >> 1;
136 if(var1->
data.ui32 < var2->
data.ui32) {
138 }
else if(var1->
data.ui32 > var2->
data.ui32) {
148 UNUSED int*
const result) {
178 if(convfn[dest->
type_id] != NULL) {
179 retval = convfn[dest->
type_id](dest, src);
189 const char*
const key,
191 if(strcmp(key,
"valid") != 0) {
207 UNUSED const char*
const key,
209 if(strcmp(key,
"valid") != 0) {
220 if((index > 5) && (index != UINT32_MAX)) {
236 UNUSED const int64_t index,
238 if((index > 5) && (index != UINT32_MAX)) {
280 .convert_from = NULL,
298 assert_ptr_not_equal(
var, NULL);
300 assert_ptr_equal(
var->
data.data, NULL);
320 assert_ptr_equal(
var.
data.data, NULL);
344 assert_int_equal(
var.
data.data, NULL);
348 assert_int_equal(
var.
data.data, NULL);
352 assert_int_equal(
var.
data.data, NULL);
356 assert_int_equal(
var.
data.data, NULL);
374 var1.
data.ui32 = 100;
378 assert_int_equal(var2.
data.ui32, 0);
385 assert_int_equal(var2.
type_id, 0);
386 assert_int_equal(var2.
data.ui32, 100);
393 var1.
data.ui32 = 100;
413 var1.
data.ui32 = 100;
420 var1.
data.ui32 = 100;
422 var2.
data.ui32 = 999;
425 assert_int_equal(var2.
type_id, 0);
426 assert_ptr_equal(var2.
data.ui32, 50);
427 var2.
data.ui32 = 999;
430 assert_int_equal(var2.
type_id, 0);
431 assert_ptr_equal(var2.
data.data, NULL);
434 assert_int_equal(var2.
type_id, 0);
435 assert_ptr_equal(var2.
data.data, NULL);
438 var1.
data.ui32 = 100;
441 assert_int_equal(var2.
type_id, 0);
442 assert_ptr_equal(var2.
data.data, NULL);
446 var1.
data.ui32 = 100;
447 var2.
data.ui32 = 500;
450 assert_int_equal(var1.
data.ui32, 250);
475 assert_int_equal(result, 0);
477 assert_int_equal(result, 1);
479 assert_int_equal(result, -1);
481 assert_int_equal(result, 0);
483 var1.
data.ui32 = 100;
484 var2.
data.ui32 = 100;
486 assert_int_equal(result, 0);
489 assert_int_equal(result, 1);
490 var2.
data.ui32 = 200;
492 assert_int_equal(result, -1);
498 var1.
data.ui32 = 100;
499 var2.
data.ui32 = 100;
501 assert_int_equal(result, 1);
502 var1.
data.ui32 = 100;
503 var2.
data.ui32 = 100;
504 var3.
data.ui32 = 100;
508 assert_int_equal(result, -1);
510 assert_int_equal(result, 0);
555 assert_ptr_equal(subvar, &
test_var);
557 assert_ptr_not_equal(subvar, NULL);
558 assert_ptr_not_equal(subvar, &
test_var);
562 assert_ptr_equal(subvar, NULL);
579 assert_ptr_not_equal(subvar, NULL);
580 assert_ptr_not_equal(subvar, &
test_var);
607 assert_ptr_not_equal(subvar, NULL);
608 assert_ptr_not_equal(subvar, &
test_var);
633 assert_ptr_not_equal(subvar, NULL);
634 assert_ptr_equal(subvar, &
test_var);
637 assert_ptr_not_equal(subvar, NULL);
638 assert_ptr_equal(subvar, &
test_var);
641 assert_ptr_not_equal(subvar, NULL);
642 assert_ptr_equal(subvar, &
test_var);
645 assert_ptr_equal(subvar, NULL);
647 assert_ptr_equal(subvar, NULL);
650 assert_ptr_equal(subvar, NULL);
652 assert_ptr_equal(subvar, NULL);
655 assert_ptr_not_equal(subvar, NULL);
656 assert_ptr_not_equal(subvar, &
test_var);
660 assert_ptr_equal(subvar, NULL);
662 assert_ptr_equal(subvar, NULL);
664 assert_ptr_equal(subvar, NULL);
666 assert_ptr_not_equal(subvar, NULL);
669 assert_ptr_equal(subvar, NULL);
671 assert_ptr_equal(subvar, NULL);
704 assert_int_equal(source.
length, 0);
706 assert_ptr_equal(source.
buffer, NULL);
710 assert_ptr_not_equal(
string, NULL);
711 assert_int_not_equal(string->
length, 0);
712 assert_int_not_equal(string->
last_used, 0);
713 assert_ptr_not_equal(string->
buffer, NULL);
717 assert_ptr_equal(var1.
data.s, NULL);
719 assert_ptr_equal(
string, NULL);
Ambiorix variant API header file.
int PRIVATE amxc_var_default_convert_to_null(amxc_var_t *const dest, const amxc_var_t *const src)
int PRIVATE amxc_var_default_move(amxc_var_t *const dest, amxc_var_t *const src)
uint32_t PRIVATE amxc_var_add_type(amxc_var_type_t *const type, const uint32_t index)
int PRIVATE amxc_var_default_convert_to_htable(amxc_var_t *const dest, const amxc_var_t *const src)
int PRIVATE amxc_var_default_copy(amxc_var_t *const dest, const amxc_var_t *const src)
int PRIVATE amxc_var_remove_type(amxc_var_type_t *const type)
int PRIVATE amxc_var_default_convert_to_list(amxc_var_t *const dest, const amxc_var_t *const src)
#define amxc_htable_it_get_data(it, type, member)
Gets the data pointer from an hash table iterator.
#define amxc_llist_it_get_data(it, type, member)
Gets the data pointer from a linked list iterator.
void amxc_string_delete(amxc_string_t **string)
Frees the previously allocated string.
AMXC_INLINE int amxc_string_append(amxc_string_t *const string, const char *const text, const size_t length)
Appends text to the end of the current content of the string buffer.
int amxc_string_init(amxc_string_t *const string, const size_t length)
Initializes a string.
void amxc_string_clean(amxc_string_t *const string)
Frees the string buffer and reset length attributes.
#define AMXC_VAR_FLAG_DEFAULT
The default flag, do not copy, use variant as is.
#define AMXC_VAR_FLAG_COPY
Copy the variant, creates a new variant, leaves the source variant untouched.
#define AMXC_VAR_FLAG_AUTO_ADD
Add none existing variants to composite variants. This flag can be used with amxc_var_set_path and am...
amxc_string_t * amxc_var_take_amxc_string_t(amxc_var_t *const var)
Takes a value from a variant.
int amxc_var_push_amxc_string_t(amxc_var_t *const var, amxc_string_t *val)
Pushes a value in a variant.
#define AMXC_VAR_ID_INVALID
Invalid variant type id.
#define AMXC_VAR_ID_UINT32
Unsigned 32 bit integer variant id.
#define AMXC_VAR_ID_CUSTOM_BASE
Base variant id for custom variants.
#define AMXC_VAR_ID_NULL
Null variant type id (aka void)
#define AMXC_VAR_ID_CSTRING
C-string variant id (aka char *), null terminated string.
#define AMXC_VAR_ID_UINT16
Unsigned 16 bit integer variant id.
int(* amxc_var_convert_fn_t)(amxc_var_t *const dest, const amxc_var_t *const src)
Variant type callback function prototype for dynamically converting one type to another.
int amxc_var_move(amxc_var_t *const dest, amxc_var_t *const src)
Moves the type and data from one variant (source) in another variant (destination).
uint32_t amxc_var_type_of(const amxc_var_t *const var)
Gets the variant type id of a variant.
amxc_var_t * amxc_var_get_pathf(const amxc_var_t *const var, const int flags, const char *const fmt,...) __attribute__((format(printf
Retrieves the variant at the given path of a composite variant.
AMXC_INLINE bool amxc_var_is_null(const amxc_var_t *const var)
Checks if the given variant is of the "null" type.
int amxc_var_set_type(amxc_var_t *const var, const uint32_t type)
Change the variant data type.
amxc_var_t * amxc_var_get_path(const amxc_var_t *const var, const char *const path, const int flags)
Retrieves the variant at the given path of a composite variant.
amxc_var_t int amxc_var_set_path(amxc_var_t *const var, const char *const path, amxc_var_t *data, const int flags)
Sets the variant at the given path of a composite variant.
amxc_var_t * amxc_var_get_key(const amxc_var_t *const var, const char *const key, const int flags)
Get a reference to a part of composed variant using a key.
int amxc_var_new(amxc_var_t **var)
Allocates a variant and initializes it to the null variant type.
int amxc_var_init(amxc_var_t *const var)
Initializes a variant.
amxc_var_t * amxc_var_add_new(amxc_var_t *const var)
Adds a new variant to a composite variant.
int amxc_var_copy(amxc_var_t *const dest, const amxc_var_t *const src)
Copy the type and data from one variant (source) in another variant (destination).
void amxc_var_clean(amxc_var_t *const var)
Clean-up and reset variant.
void amxc_var_delete(amxc_var_t **var)
Frees the previously allocated variant.
amxc_var_t * amxc_var_add_new_key(amxc_var_t *const var, const char *key)
Adds a new variant with a key to a composite variant.
AMXC_INLINE void amxc_var_take_it(amxc_var_t *const var)
Removes the variant for a llist and/or a htable.
int amxc_var_convert(amxc_var_t *const dest, const amxc_var_t *src, const uint32_t type_id)
Converts one variant (source) to another variant(destination) using the specified variant type id.
int amxc_var_compare(const amxc_var_t *const var1, const amxc_var_t *const var2, int *const result)
Compares two variants.
const char * amxc_var_type_name_of(const amxc_var_t *const var)
Gets the variant type name of a variant.
The hash table iterator structure.
The linked list iterator structure.
struct _amxc_llist * llist
A variant type structure.
The variant struct definition.
static amxc_htable_it_t it[2000]
void test_amxc_var_convert(UNUSED void **state)
void test_amxc_var_set_type(UNUSED void **state)
int amxc_var_convert_success(amxc_var_t *const dest, const amxc_var_t *const src)
int amxc_var_compare_fail(const amxc_var_t *const var1, const amxc_var_t *const var2, int *const result)
static amxc_var_type_t dummy1
void free_variant_htable(const char *key, amxc_htable_it_t *it)
static int amxc_var_test_set_index(UNUSED amxc_var_t *const dest, UNUSED amxc_var_t *const src, UNUSED const int64_t index, UNUSED int flags)
static amxc_var_t test_var
int dummy4_convert_to(amxc_var_t *const dest, const amxc_var_t *const src)
void test_amxc_var_push_take_amxc_string(UNUSED void **state)
int amxc_var_init_fail(amxc_var_t *const var)
static amxc_var_t * amxc_var_test_get_key(UNUSED const amxc_var_t *const src, const char *const key, int flags)
int amxc_var_copy_fail(amxc_var_t *const dest, const amxc_var_t *const src)
void test_amxc_var_type_of(UNUSED void **state)
void amxc_var_del(amxc_var_t *const var)
int amxc_var_move_fail(amxc_var_t *const dest, amxc_var_t *const src)
int amxc_var_convert_fail(amxc_var_t *const dest, const amxc_var_t *const src)
void test_amxc_var_add_new_key(UNUSED void **state)
void test_amxc_var_get_path(UNUSED void **state)
static amxc_var_type_t dummy3
void test_amxc_var_copy(UNUSED void **state)
int amxc_var_compare_success(const amxc_var_t *const var1, const amxc_var_t *const var2, int *const result)
static int amxc_var_test_set_key(UNUSED amxc_var_t *const dest, UNUSED amxc_var_t *const src, UNUSED const char *const key, UNUSED int flags)
void test_amxc_var_new_delete(UNUSED void **state)
int amxc_var_copy_success(amxc_var_t *const dst, const amxc_var_t *const src)
void test_amxc_var_move(UNUSED void **state)
void test_amxc_var_add_new(UNUSED void **state)
void test_amxc_var_get_set_key(UNUSED void **state)
static amxc_var_t * amxc_var_test_get_index(UNUSED const amxc_var_t *const src, const int64_t index, int flags)
void test_amxc_var_init_clean(UNUSED void **state)
void free_variant_llist(amxc_llist_it_t *it)
void test_amxc_var_set_path(UNUSED void **state)
int amxc_var_init_success(amxc_var_t *const var)
void test_amxc_var_take_it(UNUSED void **state)
static amxc_var_type_t dummy2
void test_amxc_var_compare(UNUSED void **state)