34#ifndef _ACFUTILS_HTBL_H_
35#define _ACFUTILS_HTBL_H_
76#ifndef __INCLUDED_FROM_HTBL_C__
77typedef struct htbl2_multi_value_s htbl2_multi_value_t;
83 size_t key_sz, bool_t multi_value);
87 size_t key_sz,
size_t value_sz,
bool multi_value);
91 void (*func)(
void *value,
void *userinfo),
void *userinfo);
93 void (*func)(
void *value,
void *userinfo),
void *userinfo);
96API_EXPORT
size_t htbl2_count(
const htbl2_t *htbl);
100 size_t key_sz,
void *value,
size_t value_sz);
103 const void *key, bool_t nil_ok);
105 const void *key,
size_t key_sz,
bool nil_ok);
108 const void *key, htbl_multi_value_t *list_item);
110 const void *key,
size_t key_sz, htbl2_multi_value_t *list_item);
113API_EXPORT
void *htbl2_lookup(
const htbl2_t REQ_PTR(htbl),
const void *key,
114 size_t key_sz,
size_t value_sz);
119 const void *key,
size_t key_sz);
122API_EXPORT
void *htbl2_value_multi(
const htbl2_multi_value_t *mv,
127#define HTBL_VALUE_MULTI(x) htbl_value_multi(x)
130 void (*func)(
const void *key,
void *value,
void *userinfo),
133 size_t key_sz,
size_t value_sz,
134 void (*func)(
const void *key,
void *value,
void *userinfo),
void *userinfo);
static void htbl_free(void *obj, void *unused)
void htbl_foreach(const htbl_t *htbl, void(*func)(const void *key, void *value, void *userinfo), void *userinfo)
void htbl_empty(htbl_t *htbl, void(*func)(void *value, void *userinfo), void *userinfo)
void htbl_remove_multi(htbl_t *htbl, const void *key, htbl_multi_value_t *list_item)
void htbl_set(htbl_t *htbl, const void *key, void *value)
const list_t * htbl_lookup_multi(const htbl_t *htbl, const void *key)
void htbl_create(htbl_t *htbl, size_t tbl_sz, size_t key_sz, bool_t multi_value)
size_t htbl_count(const htbl_t *htbl)
void htbl_remove(htbl_t *htbl, const void *key, bool_t nil_ok)
void * htbl_value_multi(const htbl_multi_value_t *mv)
char * htbl_dump(const htbl_t *htbl, bool_t printable_keys)
void * htbl_lookup(const htbl_t *htbl, const void *key)
void htbl_destroy(htbl_t *htbl)