Data Structures | |
| struct | cucon_hmap_node |
| struct | cucon_hmap |
Typedefs | |
| typedef struct cucon_hmap_node * | cucon_hmap_node_t |
Functions | |
| void | cucon_hmap_init (cucon_hmap_t map, cu_clop(eq, cu_bool_t, void const *, void const *), cu_clop(hash, cu_hash_t, void const *)) |
| cucon_hmap_t | cucon_hmap_new (cu_clop(eq, cu_bool_t, void const *, void const *), cu_clop(hash, cu_hash_t, void const *)) |
| void | cucon_hmap_clear (cucon_hmap_t) |
| size_t | cucon_hmap_card (cucon_hmap_t map) |
| cu_bool_t | cucon_hmap_is_empty (cucon_hmap_t map) |
| void * | cucon_hmap_find_mem (cucon_hmap_t map, void const *key) |
| void * | cucon_hmap_find_ptr (cucon_hmap_t map, void const *key) |
| cu_bool_t | cucon_hmap_insert_mem (cucon_hmap_t map, void const *key, size_t slot_size, cu_ptr_ptr_t slot) |
| void * | cucon_hmap_pop_mem (cucon_hmap_t map, void const *key) |
| void * | cucon_hmap_pop_ptr (cucon_hmap_t map, void const *key) |
| cu_bool_t | cucon_hmap_erase (cucon_hmap_t map, void const *key) |
| void * | cucon_hmap_isocap_pop_mem (cucon_hmap_t map, void const *key) |
| void * | cucon_hmap_isocap_pop_ptr (cucon_hmap_t map, void const *key) |
| cu_bool_t | cucon_hmap_isocap_erase (cucon_hmap_t map, void const *key) |
| void | cucon_hmap_set_capacity (cucon_hmap_t map, size_t cap) |
| cu_bool_t | cucon_hmap_conj_keys (cucon_hmap_t map, cu_clop(f, cu_bool_t, void const *)) |
| cu_bool_t | cucon_hmap_conj_mem (cucon_hmap_t map, cu_clop(f, cu_bool_t, void const *, void *)) |
Defined here is a hash map where the keys are pointers with associated client-provided equality and hash functions. The values are arbitrary sized slots, but shortcuts for pointer-valued maps are provided.
| size_t cucon_hmap_card | ( | cucon_hmap_t | map | ) |
The number of elements of map.
| void cucon_hmap_clear | ( | cucon_hmap_t | ) |
Erase all entries in hash.
| cu_bool_t cucon_hmap_erase | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
Delete the mapping of key from map if it exists and return true, otherwise return false.
| void* cucon_hmap_find_mem | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
If an object equal to key is in map, return its value slot, else return NULL.
| void* cucon_hmap_find_ptr | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
If an object equal to key is in map, assume it maps to a slot containing a pointer, and return the pointer, otherwise return NULL.
| void cucon_hmap_init | ( | cucon_hmap_t | map, | |
| cu_clop(eq, cu_bool_t, void const *, void const *) | , | |||
| cu_clop(hash, cu_hash_t, void const *) | ||||
| ) |
Initialise map as a hash set over objects with equality eq and hash function hash.
| cu_bool_t cucon_hmap_insert_mem | ( | cucon_hmap_t | map, | |
| void const * | key, | |||
| size_t | slot_size, | |||
| cu_ptr_ptr_t | slot | |||
| ) |
If key is in map, return false and set *slot to its value slot, else return true and associate key with slot_size bytes of value slot assigned to *slot.
| cu_bool_t cucon_hmap_is_empty | ( | cucon_hmap_t | map | ) |
True iff map is empty.
| cu_bool_t cucon_hmap_isocap_erase | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
Same as cucon_hmap_erase, except that the capacity is kept constant. Use in conjunction with cucon_hmap_set_capacity as an optimisation.
| void* cucon_hmap_isocap_pop_mem | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
Same as cucon_hmap_pop_mem, except that the capacity is kept constant. Use in conjunction with cucon_hmap_set_capacity as an optimisation.
| void* cucon_hmap_isocap_pop_ptr | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
Same as cucon_hmap_pop_ptr, except that the capacity is kept constant. Use in conjunction with cucon_hmap_set_capacity as an optimisation.
| cucon_hmap_t cucon_hmap_new | ( | cu_clop(eq, cu_bool_t, void const *, void const *) | , | |
| cu_clop(hash, cu_hash_t, void const *) | ||||
| ) |
Return a hash set over objects with equality defined by eq and hash function hash.
| void* cucon_hmap_pop_mem | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
If key has a mapping in map, return the slot and erase it, otherwise return NULL.
| void* cucon_hmap_pop_ptr | ( | cucon_hmap_t | map, | |
| void const * | key | |||
| ) |
If key has a mapping in map, return the single pointer which is assumed to be stored in the slot and delete the mapping, otherwise return NULL.
| void cucon_hmap_set_capacity | ( | cucon_hmap_t | map, | |
| size_t | cap | |||
| ) |
Set the capacity of map to cap, which must be a power of 2. This is used either as a preparation for subsequent insertions or as a final step after a series of calls to the "isocap" functions. It is merely an optimisation to avoid unnecessary intermediate adjustments of the capacity when the final cardinality is known.