|
Libecoli 0.11.3
Extensible COmmand LIne library
|
Simple hash table API (any key). More...
Typedefs | |
| typedef void(* | ec_htable_elt_free_t) (void *) |
Functions | |
| struct ec_htable * | ec_htable (void) |
| void * | ec_htable_get (const struct ec_htable *htable, const void *key, size_t key_len) |
| bool | ec_htable_has_key (const struct ec_htable *htable, const void *key, size_t key_len) |
| int | ec_htable_del (struct ec_htable *htable, const void *key, size_t key_len) |
| int | ec_htable_set (struct ec_htable *htable, const void *key, size_t key_len, void *val, ec_htable_elt_free_t free_cb) |
| void | ec_htable_free (struct ec_htable *htable) |
| size_t | ec_htable_len (const struct ec_htable *htable) |
| struct ec_htable * | ec_htable_dup (const struct ec_htable *htable) |
| void | ec_htable_force_seed (uint32_t seed) |
| void | ec_htable_dump (FILE *out, const struct ec_htable *htable) |
| struct ec_htable_elt_ref * | ec_htable_iter (const struct ec_htable *htable) |
| struct ec_htable_elt_ref * | ec_htable_iter_next (struct ec_htable_elt_ref *iter) |
| const void * | ec_htable_iter_get_key (const struct ec_htable_elt_ref *iter) |
| size_t | ec_htable_iter_get_key_len (const struct ec_htable_elt_ref *iter) |
| void * | ec_htable_iter_get_val (const struct ec_htable_elt_ref *iter) |
Simple hash table API (any key).
This file provides functions to store objects in hash tables, using arbitrary data as keys.
| typedef void(* ec_htable_elt_free_t) (void *) |
| struct ec_htable * ec_htable | ( | void | ) |
Create a hash table.
| void * ec_htable_get | ( | const struct ec_htable * | htable, |
| const void * | key, | ||
| size_t | key_len ) |
Get a value from the hash table.
| htable | The hash table. |
| key | The key. |
| key_len | The key length. |
| bool ec_htable_has_key | ( | const struct ec_htable * | htable, |
| const void * | key, | ||
| size_t | key_len ) |
Check if the hash table contains this key.
| htable | The hash table. |
| key | The key. |
| key_len | The key length. |
| int ec_htable_del | ( | struct ec_htable * | htable, |
| const void * | key, | ||
| size_t | key_len ) |
Delete an object from the hash table.
| htable | The hash table. |
| key | The key. |
| key_len | The key length. |
| int ec_htable_set | ( | struct ec_htable * | htable, |
| const void * | key, | ||
| size_t | key_len, | ||
| void * | val, | ||
| ec_htable_elt_free_t | free_cb ) |
Add/replace an object in the hash table.
| htable | The hash table. |
| key | The key. |
| key_len | The key length. |
| val | The pointer to be saved in the hash table. |
| free_cb | An optional pointer to a destructor function called when an object is destroyed (ec_htable_del() or ec_htable_free()). |
| void ec_htable_free | ( | struct ec_htable * | htable | ) |
Free a hash table and all its objects.
| htable | The hash table. |
| size_t ec_htable_len | ( | const struct ec_htable * | htable | ) |
Get the length of a hash table.
| htable | The hash table. |
Duplicate a hash table.
A reference counter is shared between the clones of hash tables so that the objects are freed only when the last reference is destroyed.
| htable | The hash table. |
| void ec_htable_force_seed | ( | uint32_t | seed | ) |
| void ec_htable_dump | ( | FILE * | out, |
| const struct ec_htable * | htable ) |
Dump a hash table.
| out | The stream where the dump is sent. |
| htable | The hash table. |
| struct ec_htable_elt_ref * ec_htable_iter | ( | const struct ec_htable * | htable | ) |
Iterate the elements in the hash table.
The typical usage is as below:
| htable | The hash table. |
| struct ec_htable_elt_ref * ec_htable_iter_next | ( | struct ec_htable_elt_ref * | iter | ) |
Make the iterator point to the next element in the hash table.
| iter | The hash table iterator. |
| const void * ec_htable_iter_get_key | ( | const struct ec_htable_elt_ref * | iter | ) |
Get the key of the current element.
| iter | The hash table iterator. |
| size_t ec_htable_iter_get_key_len | ( | const struct ec_htable_elt_ref * | iter | ) |
Get the key length of the current element.
| iter | The hash table iterator. |
| void * ec_htable_iter_get_val | ( | const struct ec_htable_elt_ref * | iter | ) |
Get the value of the current element.
| iter | The hash table iterator. |