#include <stdlib.h>
#include "xroad_common_fwd.h"
#include "xroad_common_types.h"
Go to the source code of this file.
|
#define | xroad_map_create(...) |
|
#define | __xroad_map_dtor__ __dtor__(xroad_map_destructor) |
|
|
xroad_map_t * | xroad_map_create_ex (xroad_mem_pool_t *pool, xroad_map_cmp_func_t cmp, xroad_map_free_func_t dtor) |
|
void | xroad_map_destroy (xroad_map_t *map) |
|
void | xroad_map_destructor (void *map) |
|
void | xroad_map_clear (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) |
|
xroad_map_entry_t * | xroad_map_find (xroad_map_t *map, const void *key, uint32_t size) |
|
xroad_map_entry_t * | xroad_map_lower_bound (xroad_map_t *map, const void *key, uint32_t size) |
|
xroad_map_entry_t * | xroad_map_upper_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) |
|
xroad_errno_t | xroad_map_entry_delete (xroad_map_t *map, xroad_map_entry_t *entry) |
|
void | xroad_map_delete_max (xroad_map_t *map) |
|
void | xroad_map_delete_min (xroad_map_t *map) |
|
xroad_map_entry_t * | xroad_map_get_max (xroad_map_t *map) |
|
xroad_map_entry_t * | xroad_map_get_min (xroad_map_t *map) |
|
xroad_map_entry_t * | xroad_map_entry_get_next (xroad_map_entry_t *e) |
|
xroad_map_entry_t * | xroad_map_entry_get_prev (xroad_map_entry_t *e) |
|
uint32_t | xroad_map_entry_get_value_size (const xroad_map_entry_t *entry) |
|
void * | xroad_map_entry_get_value (xroad_map_entry_t *entry) |
|
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) |
|
uint32_t | xroad_map_entry_get_key_size (const xroad_map_entry_t *entry) |
|
void * | xroad_map_entry_get_key (xroad_map_entry_t *entry) |
|
uint32_t | xroad_map_get_size (xroad_map_t *map) |
|
xroad_list_t * | xroad_map_to_list (xroad_map_t *map) |
|
◆ xroad_map_create
#define xroad_map_create |
( |
|
... | ) |
|
Value:({ \
xroad_map_args_t args = {__VA_ARGS__}; \
xroad_map_create_ex(args.pool, args.cmp, args.dtor); \
})
◆ xroad_map_cmp_func_t
typedef int32_t(* xroad_map_cmp_func_t) (const void *, uint32_t, const void *, uint32_t) |
◆ xroad_map_free_func_t
typedef void(* xroad_map_free_func_t) (void *, uint32_t) |
◆ xroad_map_iter_func_t
typedef xroad_map_entry_t*(* xroad_map_iter_func_t) (xroad_map_entry_t *) |
◆ xroad_map_clear()
delete all entries from map
- Parameters
-
[in] | map | - map with deleted entry |
◆ xroad_map_create_ex()
create new map
- Parameters
-
[in] | pool | - memory pool, if any |
[in] | cmp | - comparer function to compare keys |
[in] | dtor | - free function to destroy value |
- Returns
- pointer to new map, NULL - error
◆ xroad_map_delete()
xroad_errno_t xroad_map_delete |
( |
xroad_map_t * |
map, |
|
|
const void * |
key, |
|
|
uint32_t |
size |
|
) |
| |
delete entry and free all allocated resources
- Parameters
-
[in] | map | - instance of map |
[in] | key | - key to find |
[in] | key_size | - size of key |
- Returns
- XROAD_OK if entry was deleted otherwise XROAD_ERROR_NOT_FOUND
◆ xroad_map_delete_max()
deletes max key entry
- Parameters
-
◆ xroad_map_delete_min()
deletes minkey entry
- Parameters
-
◆ xroad_map_destroy()
delete map and free all resources
- Parameters
-
[in] | map | - map to delete. If hash is NULL, nothing happened |
◆ xroad_map_entry_delete()
xroad_errno_t xroad_map_entry_delete |
( |
xroad_map_t * |
map, |
|
|
xroad_map_entry_t * |
entry |
|
) |
| |
delete entry and free all allocated resources
- Parameters
-
[in] | map | - instance of map |
[in] | entry | - entry to delete |
- Returns
- XROAD_OK if entry was deleted otherwise XROAD_ERROR_NOT_FOUND
◆ xroad_map_entry_get_key()
void* xroad_map_entry_get_key |
( |
xroad_map_entry_t * |
entry | ) |
|
return entry key
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry value
◆ xroad_map_entry_get_key_size()
uint32_t xroad_map_entry_get_key_size |
( |
const xroad_map_entry_t * |
entry | ) |
|
return entry key size
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry size
◆ xroad_map_entry_get_next()
xroad_map_entry_t* xroad_map_entry_get_next |
( |
xroad_map_entry_t * |
e | ) |
|
gets next map entry
- Parameters
-
- Returns
- xroad_map_entry_t if exists otherwise NULL
◆ xroad_map_entry_get_prev()
xroad_map_entry_t* xroad_map_entry_get_prev |
( |
xroad_map_entry_t * |
e | ) |
|
gets previous map entry
- Parameters
-
- Returns
- xroad_map_entry_t if exists otherwise NULL
◆ xroad_map_entry_get_value()
void* xroad_map_entry_get_value |
( |
xroad_map_entry_t * |
entry | ) |
|
return entry value
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry value
◆ xroad_map_entry_get_value_size()
uint32_t xroad_map_entry_get_value_size |
( |
const xroad_map_entry_t * |
entry | ) |
|
return entry value size
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry size
◆ xroad_map_entry_set_value()
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 |
|
) |
| |
set entry value
- Parameters
-
[in] | entry | - entry to set |
[in] | value | - new value to set |
[in] | value_size | - size of new value |
[in] | free_func | - func for destroying previous value, if NULL - no destroy performed |
- Returns
- entry. The addess may be changed, so use return value instead of param one
◆ xroad_map_find()
xroad_map_entry_t* xroad_map_find |
( |
xroad_map_t * |
map, |
|
|
const void * |
key, |
|
|
uint32_t |
size |
|
) |
| |
find entry in map
- Parameters
-
[in] | map | - instance of map |
[in] | key | - key to find |
[in] | key_size | - size of key |
- Returns
- entry or NULL if not found
◆ xroad_map_get_max()
xroad_map_entry_t* xroad_map_get_max |
( |
xroad_map_t * |
map | ) |
|
return max entry from map
- Parameters
-
◆ xroad_map_get_min()
xroad_map_entry_t* xroad_map_get_min |
( |
xroad_map_t * |
map | ) |
|
return min entry from map
- Parameters
-
◆ xroad_map_get_size()
return number of entries in map
- Parameters
-
- Returns
- number of entries in map
◆ xroad_map_insert()
insert new entry into table map
- Parameters
-
[in] | map | - instance of map |
[in] | key | - pointer to key data |
[in] | key_size | - size of key data |
[in] | value | - pointer to data |
[in] | value_size | - size of data |
- Returns
- result of insertion. entry - result of insertion or existing entry, errno - XROAD_OK - inserted, XROAD_ERROR_ALREADY_EXISTS - entry with the same key already exists
◆ xroad_map_lower_bound()
xroad_map_entry_t* xroad_map_lower_bound |
( |
xroad_map_t * |
map, |
|
|
const void * |
key, |
|
|
uint32_t |
size |
|
) |
| |
returns an iterator to the first element not less than the given key
- Parameters
-
[in] | map | - instance of map |
[in] | key | - key to find |
[in] | size | - size of key |
- Returns
- entry or NULL if not found
◆ xroad_map_to_list()
convert map structure to sorted list
- Parameters
-
- Returns
- new list structure
◆ xroad_map_upper_bound()
xroad_map_entry_t* xroad_map_upper_bound |
( |
xroad_map_t * |
map, |
|
|
const void * |
key, |
|
|
uint32_t |
size |
|
) |
| |
returns an iterator to the first element greater than the given key
- Parameters
-
[in] | map | - instance of map |
[in] | key | - key to find |
[in] | size | - size of key |
- Returns
- entry or NULL if not found