23 #define XROAD_HASHMAP_ENTRY_STRUCT(key_type, value_type) struct { int8_t info; key_type key; value_type value; int8_t last_member; }
24 #define XROAD_HASHMAP_ENTRY_KEY_OFFSET(key_type, value_type) offsetof(XROAD_HASHMAP_ENTRY_STRUCT(key_type, value_type), key)
25 #define XROAD_HASHMAP_ENTRY_VALUE_OFFSET(key_type, value_type) offsetof(XROAD_HASHMAP_ENTRY_STRUCT(key_type, value_type), value)
26 #define XROAD_HASHMAP_ENTRY_SIZE(key_type, value_type) offsetof(XROAD_HASHMAP_ENTRY_STRUCT(key_type, value_type), last_member)
50 int32_t xroad_hashmap_equal_func_cstr(
const void*,
const void*, uint32_t);
51 void xroad_hashmap_free_func_cstr(
void*);
60 int32_t xroad_hashmap_equal_func_xroad_str(
const void*,
const void*, uint32_t);
61 void xroad_hashmap_free_func_xroad_str(
void*);
68 uint32_t initial_size;
73 xroad_mem_pool_t* pool;
101 uint32_t sizeof_value,
102 uint32_t sizeof_entry,
104 uint32_t value_offset,
105 uint32_t initiad_size,
110 xroad_mem_pool_t* pool);
112 #define xroad_hashmap_create(key_type, value_type, ...) \
114 xroad_hashmap_va_args_t args = {__VA_ARGS__}; \
115 xroad_hashmap_create_ex(sizeof(key_type), sizeof(value_type), \
116 XROAD_HASHMAP_ENTRY_SIZE(key_type, value_type), \
117 XROAD_HASHMAP_ENTRY_KEY_OFFSET(key_type, value_type), \
118 XROAD_HASHMAP_ENTRY_VALUE_OFFSET(key_type, value_type), \
119 args.initial_size, args.hash, args.equal, \
120 args.key_dtor, args.value_dtor, args.pool); \
129 #define __xroad_hashmap_dtor__ __dtor__(xroad_hashmap_destructor)
130 void xroad_hashmap_destructor(
void* hashmap_ptr);
Definition: xroad_hashmap.h:80
xroad_hashmap_entry_t * entry
inserted or existing entry
Definition: xroad_hashmap.h:81
xroad_errno_t result
result of insertion
Definition: xroad_hashmap.h:82
Definition: xroad_hashmap.h:67
struct xroad_list_s xroad_list_t
see common/xroad_list.h for deaails
Definition: xroad_common_fwd.h:24
struct xroad_hashmap_s xroad_hashmap_t
see common/xroad_hash.h for details
Definition: xroad_common_fwd.h:19
void xroad_hashmap_entry_set_value(xroad_hashmap_t *hashmap, xroad_hashmap_entry_t *entry, const void *value, bool free_resources)
xroad_hashmap_insert_result_t xroad_hashmap_insert(xroad_hashmap_t *hashmap, const void *key, const void *value)
uint32_t xroad_hashmap_get_key_size(const xroad_hashmap_t *hashmap)
void * xroad_hashmap_entry_get_value(xroad_hashmap_t *hashmap, xroad_hashmap_entry_t *entry)
xroad_list_t * xroad_hashmap_keys_to_list(xroad_hashmap_t *hashmap)
uint32_t xroad_hashmap_hash_func_xroad_str(const void *, uint32_t)
xroad_hashmap_entry_t * xroad_hashmap_entry_get_next(xroad_hashmap_t *hashmap, xroad_hashmap_entry_t *entry)
void * xroad_hashmap_entry_get_key(xroad_hashmap_t *hashmap, xroad_hashmap_entry_t *entry)
void(* xroad_hashmap_free_func_t)(void *)
Definition: xroad_hashmap.h:41
uint32_t xroad_hashmap_get_size(xroad_hashmap_t *hashmap)
uint32_t(* xroad_hashmap_hash_func_t)(const void *, uint32_t)
Definition: xroad_hashmap.h:31
xroad_errno_t xroad_hashmap_delete(xroad_hashmap_t *hashmap, const void *key, bool free_resources)
uint32_t xroad_hashmap_get_value_size(const xroad_hashmap_t *hashmap)
void xroad_hashmap_destroy(xroad_hashmap_t *hashmap)
int32_t(* xroad_hashmap_equal_func_t)(const void *, const void *, uint32_t)
Definition: xroad_hashmap.h:36
void xroad_hashmap_clear(xroad_hashmap_t *hashmap)
xroad_list_t * xroad_hashmap_values_to_list(xroad_hashmap_t *hashmap)
uint32_t xroad_hashmap_hash_func_cstr(const void *, uint32_t)
void xroad_hashmap_entry_delete(xroad_hashmap_t *hashmap, xroad_hashmap_entry_t *entry, bool free_resources)
xroad_hashmap_entry_t * xroad_hashmap_find(xroad_hashmap_t *hashmap, const void *key)
xroad_hashmap_entry_t * xroad_hashmap_entry_delete_and_get_next(xroad_hashmap_t *hashmap, xroad_hashmap_entry_t *entry, bool free_resources)
xroad_hashmap_t * xroad_hashmap_create_ex(uint32_t sizeof_key, uint32_t sizeof_value, uint32_t sizeof_entry, uint32_t key_offset, uint32_t value_offset, uint32_t initiad_size, xroad_hashmap_hash_func_t hash_func, xroad_hashmap_equal_func_t equal_func, xroad_hashmap_free_func_t key_free_func, xroad_hashmap_free_func_t value_free_func, xroad_mem_pool_t *pool)
xroad_hashmap_entry_t * xroad_hashmap_get_first(xroad_hashmap_t *hashmap)
void xroad_hashmap_reserve(xroad_hashmap_t *hashmap, uint32_t size)