#include "xroad_common_fwd.h"
#include "xroad_common_types.h"
#include <stdlib.h>
Go to the source code of this file.
|
#define | xroad_hash_create(...) |
|
#define | __xroad_hash_dtor__ __dtor__(xroad_hash_destructor) |
|
|
xroad_hash_t * | xroad_hash_create_ex (uint32_t size, xroad_hash_func_t hash_func, xroad_hash_equal_func_t equal_func, xroad_hash_free_func_t free_func, xroad_mem_pool_t *pool) |
|
void | xroad_hash_destroy (xroad_hash_t *hash) |
|
void | xroad_hash_destructor (void *hash) |
|
xroad_hash_ins_res_t | xroad_hash_insert (xroad_hash_t *hash, const void *key, uint32_t key_size, const void *value, uint32_t value_size) |
|
xroad_hash_entry_t * | xroad_hash_find (xroad_hash_t *hash, const void *key, uint32_t key_size) |
|
void | xroad_hash_clear (xroad_hash_t *hash) |
|
uint32_t | xroad_hash_entry_get_value_size (const xroad_hash_entry_t *entry) |
|
void * | xroad_hash_entry_get_value (xroad_hash_entry_t *entry) |
|
xroad_hash_entry_t * | xroad_hash_entry_set_value (xroad_hash_entry_t *entry, const void *value, uint32_t value_size, xroad_hash_free_func_t free_func) |
|
uint32_t | xroad_hash_entry_get_key_size (const xroad_hash_entry_t *entry) |
|
void * | xroad_hash_entry_get_key (xroad_hash_entry_t *entry) |
|
xroad_errno_t | xroad_hash_entry_delete (xroad_hash_entry_t *entry, xroad_hash_free_func_t free_func) |
|
xroad_hash_entry_t * | xroad_hash_entry_delete_next (xroad_hash_entry_t *entry, xroad_hash_free_func_t free_func) |
|
xroad_hash_entry_t * | xroad_hash_get_first (xroad_hash_t *hash) |
|
xroad_hash_entry_t * | xroad_hash_get_next (xroad_hash_entry_t *entry) |
|
xroad_errno_t | xroad_hash_delete (xroad_hash_t *hash, const void *key, uint32_t key_size, xroad_hash_free_func_t free_func) |
|
uint32_t | xroad_hash_get_size (xroad_hash_t *hash) |
|
xroad_list_t * | xroad_hash_to_list (xroad_hash_t *hash) |
|
◆ xroad_hash_create
#define xroad_hash_create |
( |
|
... | ) |
|
Value:({ \
xroad_hash_va_args_t args = {__VA_ARGS__}; \
xroad_hash_create_ex(args.size, args.hash, args.equal, args.dtor, args.pool); \
})
◆ xroad_hash_equal_func_t
typedef int32_t(* xroad_hash_equal_func_t) (const void *, uint32_t, const void *, uint32_t) |
◆ xroad_hash_free_func_t
typedef void(* xroad_hash_free_func_t) (void *, uint32_t, void *, uint32_t) |
◆ xroad_hash_func_t
typedef uint32_t(* xroad_hash_func_t) (const uint8_t *, uint32_t) |
◆ xroad_hash_clear()
delete all entries from hash table
- Parameters
-
[in] | hash | - hash with deleted entry |
◆ xroad_hash_create_ex()
create new hash table
- Parameters
-
[in] | size | - initial size of hash table |
[in] | hash_func | - hash function, if NULL - default function is used |
[in] | equal_func | - equality function, used for entry search. if NULL - default function is used |
[in] | free_func | - destructor function. Can be NULL |
[in] | pool | - memory pool if any. Can be NULL, so libc malloc/calloc will be used |
- Returns
- pointer to new hash table, NULL - error
◆ xroad_hash_delete()
delete entry from hash table
- Parameters
-
[in] | hash | - hash table |
[in] | key | - key to delete |
[in] | key_size | - size of key |
[in] | free_func | - func for destroying data, if NULL - no destroy performed |
- Returns
- XROAD_OK - found&deleted, XROAD_ERROR_NOT_FOUND - entry with key not found
◆ xroad_hash_destroy()
delete hash table and free all resources
- Parameters
-
[in] | hash | - hash table to delete. If hash is NULL, nothing happened |
◆ xroad_hash_entry_delete()
delete entry and free all allocated resources
- Parameters
-
[in] | entry | - entry to delete |
[in] | free_func | - func for destroying data, if NULL - no destroy performed |
- Returns
- XROAD_OK - deleted
◆ xroad_hash_entry_delete_next()
xroad_hash_entry_t* xroad_hash_entry_delete_next |
( |
xroad_hash_entry_t * |
entry, |
|
|
xroad_hash_free_func_t |
free_func |
|
) |
| |
delete entry, free all allocated resources and return next entry, if any
- Parameters
-
[in] | entry | - entry to delete |
[in] | free_func | - func for destroying data, if NULL - no destroy performed |
- Returns
- next entry, if any
◆ xroad_hash_entry_get_key()
void* xroad_hash_entry_get_key |
( |
xroad_hash_entry_t * |
entry | ) |
|
return entry key
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry value
◆ xroad_hash_entry_get_key_size()
uint32_t xroad_hash_entry_get_key_size |
( |
const xroad_hash_entry_t * |
entry | ) |
|
return entry key size
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry size
◆ xroad_hash_entry_get_value()
void* xroad_hash_entry_get_value |
( |
xroad_hash_entry_t * |
entry | ) |
|
return entry value
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry value
◆ xroad_hash_entry_get_value_size()
uint32_t xroad_hash_entry_get_value_size |
( |
const xroad_hash_entry_t * |
entry | ) |
|
return entry value size
- Parameters
-
[in] | entry | - entry to explore |
- Returns
- entry size
◆ xroad_hash_entry_set_value()
xroad_hash_entry_t* xroad_hash_entry_set_value |
( |
xroad_hash_entry_t * |
entry, |
|
|
const void * |
value, |
|
|
uint32_t |
value_size, |
|
|
xroad_hash_free_func_t |
free_func |
|
) |
| |
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_hash_find()
xroad_hash_entry_t* xroad_hash_find |
( |
xroad_hash_t * |
hash, |
|
|
const void * |
key, |
|
|
uint32_t |
key_size |
|
) |
| |
find entry in hash table
- Parameters
-
[in] | hash | - instance of hash table |
[in] | key | - key to find |
[in] | key_size | - size of key |
- Returns
- entry or NULL if not found
◆ xroad_hash_get_first()
xroad_hash_entry_t* xroad_hash_get_first |
( |
xroad_hash_t * |
hash | ) |
|
return first entry from hash
- Parameters
-
[in] | hash | - hash with enries |
◆ xroad_hash_get_next()
xroad_hash_entry_t* xroad_hash_get_next |
( |
xroad_hash_entry_t * |
entry | ) |
|
return next entry from hash
- Parameters
-
[in] | entry | - first entry, NULL - no more entries |
◆ xroad_hash_get_size()
return number of entries in hash
- Parameters
-
- Returns
- number of entries in hash
◆ xroad_hash_insert()
insert new entry into table
- Parameters
-
[in] | hash | - instance of hash table |
[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_hash_to_list()
convert hash structure to list
- Parameters
-
[in] | hash | - hash to convert |
- Returns
- new list structure