| Holyrel Library Reference Manual |
|---|
Hash TableHash Table — Hash table. |
#include <libhrel/relation.h>
HHashTable;
guint (*HHashFunc) (gconstpointer key,
gpointer user_data);
guint (*HEqualFunc) (gconstpointer key1,
gconstpointer key2,
gpointer user_data);
gboolean (*HHFunc) (gpointer key,
gpointer value,
gpointer user_data);
HHashTable* h_hash_table_new (HHashFunc hash_func,
gpointer hash_func_data,
HEqualFunc key_equal_func,
gpointer key_equal_func_data);
HHashTable* h_hash_table_new_full (HHashFunc hash_func,
gpointer hash_func_data,
HEqualFunc key_equal_func,
gpointer key_equal_func_data,
GDestroyNotify key_destroy_func,
GDestroyNotify value_destroy_func);
void h_hash_table_destroy (HHashTable *hash_table);
guint h_hash_table_size (HHashTable *hash_table);
void h_hash_table_insert (HHashTable *hash_table,
gpointer key,
gpointer value);
void h_hash_table_replace (HHashTable *hash_table,
gpointer key,
gpointer value);
gboolean h_hash_table_remove (HHashTable *hash_table,
gconstpointer key);
gpointer h_hash_table_lookup (HHashTable *hash_table,
gconstpointer key);
void h_hash_table_foreach (HHashTable *hash_table,
HHFunc func,
gpointer user_data);
HHashTable is an adaptation of GHashTable accepting additional arguments for the hash and comparison functions.
guint (*HHashFunc) (gconstpointer key, gpointer user_data);
key : |
|
user_data : |
|
| Returns : |
guint (*HEqualFunc) (gconstpointer key1, gconstpointer key2, gpointer user_data);
key1 : |
|
key2 : |
|
user_data : |
|
| Returns : |
gboolean (*HHFunc) (gpointer key, gpointer value, gpointer user_data);
key : |
|
value : |
|
user_data : |
|
| Returns : |
HHashTable* h_hash_table_new (HHashFunc hash_func, gpointer hash_func_data, HEqualFunc key_equal_func, gpointer key_equal_func_data);
Creates a new HHashTable.
hash_func : |
a function to create a hash value from a key. Hash values are used to determine where keys are stored within the HHashTable data structure. |
hash_func_data : |
user data passed to hash_func.
|
key_equal_func : |
a function to check two keys for equality. This is used when looking up keys in the HHashTable. |
key_equal_func_data : |
user data passed to key_equal_func.
|
| Returns : | a new HHashTable. |
HHashTable* h_hash_table_new_full (HHashFunc hash_func, gpointer hash_func_data, HEqualFunc key_equal_func, gpointer key_equal_func_data, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func);
Creates a new HHashTable like h_hash_table_new() and allows to specify
functions to free the memory allocated for the key and value that get
called when removing the entry from the HHashTable.
hash_func : |
a function to create a hash value from a key. |
hash_func_data : |
user data passed to hash_func.
|
key_equal_func : |
a function to check two keys for equality. |
key_equal_func_data : |
user data passed to key_equal_func.
|
key_destroy_func : |
a function to free the memory allocated for the key
used when removing the entry from the HHashTable or NULL if you
don't want to supply such a function.
|
value_destroy_func : |
a function to free the memory allocated for the
value used when removing the entry from the HHashTable or NULL if
you don't want to supply such a function.
|
| Returns : | a new HHashTable. |
void h_hash_table_destroy (HHashTable *hash_table);
Destroys the HHashTable. If keys and/or values are dynamically
allocated, you should either free them first or create the
HHashTable using h_hash_table_new_full(). In the latter case the
destroy functions you supplied will be called on all keys and
values before destroying the HHashTable.
hash_table : |
a HHashTable. |
guint h_hash_table_size (HHashTable *hash_table);
Returns the number of elements contained in the HHashTable.
hash_table : |
a HHashTable. |
| Returns : | the number of key/value pairs in the HHashTable. |
void h_hash_table_insert (HHashTable *hash_table, gpointer key, gpointer value);
Inserts a new key and value into a HHashTable.
If the key already exists in the HHashTable its current value is replaced
with the new value. If you supplied a value_destroy_func when creating the
HHashTable, the old value is freed using that function. If you supplied
a key_destroy_func when creating the HHashTable, the passed key is freed
using that function.
hash_table : |
a HHashTable. |
key : |
a key to insert. |
value : |
the value to associate with the key. |
void h_hash_table_replace (HHashTable *hash_table, gpointer key, gpointer value);
Inserts a new key and value into a HHashTable similar to
h_hash_table_insert(). The difference is that if the key already exists
in the HHashTable, it gets replaced by the new key. If you supplied a
value_destroy_func when creating the HHashTable, the old value is freed
using that function. If you supplied a key_destroy_func when creating the
HHashTable, the old key is freed using that function.
hash_table : |
a HHashTable. |
key : |
a key to insert. |
value : |
the value to associate with the key. |
gboolean h_hash_table_remove (HHashTable *hash_table, gconstpointer key);
Removes a key and its associated value from a HHashTable.
If the HHashTable was created using h_hash_table_new_full(), the
key and value are freed using the supplied destroy functions, otherwise
you have to make sure that any dynamically allocated values are freed
yourself.
hash_table : |
a HHashTable. |
key : |
the key to remove. |
| Returns : | TRUE if the key was found and removed from the HHashTable.
|
gpointer h_hash_table_lookup (HHashTable *hash_table, gconstpointer key);
Looks up a key in a HHashTable. Note that this function cannot
distinguish between a key that is not present and one which is present
and has the value NULL. If you need this distinction, use
h_hash_table_lookup_extended().
hash_table : |
a HHashTable. |
key : |
the key to look up. |
| Returns : | the associated value, or NULL if the key is not found.
|
void h_hash_table_foreach (HHashTable *hash_table, HHFunc func, gpointer user_data);
Calls the given function for each of the key/value pairs in the
HHashTable. The function is passed the key and value of each
pair, and the given user_data parameter. The hash table may not
be modified while iterating over it (you can't add/remove
items). To remove all items matching a predicate, use
h_hash_table_foreach_remove().
hash_table : |
a HHashTable. |
func : |
the function to call for each key/value pair. |
user_data : |
user data to pass to the function. |
| << Stack | BTree >> |