32 typedef void *(*genhash_copy_fn_t)(
const void *);
75 const void *data,
void **old_pkey,
83 void **deleted_pkey,
void **deleted_pdata);
86 const struct genhash *pgenhash2);
88 const struct genhash *pgenhash2,
97 #define genhash_keys_iterate(ARG_ht, NAME_key) \
98 generic_iterate(struct genhash_iter, const void *, NAME_key, \
99 genhash_iter_sizeof, genhash_key_iter_init, (ARG_ht))
100 #define genhash_keys_iterate_end generic_iterate_end
104 #define genhash_values_iterate(ARG_ht, NAME_value) \
105 generic_iterate(struct genhash_iter, void *, NAME_value, \
106 genhash_iter_sizeof, genhash_value_iter_init, (ARG_ht))
107 #define genhash_values_iterate_end generic_iterate_end
113 #define genhash_iterate(ARG_ht, NAME_iter) \
114 generic_iterate(struct genhash_iter, struct iterator *, NAME_iter, \
115 genhash_iter_sizeof, genhash_iter_init, (ARG_ht))
116 #define genhash_iterate_end generic_iterate_end
struct genhash * genhash_copy(const struct genhash *pgenhash) fc__warn_unused_result
Returns a newly allocated mostly deep copy of the given genhash table.
genhash_val_t(* genhash_val_fn_t)(const void *)
struct iterator * genhash_key_iter_init(struct genhash_iter *iter, const struct genhash *hash)
Returns an iterator over the genhash table's k genhashgenhashenhashys.
size_t genhash_iter_sizeof()
"Sizeof" function implementation for generic_iterate genhash iterators.
bool genhashs_are_equal(const struct genhash *pgenhash1, const struct genhash *pgenhash2)
Returns TRUE iff the hash tables contains the same pairs of key/data.
bool genhash_insert(struct genhash *pgenhash, const void *key, const void *data)
Insert entry: returns TRUE if inserted, or FALSE if there was already an entry with the same key,...
void *(* genhash_copy_fn_t)(const void *)
bool genhash_str_comp_func(const char *vkey1, const char *vkey2)
A supplied function for comparison of nul-terminated strings:
bool genhashs_are_equal_full(const struct genhash *pgenhash1, const struct genhash *pgenhash2, genhash_comp_fn_t data_comp_func)
Returns TRUE iff the hash tables contains the same pairs of key/data.
bool genhash_set_no_shrink(struct genhash *pgenhash, bool no_shrink)
Prevent or allow the genhash table automatically shrinking.
size_t genhash_size(const struct genhash *pgenhash)
Returns the number of entries in the genhash table.
void genhash_destroy(struct genhash *pgenhash)
Destructor: free internal memory.
size_t genhash_capacity(const struct genhash *pgenhash)
Returns the number of buckets in the genhash table.
void genhash_clear(struct genhash *pgenhash)
Remove all entries of the genhash table.
bool(* genhash_comp_fn_t)(const void *, const void *)
struct genhash * genhash_new_nentries_full(genhash_val_fn_t key_val_func, genhash_comp_fn_t key_comp_func, genhash_copy_fn_t key_copy_func, genhash_free_fn_t key_free_func, genhash_copy_fn_t data_copy_func, genhash_free_fn_t data_free_func, size_t nentries) fc__warn_unused_result
Constructor specifying number of entries.
struct genhash * genhash_new_nentries(genhash_val_fn_t key_val_func, genhash_comp_fn_t key_comp_func, size_t nentries) fc__warn_unused_result
Constructor specifying number of entries.
void(* genhash_free_fn_t)(void *)
struct genhash * genhash_new_full(genhash_val_fn_t key_val_func, genhash_comp_fn_t key_comp_func, genhash_copy_fn_t key_copy_func, genhash_free_fn_t key_free_func, genhash_copy_fn_t data_copy_func, genhash_free_fn_t data_free_func) fc__warn_unused_result
Constructor with unspecified number of entries.
bool genhash_lookup(const struct genhash *pgenhash, const void *key, void **pdata)
Lookup data.
struct genhash * genhash_new(genhash_val_fn_t key_val_func, genhash_comp_fn_t key_comp_func) fc__warn_unused_result
Constructor with unspecified number of entries.
void * genhash_iter_key(const struct iterator *genhash_iter)
Helper function for genhash (key, value) pair iteration.
bool genhash_remove(struct genhash *pgenhash, const void *key)
Delete an entry from the genhash table.
bool genhash_replace_full(struct genhash *pgenhash, const void *key, const void *data, void **old_pkey, void **old_pdata)
Insert entry, replacing any existing entry which has the same key.
char * genhash_str_copy_func(const char *vkey)
Copy function for string allocation.
struct iterator * genhash_iter_init(struct genhash_iter *iter, const struct genhash *hash)
Returns an iterator that iterates over both keys and values of the genhash table.
void * genhash_iter_value(const struct iterator *genhash_iter)
Helper function for genhash (key, value) pair iteration.
void genhash_str_free_func(char *vkey)
Free function for string allocation.
bool genhash_replace(struct genhash *pgenhash, const void *key, const void *data)
Insert entry, replacing any existing entry which has the same key.
genhash_val_t genhash_str_val_func(const char *vkey)
A supplied genhash function appropriate to nul-terminated strings.
unsigned int genhash_val_t
bool genhash_remove_full(struct genhash *pgenhash, const void *key, void **deleted_pkey, void **deleted_pdata)
Delete an entry from the genhash table.
struct iterator * genhash_value_iter_init(struct genhash_iter *iter, const struct genhash *hash)
Returns an iterator over the hash table's values.
genhash_comp_fn_t key_comp_func
genhash_val_fn_t key_val_func
genhash_free_fn_t key_free_func
genhash_copy_fn_t data_copy_func
genhash_free_fn_t data_free_func
genhash_copy_fn_t key_copy_func
#define fc__warn_unused_result