Functions | |
int | u_hmap_new (u_hmap_opts_t *opts, u_hmap_t **phmap) |
Create a new hmap. | |
void | u_hmap_clear (u_hmap_t *hmap) |
Clear hmap. | |
void | u_hmap_free (u_hmap_t *hmap) |
Deallocate hmap. | |
int | u_hmap_put (u_hmap_t *hmap, u_hmap_o_t *obj, u_hmap_o_t **old) |
Insert an object into the hmap. | |
int | u_hmap_get (u_hmap_t *hmap, const void *key, u_hmap_o_t **obj) |
Retrieve an object from the hmap. | |
int | u_hmap_del (u_hmap_t *hmap, const void *key, u_hmap_o_t **obj) |
Delete an object from the hmap. | |
u_hmap_o_t * | u_hmap_o_new (u_hmap_t *hmap, const void *key, const void *val) |
Create a data object (unused for hmap_easy interface). | |
void | u_hmap_o_free (u_hmap_o_t *obj) |
Free a data object (unused for hmap_easy interface). | |
void * | u_hmap_o_get_key (u_hmap_o_t *obj) |
Access the key of the hmap element pointed to by obj . | |
void * | u_hmap_o_get_val (u_hmap_o_t *obj) |
Access the value of the hmap element pointed to by obj . | |
ssize_t | u_hmap_count (u_hmap_t *hmap) |
Count the number of elements currently stored in hmap. |
void u_hmap_clear | ( | u_hmap_t * | hmap | ) |
Clears all hmap elements. Objects are freed via free() by default or using the custom deallocation function passed in the hmap options.
hmap | hmap object |
Definition at line 611 of file srcs/toolbox/hmap.c.
Referenced by u_hmap_easy_clear(), and u_hmap_free().
ssize_t u_hmap_count | ( | u_hmap_t * | hmap | ) |
Count the number of elements currently stored in the supplied hmap
object
hmap | hmap object |
Definition at line 1059 of file srcs/toolbox/hmap.c.
int u_hmap_del | ( | u_hmap_t * | hmap, | |
const void * | key, | |||
u_hmap_o_t ** | obj | |||
) |
Delete object with given key
from hmap
and return it (if the object is owned by user).
hmap | hmap object | |
key | key of object to be deleted | |
obj | deleted object |
U_HMAP_ERR_NONE | on success | |
U_HMAP_ERR_FAIL | on failure |
Definition at line 838 of file srcs/toolbox/hmap.c.
References U_HMAP_OPTS_OWNSDATA.
Referenced by u_hmap_easy_del().
void u_hmap_free | ( | u_hmap_t * | hmap | ) |
Deallocate hmap
along with all hmapd objects (unless U_HMAP_OPTS_OWNSDATA is set). Objects are freed via free() by default or using the custom deallocation function passed in the hmap options.
hmap | hmap object |
Definition at line 646 of file srcs/toolbox/hmap.c.
References u_free(), u_hmap_clear(), and u_hmap_opts_free().
Referenced by u_hmap_easy_free().
int u_hmap_get | ( | u_hmap_t * | hmap, | |
const void * | key, | |||
u_hmap_o_t ** | obj | |||
) |
Retrieve object with given key
from hmap
. On success the requested object is returned in obj
. The object is not removed from the hmap, so ownership of the object is not returned to the user.
hmap | hmap object | |
key | key to be retrieved | |
obj | returned object |
U_HMAP_ERR_NONE | on success | |
U_HMAP_ERR_FAIL | on failure |
Definition at line 803 of file srcs/toolbox/hmap.c.
Referenced by u_hmap_easy_get().
int u_hmap_new | ( | u_hmap_opts_t * | opts, | |
u_hmap_t ** | phmap | |||
) |
Create a new hmap object and save its pointer to *hmap
. The call may fail on memory allocation problems or if the options are manipulated incorrectly.
opts | options to be passed to the hmap (may be NULL) | |
phmap | on success contains the hmap options object |
U_HMAP_ERR_NONE | on success | |
U_HMAP_ERR_FAIL | on failure |
Definition at line 551 of file srcs/toolbox/hmap.c.
References u_free(), u_hmap_opts_copy(), U_HMAP_OPTS_DATATYPE_STRING, u_hmap_opts_dbg(), u_hmap_opts_new(), and u_zalloc().
Referenced by u_hmap_easy_new().
void u_hmap_o_free | ( | u_hmap_o_t * | obj | ) |
Frees a data object (without freeing its content). This function should only be used if U_HMAP_OPTS_OWNSDATA is not set to free objects allocated with u_hmap_o_new(). If U_HMAP_OPTS_OWNSDATA is set, the data is freed automatically by the hashmap by using the default free function or the overridden f_free().
obj | hmap object |
Definition at line 951 of file srcs/toolbox/hmap.c.
References u_free().
Referenced by u_hmap_o_new().
u_hmap_o_t* u_hmap_o_new | ( | u_hmap_t * | hmap, | |
const void * | key, | |||
const void * | val | |||
) |
Creates a new (key, value) tuple to be inserted into a hmap. By default, the user is responsible for allocation and deallocation of these objects and their content. If the option U_HMAP_OPTS_OWNSDATA is set
hmap | reference to parent hmap | |
key | pointer to the key | |
val | pointer to the oject |
Definition at line 881 of file srcs/toolbox/hmap.c.
References u_hmap_o_free(), U_HMAP_OPTS_DATATYPE_OPAQUE, U_HMAP_OPTS_DATATYPE_POINTER, U_HMAP_OPTS_DATATYPE_STRING, U_HMAP_OPTS_OWNSDATA, u_strdup(), and u_zalloc().
Referenced by u_hmap_easy_put().
int u_hmap_put | ( | u_hmap_t * | hmap, | |
u_hmap_o_t * | obj, | |||
u_hmap_o_t ** | old | |||
) |
Insert a (key, val) pair obj
into hmap
. Such object should be created with u_hmap_o_new(). The user is responsible for allocation of keys and values unless U_HMAP_OPTS_OWNSDATA is set. If a value is overwritten (U_HMAP_OPTS_NO_OVERWRITE must be unset via u_hmap_opts_unset_option()) and data is owned by the user, the old
value is returned.
hmap | hmap object | |
obj | key to be inserted | |
old | returned old value |
U_HMAP_ERR_NONE | on success | |
U_HMAP_ERR_EXISTS | if key already exists | |
U_HMAP_ERR_FAIL | on other failures |
Definition at line 673 of file srcs/toolbox/hmap.c.
References U_HMAP_OPTS_HASH_STRONG, U_HMAP_PCY_NONE, U_HMAP_TYPE_CHAIN, U_HMAP_TYPE_LINEAR, and u_snprintf().
Referenced by u_hmap_copy(), and u_hmap_easy_put().