This file contains the public interface to hash tables. For documentation of everything, including things meant only for internal use, see hashtable.c.
The following is a usage example of the interface defined in this file:
#include <stdio.h> #include <hashtable.h> int main(int argc, char **argv) { /* Create a hash table. */ struct hashtable *table = make_hashtable(hashtable_default_hash, 16); /* Add an entry to the hash table. */ hashtable_add(table, "hello", "world"); /* Retrieve and print entry. */ printf("%s -> %s\n", "hello", hashtable_lookup(table, "hello")); /* Free hash table. */ free_hashtable(table); return 0; }
Definition in file hashtable.h.
Go to the source code of this file.
Data Structures | |
| struct | hashtable |
| Struct representing a hash table. More... | |
| struct | hashtable_entry |
| Structure representing an entry in a hash table. More... | |
Functions | |
| void | free_hashtable (struct hashtable *table) |
| Free all the memory used by a hash table. | |
| int | hashtable_add (struct hashtable *table, char *key, void *value) |
| Add an entry to a hash table. | |
| unsigned int | hashtable_default_hash (const char *key) |
| The default hash function. | |
| void | hashtable_iter (const struct hashtable *table, void(*func)(char *key, void *value)) |
| Call a function for each entry in a hash table. | |
| void * | hashtable_lookup (const struct hashtable *table, const char *key) |
| Look up the value bound to a key. | |
| hashtable * | make_hashtable (unsigned int(*hash)(const char *), unsigned int nbuckets) |
| Create a hash table. | |
| void free_hashtable | ( | struct hashtable * | table | ) |
Free all the memory used by a hash table.
| table | The hash table to be deallocated. |
Definition at line 106 of file hashtable.c.
References hashtable::bucket, hashtable::nbuckets, and hashtable_entry::next.
| int hashtable_add | ( | struct hashtable * | table, | |
| char * | key, | |||
| void * | value | |||
| ) |
Add an entry to a hash table.
| table | The hash table the entry is to be added to. | |
| key | The key for the entry. | |
| value | The value for the entry. |
Definition at line 45 of file hashtable.c.
References hashtable::bucket, hashtable_entry::key, NEW, hashtable_entry::next, and hashtable_entry::value.
| unsigned int hashtable_default_hash | ( | const char * | key | ) |
The default hash function.
This function can be used as the hash parameter to make_hash_table().
| key | The key to be hashed. |
Definition at line 91 of file hashtable.c.
| void hashtable_iter | ( | const struct hashtable * | table, | |
| void(*)(char *key, void *value) | func | |||
| ) |
Call a function for each entry in a hash table.
| table | The hash table whose entries to iterate over. | |
| func | The function to call for each entry. The function receives two argument: 1. The key of the entry. 2. The value of the entry. |
Definition at line 131 of file hashtable.c.
References hashtable::bucket, hashtable_entry::key, hashtable::nbuckets, hashtable_entry::next, and hashtable_entry::value.
| void* hashtable_lookup | ( | const struct hashtable * | table, | |
| const char * | key | |||
| ) |
Look up the value bound to a key.
| table | The hash table in which to look up the key. | |
| key | The key to look up. |
Definition at line 149 of file hashtable.c.
References hashtable::bucket, hashtable_entry::key, hashtable_entry::next, and hashtable_entry::value.
| struct hashtable* make_hashtable | ( | unsigned int(*)(const char *) | hash, | |
| unsigned int | nbuckets | |||
| ) |
Create a hash table.
| hash | The hash function to use with this hash table. The function has to map NUL-terminated strings to unsigned ints. | |
| nbuckets | The number of buckets in the hash table. |
Definition at line 169 of file hashtable.c.
References hashtable::bucket, hashtable::hash, hashtable::nbuckets, NEW, and NEWARRAY.
1.5.1