XROAD
xroad_map.h File Reference
#include <stdlib.h>
#include "xroad_common_fwd.h"
#include "xroad_common_types.h"
Include dependency graph for xroad_map.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  xroad_map_result_t
 
struct  xroad_map_args_t
 

Macros

#define xroad_map_create(...)
 
#define __xroad_map_dtor__   __dtor__(xroad_map_destructor)
 

Typedefs

typedef int32_t(* xroad_map_cmp_func_t) (const void *, uint32_t, const void *, uint32_t)
 
typedef void(* xroad_map_free_func_t) (void *, uint32_t)
 
typedef xroad_map_entry_t *(* xroad_map_iter_func_t) (xroad_map_entry_t *)
 

Functions

xroad_map_txroad_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_txroad_map_to_list (xroad_map_t *map)
 

Detailed Description

Macro Definition Documentation

◆ 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); \
})

Typedef Documentation

◆ xroad_map_cmp_func_t

typedef int32_t(* xroad_map_cmp_func_t) (const void *, uint32_t, const void *, uint32_t)

equal function type

◆ xroad_map_free_func_t

typedef void(* xroad_map_free_func_t) (void *, uint32_t)

map entry free function

◆ xroad_map_iter_func_t

typedef xroad_map_entry_t*(* xroad_map_iter_func_t) (xroad_map_entry_t *)

map iterator function

Function Documentation

◆ xroad_map_clear()

void xroad_map_clear ( xroad_map_t map)

delete all entries from map

Parameters
[in]map- map with deleted entry

◆ xroad_map_create_ex()

xroad_map_t* xroad_map_create_ex ( xroad_mem_pool_t *  pool,
xroad_map_cmp_func_t  cmp,
xroad_map_free_func_t  dtor 
)

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()

void xroad_map_delete_max ( xroad_map_t map)

deletes max key entry

Parameters
[in]map- instance of map

◆ xroad_map_delete_min()

void xroad_map_delete_min ( xroad_map_t map)

deletes minkey entry

Parameters
[in]map- instance of map

◆ xroad_map_destroy()

void xroad_map_destroy ( xroad_map_t map)

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
[in]e- map entry
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
[in]e- map entry
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
[in]map- map with enries

◆ xroad_map_get_min()

xroad_map_entry_t* xroad_map_get_min ( xroad_map_t map)

return min entry from map

Parameters
[in]map- map with enries

◆ xroad_map_get_size()

uint32_t xroad_map_get_size ( xroad_map_t map)

return number of entries in map

Parameters
[in]map- map table
Returns
number of entries in map

◆ xroad_map_insert()

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 
)

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()

xroad_list_t* xroad_map_to_list ( xroad_map_t map)

convert map structure to sorted list

Parameters
[in]map- map to convert
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