wget_hashmap_iterator*wget_hashmap_iterator_alloc(wget_hashmap*h)Parametersh Hashmap
Returns
New iterator instance for h
Creates a hashmap iterator for h.
voidwget_hashmap_iterator_free(wget_hashmap_iterator**iter)Parametersiter Hashmap iterator
Free the given iterator iter.
void*wget_hashmap_iterator_next(wget_hashmap_iterator*iter,void**value)Parametersiter Hashmap iterator
value Pointer to the value belonging to the returned key
Returns
Pointer to the key or NULL if no more elements left
Returns the next key / value in the hashmap. If all key/value pairs have been iterated over the function
returns NULL and value is untouched.
When iterating over a hashmap, the order of returned key/value pairs is not defined.
wget_hashmap*wget_hashmap_create(intmax,wget_hashmap_hash_fn*hash,wget_hashmap_compare_fn*cmp)Parametersmax Initial number of pre-allocated entries
hash Hash function to build hashes from elements
cmp Comparison function used to find elements
Returns
New hashmap instance
Create a new hashmap instance with initial size max. It should be free'd after use with
wget_hashmap_free().
Before the first insertion of an element, hash and cmp must be set. So if you use NULL values here, you
have to call wget_hashmap_setcmpfunc() and/or wget_hashmap_hashcmpfunc() with appropriate function
pointers. No doing so will result in undefined behavior (likely you'll see a segmentation fault).
intwget_hashmap_put(wget_hashmap*h,constvoid*key,constvoid*value)Parametersh Hashmap to put data into
key Key to insert into h
value Value to insert into h
Returns
0 if inserted a new entry, 1 if entry existed, WGET_E_MEMORY if internal allocation failed
Insert a key/value pair into hashmap h.
key and value are not cloned, the hashmap takes 'ownership' of both.
If key already exists and the pointer values the old and the new key differ, the old key will be
destroyed by calling the key destructor function (default is free()).
To realize a hashset (just keys without values), value may be NULL.
Neither h nor key must be NULL, else the return value will always be 0.
intwget_hashmap_contains(constwget_hashmap*h,constvoid*key)Parametersh Hashmap
key Key to search for
Returns
1 if key has been found, 0 if not found
Check if key exists in h.
intwget_hashmap_get(constwget_hashmap*h,constvoid*key,void**value)Parametersh Hashmap
key Key to search for
value Value to be returned
Returns
1 if key has been found, 0 if not found
Get the value for a given key.
Neither h nor key must be NULL.
intwget_hashmap_remove(wget_hashmap*h,constvoid*key)Parametersh Hashmap
key Key to be removed
Returns
1 if key has been removed, 0 if not found
Remove key from hashmap h.
If key is found, the key and value destructor functions are called when removing the entry from the
hashmap.
intwget_hashmap_remove_nofree(wget_hashmap*h,constvoid*key)Parametersh Hashmap
key Key to be removed
Returns
1 if key has been removed, 0 if not found
Remove key from hashmap h.
Key and value destructor functions are not called when removing the entry from the hashmap.
voidwget_hashmap_free(wget_hashmap**h)Parametersh Hashmap to be free'd
Remove all entries from hashmap h and free the hashmap instance.
Key and value destructor functions are called for each entry in the hashmap.
voidwget_hashmap_clear(wget_hashmap*h)Parametersh Hashmap to be cleared
Remove all entries from hashmap h.
Key and value destructor functions are called for each entry in the hashmap.
intwget_hashmap_size(constwget_hashmap*h)Parametersh Hashmap
Returns
Number of entries in hashmap h
Return the number of entries in the hashmap h.
intwget_hashmap_browse(constwget_hashmap*h,wget_hashmap_browse_fn*browse,void*ctx)Parametersh Hashmap
browse Function to be called for each element of h
ctx Context variable use as param to browse
Returns
Return value of the last call to browse
Call function browse for each element of hashmap h or until browse returns a value not equal to zero.
browse is called with ctx and the pointer to the current element.
The return value of the last call to browse is returned or 0 if either h or browse is NULL.
voidwget_hashmap_setcmpfunc(wget_hashmap*h,wget_hashmap_compare_fn*cmp)Parametersh Hashmap
cmp Comparison function used to find keys
Set the comparison function.
intwget_hashmap_sethashfunc(wget_hashmap*h,wget_hashmap_hash_fn*hash)Parametersh Hashmap
hash Hash function used to hash keys
Returns
WGET_E_SUCCESS if set successfully, else WGET_E_MEMORY or WGET_E_INVALID
Set the key hash function.
The keys of all entries in the hashmap will be hashed again. This includes a memory allocation, so there
is a possibility of failure.
voidwget_hashmap_set_key_destructor(wget_hashmap*h,wget_hashmap_key_destructor*destructor)Parametersh Hashmap
destructor Destructor function for keys
Set the key destructor function.
Default is free().
voidwget_hashmap_set_value_destructor(wget_hashmap*h,wget_hashmap_value_destructor*destructor)Parametersh Hashmap
destructor Destructor function for values
Set the value destructor function.
Default is free().
voidwget_hashmap_set_load_factor(wget_hashmap*h,floatfactor)Parametersh Hashmap
factor The load factor
Set the load factor function.
The load factor is determines when to resize the internal memory. 0.75 means 'resize if 75% or more of
all slots are used'.
The resize strategy is set by wget_hashmap_set_growth_policy().
The resize (and rehashing) occurs earliest on the next insertion of a new key.
Default is 0.75.
voidwget_hashmap_set_resize_factor(wget_hashmap*h,floatfactor)Parametersh Hashmap
factor Hashmap growth factor
Set the factor for resizing the hashmap when it's load factor is reached.
The new size is 'factor * oldsize'. If the new size is less or equal 0, the involved put function will do
nothing and the internal state of the hashmap will not change.
Default is 2.