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.