Go to the documentation of this file.
173 #define HASH_TABLE_ITERATE( table, key, value ) hash_table_firstkey(table); while(hash_table_nextkey(table,&key,(void**)&value))
175 #define HASH_TABLE_ITERATE_RANDOM_START( table, offset_bookkeep, key, value ) hash_table_randomkey(table, &offset_bookkeep); while(hash_table_nextkey_with_offset(table, offset_bookkeep, &key, (void **)&value))
177 #define HASH_TABLE_ITERATE_FROM_KEY( table, iter_control, iter_count_var, key_start, key, value ) \
179 iter_count_var = 0; \
180 hash_table_fromkey(table, key_start); \
181 while(iter_count_var < hash_table_size(table) && (iter_count_var+=1 && (hash_table_nextkey(table, &key, (void **)&value) || (!iter_control && (iter_control+=1) && hash_table_fromkey(table, NULL) && hash_table_nextkey(table, &key, (void **)&value)))))
void * hash_table_remove(struct hash_table *h, const char *key)
Remove a value by key.
int hash_table_nextkey_with_offset(struct hash_table *h, int offset_bookkeep, char **key, void **value)
Continue iteration over all keys from an arbitray offset.
int hash_table_nextkey(struct hash_table *h, char **key, void **value)
Continue iteration over all keys.
unsigned(* hash_func_t)(const char *key)
The type signature for a hash function given to hash_table_create.
Definition: hash_table.h:41
int hash_table_size(struct hash_table *h)
Count the entries in a hash table.
void * hash_table_lookup(struct hash_table *h, const char *key)
Look up a value by key.
void hash_table_delete(struct hash_table *h)
Delete a hash table.
void hash_table_randomkey(struct hash_table *h, int *offset_bookkeep)
Begin iteration over all keys from a random offset.
void hash_table_clear(struct hash_table *h, void(*delete_func)(void *))
Remove all entries from an hash table.
unsigned hash_string(const char *s)
A default hash function.
void hash_table_firstkey(struct hash_table *h)
Begin iteration over all keys.
int hash_table_fromkey(struct hash_table *h, const char *key)
Begin iteration at the given key.
struct hash_table * hash_table_create(int buckets, hash_func_t func)
Create a new hash table.
int hash_table_insert(struct hash_table *h, const char *key, const void *value)
Insert a key and value.