51 cmagic_set_free(
void *set_ptr);
77 cmagic_set_allocate(
void *set_ptr,
const void *key);
80 cmagic_set_insert(
void *set_ptr,
const void *key);
86 cmagic_set_clear(
void *set_ptr);
89 cmagic_set_size(
void *set_ptr);
92 cmagic_set_first(
void *set_ptr);
95 cmagic_set_last(
void *set_ptr);
104 cmagic_set_find(
void *set_ptr,
const void *key);
107 cmagic_set_get_alloc_packet(
void *set_ptr);
113 #define CMAGIC_SET(key_type) key_type* 124 #define CMAGIC_SET_NEW(key_type, key_comparator, alloc_packet) \ 125 ((CMAGIC_SET(key_type))cmagic_set_new(sizeof(key_type), (key_comparator), (alloc_packet))) 132 #define CMAGIC_SET_FREE(cmagic_set) cmagic_set_free((void*)(cmagic_set)) 145 #define CMAGIC_SET_ALLOCATE(cmagic_set, key) \ 146 (CMAGIC_UTILS_ASSERT_SAME_TYPE(*(cmagic_set), *(key)), \ 147 cmagic_set_allocate((void*)(cmagic_set), (key))) 155 #define CMAGIC_SET_INSERT(cmagic_set, key) \ 156 (CMAGIC_UTILS_ASSERT_SAME_TYPE(*(cmagic_set), *(key)), \ 157 cmagic_set_insert((void*)(cmagic_set), (key))) 168 #define CMAGIC_SET_ERASE_EXT(cmagic_set, key, destructor) \ 169 (CMAGIC_UTILS_ASSERT_SAME_TYPE(*(cmagic_set), *(key)), \ 170 cmagic_set_erase((void*)(cmagic_set), (key), (destructor))) 179 #define CMAGIC_SET_ERASE(cmagic_set, key) CMAGIC_SET_ERASE_EXT(cmagic_set, key, NULL) 185 #define CMAGIC_SET_CLEAR(cmagic_set) cmagic_set_clear((void*)(cmagic_set)) 192 #define CMAGIC_SET_SIZE(cmagic_set) cmagic_set_size((void*)(cmagic_set)) 201 #define CMAGIC_SET_FIRST(cmagic_set) cmagic_set_first((void*)(cmagic_set)) 210 #define CMAGIC_SET_LAST(cmagic_set) cmagic_set_last((void*)(cmagic_set)) 217 #define CMAGIC_SET_ITERATOR_NEXT(iterator) cmagic_set_iterator_next(iterator) 225 #define CMAGIC_SET_ITERATOR_PREV(iterator) cmagic_set_iterator_prev(iterator) 233 #define CMAGIC_SET_FIND(cmagic_set, key) (CMAGIC_UTILS_ASSERT_SAME_TYPE(*(cmagic_set), *(key)), \ 234 cmagic_set_find((void*)(cmagic_set), (key))) 243 #define CMAGIC_SET_GET_KEY(key_type, iterator) \ 244 (assert(iterator), assert((iterator)->key), *((const key_type*)(iterator)->key)) 251 #define CMAGIC_SET_GET_ALLOC_PACKET(cmagic_set) \ 252 cmagic_set_get_alloc_packet((void*)(cmagic_set))
Portable substitutes of standard malloc() and free() functions.
void(* cmagic_set_erase_destructor_t)(void *key)
User defined additional tasks to be executed right before key deletion.
Definition: set.h:44
Set of allocation functions. Used in some CMagic structures to specify a desired memory pool...
Definition: memory.h:187
Set insertion result.
Definition: set.h:60
bool already_exists
true if the element already exists in the set and the set was not modified, false if a new element ha...
Definition: set.h:72
int(* cmagic_set_key_comparator_t)(const void *key1, const void *key2)
Pointer to a function that compares two elements.
Definition: set.h:36
cmagic_set_iterator_t inserted_or_existing
iterator pointing to a new or already existing element or NULL if the allocation of a new element has...
Definition: set.h:66
General purpose utilities.