| 
    Olaf
    
   Overly Lightweight Acoustic Fingerprinting 
   | 
 
Hash table. More...
Go to the source code of this file.
Data Structures | |
| struct | _HashTablePair | 
| struct | _HashTableIterator | 
Macros | |
| #define | HASH_TABLE_NULL ((void *) 0) | 
Typedefs | |
| typedef struct _HashTable | HashTable | 
| typedef struct _HashTableIterator | HashTableIterator | 
| typedef struct _HashTableEntry | HashTableEntry | 
| typedef void * | HashTableKey | 
| typedef void * | HashTableValue | 
| typedef struct _HashTablePair | HashTablePair | 
| typedef unsigned int(* | HashTableHashFunc) (HashTableKey value) | 
| typedef int(* | HashTableEqualFunc) (HashTableKey value1, HashTableKey value2) | 
| typedef void(* | HashTableKeyFreeFunc) (HashTableKey value) | 
| typedef void(* | HashTableValueFreeFunc) (HashTableValue value) | 
Functions | |
| HashTable * | hash_table_new (HashTableHashFunc hash_func, HashTableEqualFunc equal_func) | 
| void | hash_table_free (HashTable *hash_table) | 
| void | hash_table_register_free_functions (HashTable *hash_table, HashTableKeyFreeFunc key_free_func, HashTableValueFreeFunc value_free_func) | 
| int | hash_table_insert (HashTable *hash_table, HashTableKey key, HashTableValue value) | 
| HashTableValue | hash_table_lookup (HashTable *hash_table, HashTableKey key) | 
| int | hash_table_remove (HashTable *hash_table, HashTableKey key) | 
| unsigned int | hash_table_num_entries (HashTable *hash_table) | 
| void | hash_table_iterate (HashTable *hash_table, HashTableIterator *iter) | 
| int | hash_table_iter_has_more (HashTableIterator *iterator) | 
| HashTablePair | hash_table_iter_next (HashTableIterator *iterator) | 
Hash table.
A hash table stores a set of values which can be addressed by a key. Given the key, the corresponding value can be looked up quickly.
To create a hash table, use hash_table_new. To destroy a hash table, use hash_table_free.
To insert a value into a hash table, use hash_table_insert.
To remove a value from a hash table, use hash_table_remove.
To look up a value by its key, use hash_table_lookup.
To iterate over all values in a hash table, use hash_table_iterate to initialise a HashTableIterator structure. Each value can then be read in turn using hash_table_iter_next and hash_table_iter_has_more.
| #define HASH_TABLE_NULL ((void *) 0) | 
A null HashTableValue.
| typedef struct _HashTable HashTable | 
A hash table structure.
| typedef struct _HashTableEntry HashTableEntry | 
Internal structure representing an entry in a hash table.
| typedef int(* HashTableEqualFunc) (HashTableKey value1, HashTableKey value2) | 
Function used to compare two keys for equality.
| typedef unsigned int(* HashTableHashFunc) (HashTableKey value) | 
Hash function used to generate hash values for keys used in a hash table.
| value | The value to generate a hash value for. | 
| typedef struct _HashTableIterator HashTableIterator | 
Structure used to iterate over a hash table.
| typedef void* HashTableKey | 
A key to look up a value in a HashTable.
| typedef void(* HashTableKeyFreeFunc) (HashTableKey value) | 
Type of function used to free keys when entries are removed from a hash table.
| typedef struct _HashTablePair HashTablePair | 
Internal structure representing an entry in hash table used as HashTableIterator next result.
| typedef void* HashTableValue | 
A value stored in a HashTable.
| typedef void(* HashTableValueFreeFunc) (HashTableValue value) | 
Type of function used to free values when entries are removed from a hash table.
| void hash_table_free | ( | HashTable * | hash_table | ) | 
Destroy a hash table.
| hash_table | The hash table to destroy. | 
| int hash_table_insert | ( | HashTable * | hash_table, | 
| HashTableKey | key, | ||
| HashTableValue | value ) | 
Insert a value into a hash table, overwriting any existing entry using the same key.
| hash_table | The hash table. | 
| key | The key for the new value. | 
| value | The value to insert. | 
| int hash_table_iter_has_more | ( | HashTableIterator * | iterator | ) | 
Determine if there are more keys in the hash table to iterate over.
| iterator | The hash table iterator. | 
| HashTablePair hash_table_iter_next | ( | HashTableIterator * | iterator | ) | 
Using a hash table iterator, retrieve the next HashTablePair.
Note: To avoid HashTableEntry internal HashTablePair from being tampered with, and potentially messing with internal table structure, the function returns a copy of HashTablePair stored internally.
| iterator | The hash table iterator. | 
| void hash_table_iterate | ( | HashTable * | hash_table, | 
| HashTableIterator * | iter ) | 
Initialise a HashTableIterator to iterate over a hash table.
| hash_table | The hash table. | 
| iter | Pointer to an iterator structure to initialise. | 
| HashTableValue hash_table_lookup | ( | HashTable * | hash_table, | 
| HashTableKey | key ) | 
Look up a value in a hash table by key.
| hash_table | The hash table. | 
| key | The key of the value to look up. | 
| HashTable * hash_table_new | ( | HashTableHashFunc | hash_func, | 
| HashTableEqualFunc | equal_func ) | 
Create a new hash table.
| hash_func | Function used to generate hash keys for the keys used in the table. | 
| equal_func | Function used to test keys used in the table for equality. | 
| unsigned int hash_table_num_entries | ( | HashTable * | hash_table | ) | 
Retrieve the number of entries in a hash table.
| hash_table | The hash table. | 
| void hash_table_register_free_functions | ( | HashTable * | hash_table, | 
| HashTableKeyFreeFunc | key_free_func, | ||
| HashTableValueFreeFunc | value_free_func ) | 
Register functions used to free the key and value when an entry is removed from a hash table.
| hash_table | The hash table. | 
| key_free_func | Function used to free keys. | 
| value_free_func | Function used to free values. | 
| int hash_table_remove | ( | HashTable * | hash_table, | 
| HashTableKey | key ) | 
Remove a value from a hash table.
| hash_table | The hash table. | 
| key | The key of the value to remove. |