140 #ifndef __TOMMYHASHLIN_H
141 #define __TOMMYHASHLIN_H
152 #define TOMMY_HASHLIN_BIT 6
163 #define TOMMY_HASHLIN_BIT_MAX 32
222 return &hashlin->
bucket[bsr][pos];
237 if (pos < hashlin->split) {
251 return tommy_hashlin_pos(hashlin, pos);
264 return *tommy_hashlin_bucket_ref(hashlin, hash);
283 if (i->
key == hash && cmp(cmp_arg, i->
data) == 0)
340 return hashlin->
count;
tommy_count_t bucket_mask
Bit mask to access the buckets.
Definition: tommyhashlin.h:173
tommy_count_t low_mask
Low order mask value.
Definition: tommyhashlin.h:175
void tommy_hashlin_insert(tommy_hashlin *hashlin, tommy_hashlin_node *node, void *data, tommy_hash_t hash)
Inserts an element in the hashtable.
tommy_uint_t bucket_bit
Bits used in the bit mask.
Definition: tommyhashlin.h:171
tommy_hashlin_node ** bucket[TOMMY_HASHLIN_BIT_MAX]
Dynamic array of hash buckets.
Definition: tommyhashlin.h:170
tommy_uint_t tommy_ilog2_u32(tommy_uint32_t value)
Bit scan reverse or integer log2.
Definition: tommytypes.h:331
tommy_uint32_t tommy_count_t
Generic unsigned integer for counting objects.
Definition: tommytypes.h:67
tommy_count_t count
Number of elements.
Definition: tommyhashlin.h:177
tommy_uint_t state
Reallocation state.
Definition: tommyhashlin.h:178
Hashtable container type.
Definition: tommyhashlin.h:169
struct tommy_node_struct * next
Next node.
Definition: tommytypes.h:188
tommy_count_t bucket_max
Number of buckets.
Definition: tommyhashlin.h:172
tommy_count_t tommy_hashlin_count(tommy_hashlin *hashlin)
Gets the number of elements.
Definition: tommyhashlin.h:338
void * tommy_hashlin_remove(tommy_hashlin *hashlin, tommy_search_func *cmp, const void *cmp_arg, tommy_hash_t hash)
Searches and removes an element from the hashtable.
void tommy_hashlin_foreach_arg(tommy_hashlin *hashlin, tommy_foreach_arg_func *func, void *arg)
Calls the specified function with an argument for each element in the hashtable.
tommy_key_t tommy_hash_t
Hash type used in hashtables.
Definition: tommyhash.h:43
int tommy_search_func(const void *arg, const void *obj)
Search function for elements.
Definition: tommytypes.h:278
void * tommy_hashlin_remove_existing(tommy_hashlin *hashlin, tommy_hashlin_node *node)
Removes an element from the hashtable.
struct tommy_hashlin_struct tommy_hashlin
Hashtable container type.
tommy_count_t low_max
Low order max value.
Definition: tommyhashlin.h:174
void tommy_hashlin_init(tommy_hashlin *hashlin)
Initializes the hashtable.
tommy_uint32_t tommy_uint_t
Generic unsigned integer type.
Definition: tommytypes.h:60
void tommy_hashlin_foreach(tommy_hashlin *hashlin, tommy_foreach_func *func)
Calls the specified function for each element in the hashtable.
tommy_node tommy_hashlin_node
Hashtable node.
Definition: tommyhashlin.h:158
void tommy_hashlin_done(tommy_hashlin *hashlin)
Deinitializes the hashtable.
tommy_hashlin_node * tommy_hashlin_bucket(tommy_hashlin *hashlin, tommy_hash_t hash)
Gets the bucket of the specified hash.
Definition: tommyhashlin.h:262
void * tommy_hashlin_search(tommy_hashlin *hashlin, tommy_search_func *cmp, const void *cmp_arg, tommy_hash_t hash)
Searches an element in the hashtable.
Definition: tommyhashlin.h:277
Data structure node.
Definition: tommytypes.h:183
void tommy_foreach_func(void *obj)
Foreach function.
Definition: tommytypes.h:289
void * data
Pointer to the object containing the node.
Definition: tommytypes.h:200
Hash functions for the use with tommy_hashtable, tommy_hashdyn and tommy_hashlin. ...
size_t tommy_size_t
Generic size_t type.
Definition: tommytypes.h:50
tommy_count_t split
Split position.
Definition: tommyhashlin.h:176
tommy_size_t tommy_hashlin_memory_usage(tommy_hashlin *hashlin)
Gets the size of allocated memory.
tommy_key_t key
Key used to store the node.
Definition: tommytypes.h:207
void tommy_foreach_arg_func(void *arg, void *obj)
Foreach function with an argument.
Definition: tommytypes.h:296