XROAD
xroad_map.h
Go to the documentation of this file.
1 #pragma once
2 
8 #include <stdlib.h>
9 #include "xroad_common_fwd.h"
10 #include "xroad_common_types.h"
11 
12 
13 #ifdef __cplusplus
14 extern "C"
15 {
16 #endif
17 
21 typedef int32_t (*xroad_map_cmp_func_t)(const void*, uint32_t, const void*, uint32_t);
22 
26 typedef void (*xroad_map_free_func_t)(void*, uint32_t);
27 
31 typedef xroad_map_entry_t* (*xroad_map_iter_func_t)(xroad_map_entry_t*);
32 
36 typedef struct
37 {
38  xroad_map_entry_t* entry;
39  xroad_errno_t result;
41 
45 typedef struct
46 {
47  xroad_mem_pool_t* pool;
51 
60 
61 #define xroad_map_create(...) \
62 ({ \
63  xroad_map_args_t args = {__VA_ARGS__}; \
64  xroad_map_create_ex(args.pool, args.cmp, args.dtor); \
65 })
66 
72 
73 #define __xroad_map_dtor__ __dtor__(xroad_map_destructor)
74 void xroad_map_destructor(void* map);
75 
81 
93  xroad_map_t* map, const void* key, uint32_t key_size, const void* value, uint32_t value_size);
94 
102 xroad_map_entry_t* xroad_map_find(xroad_map_t* map, const void* key, uint32_t size);
103 
111 xroad_map_entry_t* xroad_map_lower_bound(xroad_map_t* map, const void* key, uint32_t size);
112 
120 xroad_map_entry_t* xroad_map_upper_bound(xroad_map_t* map, const void* key, uint32_t size);
121 
129 xroad_errno_t xroad_map_delete(xroad_map_t* map, const void* key, uint32_t size);
130 
137 xroad_errno_t xroad_map_entry_delete(xroad_map_t* map, xroad_map_entry_t* entry);
138 
144 
150 
155 xroad_map_entry_t* xroad_map_get_max(xroad_map_t* map);
156 
161 xroad_map_entry_t* xroad_map_get_min(xroad_map_t* map);
162 
168 xroad_map_entry_t* xroad_map_entry_get_next(xroad_map_entry_t* e);
169 
175 xroad_map_entry_t* xroad_map_entry_get_prev(xroad_map_entry_t* e);
176 
182 uint32_t xroad_map_entry_get_value_size(const xroad_map_entry_t* entry);
183 
189 void* xroad_map_entry_get_value(xroad_map_entry_t* entry);
190 
199 xroad_map_entry_t* xroad_map_entry_set_value(
200  xroad_map_entry_t* entry, const void* value, uint32_t value_size, xroad_map_free_func_t dtor);
201 
207 uint32_t xroad_map_entry_get_key_size(const xroad_map_entry_t* entry);
208 
214 void* xroad_map_entry_get_key(xroad_map_entry_t* entry);
221 
228 
229 #ifdef __cplusplus
230 }
231 #endif
Definition: xroad_map.h:46
Definition: xroad_map.h:37
xroad_map_entry_t * entry
inserted or existing entry
Definition: xroad_map.h:38
xroad_errno_t result
result of insertion
Definition: xroad_map.h:39
struct xroad_list_s xroad_list_t
see common/xroad_list.h for deaails
Definition: xroad_common_fwd.h:24
struct xroad_map_s xroad_map_t
see common/xroad_map.h for details
Definition: xroad_common_fwd.h:56
xroad_map_t * xroad_map_create_ex(xroad_mem_pool_t *pool, xroad_map_cmp_func_t cmp, xroad_map_free_func_t dtor)
uint32_t xroad_map_entry_get_key_size(const xroad_map_entry_t *entry)
void * xroad_map_entry_get_value(xroad_map_entry_t *entry)
xroad_map_entry_t * xroad_map_upper_bound(xroad_map_t *map, const void *key, uint32_t size)
void(* xroad_map_free_func_t)(void *, uint32_t)
Definition: xroad_map.h:26
int32_t(* xroad_map_cmp_func_t)(const void *, uint32_t, const void *, uint32_t)
Definition: xroad_map.h:21
xroad_map_entry_t * xroad_map_find(xroad_map_t *map, const void *key, uint32_t size)
xroad_list_t * xroad_map_to_list(xroad_map_t *map)
xroad_map_result_t xroad_map_insert(xroad_map_t *map, const void *key, uint32_t key_size, const void *value, uint32_t value_size)
void xroad_map_delete_min(xroad_map_t *map)
void * xroad_map_entry_get_key(xroad_map_entry_t *entry)
xroad_map_entry_t * xroad_map_get_min(xroad_map_t *map)
uint32_t xroad_map_entry_get_value_size(const xroad_map_entry_t *entry)
void xroad_map_clear(xroad_map_t *map)
xroad_map_entry_t * xroad_map_entry_set_value(xroad_map_entry_t *entry, const void *value, uint32_t value_size, xroad_map_free_func_t dtor)
void xroad_map_destroy(xroad_map_t *map)
xroad_errno_t xroad_map_entry_delete(xroad_map_t *map, xroad_map_entry_t *entry)
xroad_map_entry_t * xroad_map_entry_get_prev(xroad_map_entry_t *e)
xroad_map_entry_t * xroad_map_get_max(xroad_map_t *map)
xroad_map_entry_t * xroad_map_lower_bound(xroad_map_t *map, const void *key, uint32_t size)
xroad_errno_t xroad_map_delete(xroad_map_t *map, const void *key, uint32_t size)
void xroad_map_delete_max(xroad_map_t *map)
uint32_t xroad_map_get_size(xroad_map_t *map)
xroad_map_entry_t * xroad_map_entry_get_next(xroad_map_entry_t *e)