This hash table module maps C strings to arbitrary objects (void pointers). For example, to store a file object using the pathname as a key:
struct hash_table *h; h = hash_table_create(0,0);
FILE * file = fopen(pathname,"r");
hash_table_insert(h,pathname,file); file = hash_table_remove(h,pathname);
To list all of the items in a hash table, use hash_table_firstkey and hash_table_nextkey:
char *key; void *value;
hash_table_firstkey(h);
while(hash_table_nextkey(h,&key,&value)) { printf("table contains: %s\n",key); }
Go to the source code of this file.
Typedefs | |
typedef unsigned(* | hash_func_t )(const char *key) |
The type signature for a hash function given to hash_table_create. | |
Functions | |
hash_table * | hash_table_create (int buckets, hash_func_t func) |
Create a new hash table. | |
void | hash_table_delete (struct hash_table *h) |
Delete a hash table. | |
int | hash_table_size (struct hash_table *h) |
Count the entries in a hash table. | |
int | hash_table_insert (struct hash_table *h, const char *key, const void *value) |
Insert a key and value. | |
void * | hash_table_lookup (struct hash_table *h, const char *key) |
Look up a value by key. | |
void * | hash_table_remove (struct hash_table *h, const char *key) |
Remove a value by key. | |
void | hash_table_firstkey (struct hash_table *h) |
Begin iteration over all keys. | |
int | hash_table_nextkey (struct hash_table *h, char **key, void **value) |
Continue iteration over all keys. | |
unsigned | hash_string (const char *s) |
A default hash function. |
|
The type signature for a hash function given to hash_table_create.
|
|
Create a new hash table.
|
|
Delete a hash table. Note that this function will not delete all of the objects contained within the hash table.
|
|
Count the entries in a hash table.
|
|
Insert a key and value. This call will fail if the table already contains the same key. You must call hash_table_remove to remove it. Also note that you cannot insert a null value into the table.
|
|
Look up a value by key.
|
|
Remove a value by key.
|
|
Begin iteration over all keys. This function begins a new iteration over a hash table, allowing you to visit every key and value in the table. Next, invoke hash_table_nextkey to retrieve each value in order.
|
|
Continue iteration over all keys. This function returns the next key and value in the iteration.
|
|
A default hash function.
|