Defines | |
#define | AXIS2_HASH_KEY_STRING (unsigned int)(-1) |
Typedefs | |
typedef struct axutil_hash_t | axutil_hash_t |
typedef struct axutil_hash_index_t | axutil_hash_index_t |
typedef unsigned int(* | axutil_hashfunc_t )(const char *key, axis2_ssize_t *klen) |
Functions | |
unsigned int | axutil_hashfunc_default (const char *key, axis2_ssize_t *klen) |
AXIS2_EXTERN axutil_hash_t * | axutil_hash_make (const axutil_env_t *env) |
AXIS2_EXTERN axutil_hash_t * | axutil_hash_make_custom (const axutil_env_t *env, axutil_hashfunc_t hash_func) |
AXIS2_EXTERN axutil_hash_t * | axutil_hash_copy (const axutil_hash_t *ht, const axutil_env_t *env) |
AXIS2_EXTERN void | axutil_hash_set (axutil_hash_t *ht, const void *key, axis2_ssize_t klen, const void *val) |
AXIS2_EXTERN void * | axutil_hash_get (axutil_hash_t *ht, const void *key, axis2_ssize_t klen) |
AXIS2_EXTERN axutil_hash_index_t * | axutil_hash_first (axutil_hash_t *ht, const axutil_env_t *env) |
AXIS2_EXTERN axutil_hash_index_t * | axutil_hash_next (const axutil_env_t *env, axutil_hash_index_t *hi) |
AXIS2_EXTERN void | axutil_hash_this (axutil_hash_index_t *hi, const void **key, axis2_ssize_t *klen, void **val) |
AXIS2_EXTERN unsigned int | axutil_hash_count (axutil_hash_t *ht) |
AXIS2_EXTERN axutil_hash_t * | axutil_hash_overlay (const axutil_hash_t *overlay, const axutil_env_t *env, const axutil_hash_t *base) |
AXIS2_EXTERN axutil_hash_t * | axutil_hash_merge (const axutil_hash_t *h1, const axutil_env_t *env, const axutil_hash_t *h2, void *(*merger)(const axutil_env_t *env, const void *key, axis2_ssize_t klen, const void *h1_val, const void *h2_val, const void *data), const void *data) |
AXIS2_EXTERN axis2_bool_t | axutil_hash_contains_key (axutil_hash_t *ht, const axutil_env_t *env, const axis2_char_t *key) |
AXIS2_EXTERN void | axutil_hash_free (axutil_hash_t *ht, const axutil_env_t *env) |
AXIS2_EXTERN void | axutil_hash_free_void_arg (void *ht_void, const axutil_env_t *env) |
AXIS2_EXTERN void | axutil_hash_set_env (axutil_hash_t *ht, const axutil_env_t *env) |
#define AXIS2_HASH_KEY_STRING (unsigned int)(-1) |
When passing a key to axutil_hash_set or axutil_hash_get, this value can be passed to indicate a string-valued key, and have axutil_hash compute the length automatically.
typedef struct axutil_hash_index_t axutil_hash_index_t |
Abstract type for scanning hash tables.
typedef struct axutil_hash_t axutil_hash_t |
Abstract type for hash tables.
typedef unsigned int( * axutil_hashfunc_t)(const char *key, axis2_ssize_t *klen) |
Callback functions for calculating hash values.
key | The key. | |
klen | The length of the key, or AXIS2_HASH_KEY_STRING to use the string length. If AXIS2_HASH_KEY_STRING then returns the actual key length. |
AXIS2_EXTERN axis2_bool_t axutil_hash_contains_key | ( | axutil_hash_t * | ht, | |
const axutil_env_t * | env, | |||
const axis2_char_t * | key | |||
) |
Query whether the hash table provided as parameter contains the key provided as parameter.
ht | hash table to be queried for key |
AXIS2_EXTERN axutil_hash_t* axutil_hash_copy | ( | const axutil_hash_t * | ht, | |
const axutil_env_t * | env | |||
) |
Make a copy of a hash table
ht | The hash table to clone | |
env | The environment from which to allocate the new hash table |
AXIS2_EXTERN unsigned int axutil_hash_count | ( | axutil_hash_t * | ht | ) |
Get the number of key/value pairs in the hash table.
ht | The hash table |
AXIS2_EXTERN axutil_hash_index_t* axutil_hash_first | ( | axutil_hash_t * | ht, | |
const axutil_env_t * | env | |||
) |
int sum_values(const axutil_env_t *env, axutil_hash_t *ht) { axutil_hash_index_t *hi; void *val; int sum = 0; for (hi = axutil_hash_first(p, ht); hi; hi = axutil_hash_next(p, hi)) { axutil_hash_this(hi, NULL, NULL, &val); sum += *(int *)val; } return sum; }
AXIS2_EXTERN void axutil_hash_free | ( | axutil_hash_t * | ht, | |
const axutil_env_t * | env | |||
) |
ht | hash table to be freed | |
env | The environment to use for hash table |
AXIS2_EXTERN void axutil_hash_free_void_arg | ( | void * | ht_void, | |
const axutil_env_t * | env | |||
) |
Free a hash table with hash table given as void
ht | hash table to be freed as a void * | |
env | The environment to use for hash table |
AXIS2_EXTERN void* axutil_hash_get | ( | axutil_hash_t * | ht, | |
const void * | key, | |||
axis2_ssize_t | klen | |||
) |
Look up the value associated with a key in a hash table.
ht | The hash table | |
key | Pointer to the key | |
klen | Length of the key. Can be AXIS2_HASH_KEY_STRING to use the string length. |
AXIS2_EXTERN axutil_hash_t* axutil_hash_make | ( | const axutil_env_t * | env | ) |
Create a hash table.
env | The environment to allocate the hash table out of |
AXIS2_EXTERN axutil_hash_t* axutil_hash_make_custom | ( | const axutil_env_t * | env, | |
axutil_hashfunc_t | hash_func | |||
) |
Create a hash table with a custom hash function
env | The environment to allocate the hash table out of | |
hash_func | A custom hash function. |
AXIS2_EXTERN axutil_hash_t* axutil_hash_merge | ( | const axutil_hash_t * | h1, | |
const axutil_env_t * | env, | |||
const axutil_hash_t * | h2, | |||
void *(*)(const axutil_env_t *env, const void *key, axis2_ssize_t klen, const void *h1_val, const void *h2_val, const void *data) | merger, | |||
const void * | data | |||
) |
Merge two hash tables into one new hash table. If the same key is present in both tables, call the supplied merge function to produce a merged value for the key in the new table. Both hash tables must use the same hash function.
h1 | The first of the tables to merge | |
p | The environment to use for the new hash table | |
h2 | The second of the tables to merge | |
merger | A callback function to merge values, or NULL to make values from h1 override values from h2 (same semantics as axutil_hash_overlay()) | |
data | Client data to pass to the merger function |
AXIS2_EXTERN axutil_hash_index_t* axutil_hash_next | ( | const axutil_env_t * | env, | |
axutil_hash_index_t * | hi | |||
) |
Continue iterating over the entries in a hash table.
hi | The iteration state |
AXIS2_EXTERN axutil_hash_t* axutil_hash_overlay | ( | const axutil_hash_t * | overlay, | |
const axutil_env_t * | env, | |||
const axutil_hash_t * | base | |||
) |
Merge two hash tables into one new hash table. The values of the overlay hash override the values of the base if both have the same key. Both hash tables must use the same hash function.
overlay | The table to add to the initial table | |
p | The environment to use for the new hash table | |
base | The table that represents the initial values of the new table |
AXIS2_EXTERN void axutil_hash_set | ( | axutil_hash_t * | ht, | |
const void * | key, | |||
axis2_ssize_t | klen, | |||
const void * | val | |||
) |
Associate a value with a key in a hash table.
ht | The hash table | |
key | Pointer to the key | |
klen | Length of the key. Can be AXIS2_HASH_KEY_STRING to use the string length. | |
val | Value to associate with the key |
AXIS2_EXTERN void axutil_hash_this | ( | axutil_hash_index_t * | hi, | |
const void ** | key, | |||
axis2_ssize_t * | klen, | |||
void ** | val | |||
) |
Get the current entry's details from the iteration state.
hi | The iteration state | |
key | Return pointer for the pointer to the key. | |
klen | Return pointer for the key length. | |
val | Return pointer for the associated value. |
unsigned int axutil_hashfunc_default | ( | const char * | key, | |
axis2_ssize_t * | klen | |||
) |
The default hash function.