| hash API | |
| ======== | |
| The hash API is a collection of simple hash table functions. Users are expected | |
| to implement their own hashing. | |
| Data Structures | |
| --------------- | |
| `struct hash_table`:: | |
| The hash table structure. The `array` member points to the hash table | |
| entries. The `size` member counts the total number of valid and invalid | |
| entries in the table. The `nr` member keeps track of the number of | |
| valid entries. | |
| `struct hash_table_entry`:: | |
| An opaque structure representing an entry in the hash table. The `hash` | |
| member is the entry's hash key and the `ptr` member is the entry's | |
| value. | |
| Functions | |
| --------- | |
| `init_hash`:: | |
| Initialize the hash table. | |
| `free_hash`:: | |
| Release memory associated with the hash table. | |
| `insert_hash`:: | |
| Insert a pointer into the hash table. If an entry with that hash | |
| already exists, a pointer to the existing entry's value is returned. | |
| Otherwise NULL is returned. This allows callers to implement | |
| chaining, etc. | |
| `lookup_hash`:: | |
| Lookup an entry in the hash table. If an entry with that hash exists | |
| the entry's value is returned. Otherwise NULL is returned. | |
| `for_each_hash`:: | |
| Call a function for each entry in the hash table. The function is | |
| expected to take the entry's value as its only argument and return an | |
| int. If the function returns a negative int the loop is aborted | |
| immediately. Otherwise, the return value is accumulated and the sum | |
| returned upon completion of the loop. |