GME  13
Defines | Typedefs | Functions | Variables
Hash Tables

Defines

#define APR_HASH_KEY_STRING   (-1)

Typedefs

typedef struct apr_hash_t apr_hash_t
typedef struct apr_hash_index_t apr_hash_index_t
typedef unsigned int(* apr_hashfunc_t )(const char *key, apr_ssize_t *klen)
typedef intapr_hash_do_callback_fn_t )(void *rec, const void *key, apr_ssize_t klen, const void *value)

Functions

 APR_DECLARE_NONSTD (unsigned int) apr_hashfunc_default(const char *key
 APR_DECLARE (apr_hash_t *) apr_hash_make(apr_pool_t *pool)
 APR_DECLARE (void) apr_hash_set(apr_hash_t *ht
 APR_DECLARE (void *) apr_hash_get(apr_hash_t *ht
 APR_DECLARE (apr_hash_index_t *) apr_hash_first(apr_pool_t *p
 APR_DECLARE (unsigned int) apr_hash_count(apr_hash_t *ht)
 APR_DECLARE (int) apr_hash_do(apr_hash_do_callback_fn_t *comp
 APR_POOL_DECLARE_ACCESSOR (hash)

Variables

apr_ssize_t * klen
apr_hashfunc_t hash_func
const apr_hash_th
const void * key
const void apr_ssize_t const void * val
apr_hash_tht
const apr_hash_toverlay
const apr_hash_t const apr_hash_tbase
const apr_hash_th1
const apr_hash_t const apr_hash_th2
const apr_hash_t const
apr_hash_t void *(* 
merger )(apr_pool_t *p, const void *key, apr_ssize_t klen, const void *h1_val, const void *h2_val, const void *data)
const apr_hash_t const
apr_hash_t void *(*) const
void 
data )
void * rec

Define Documentation

#define APR_HASH_KEY_STRING   (-1)

When passing a key to apr_hash_set or apr_hash_get, this value can be passed to indicate a string-valued key, and have apr_hash compute the length automatically.

Remarks:
apr_hash will use strlen(key) for the length. The NUL terminator is not included in the hash value (why throw a constant in?). Since the hash table merely references the provided key (rather than copying it), apr_hash_this() will return the NUL-term'd key.

Definition at line 47 of file apr_hash.h.


Typedef Documentation

typedef int( apr_hash_do_callback_fn_t)(void *rec, const void *key, apr_ssize_t klen, const void *value)

Declaration prototype for the iterator callback function of apr_hash_do().

Parameters:
recThe data passed as the first argument to apr_hash_[v]do()
keyThe key from this iteration of the hash table
klenThe key length from this iteration of the hash table
valueThe value from this iteration of the hash table
Remarks:
Iteration continues while this callback function returns non-zero. To export the callback function for apr_hash_do() it must be declared in the _NONSTD convention.

Definition at line 231 of file apr_hash.h.

Abstract type for scanning hash tables.

Definition at line 57 of file apr_hash.h.

typedef struct apr_hash_t apr_hash_t

Abstract type for hash tables.

Definition at line 52 of file apr_hash.h.

typedef unsigned int(* apr_hashfunc_t)(const char *key, apr_ssize_t *klen)

Callback functions for calculating hash values.

Parameters:
keyThe key.
klenThe length of the key, or APR_HASH_KEY_STRING to use the string length. If APR_HASH_KEY_STRING then returns the actual key length.

Definition at line 65 of file apr_hash.h.


Function Documentation

Create a hash table.

Parameters:
poolThe pool to allocate the hash table out of
Returns:
The hash table just created

Create a hash table with a custom hash function

Parameters:
poolThe pool to allocate the hash table out of
hash_funcA custom hash function.
Returns:
The hash table just created

Make a copy of a hash table

Parameters:
poolThe pool from which to allocate the new hash table
hThe hash table to clone
Returns:
The hash table just created
Remarks:
Makes a shallow copy

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.

Parameters:
pThe pool to use for the new hash table
overlayThe table to add to the initial table
baseThe table that represents the initial values of the new table
Returns:
A new hash table containing all of the data from the two passed in

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.

Parameters:
pThe pool to use for the new hash table
h1The first of the tables to merge
h2The second of the tables to merge
mergerA callback function to merge values, or NULL to make values from h1 override values from h2 (same semantics as apr_hash_overlay())
dataClient data to pass to the merger function
Returns:
A new hash table containing all of the data from the two passed in
APR_DECLARE ( void  )

Associate a value with a key in a hash table.

Parameters:
htThe hash table
keyPointer to the key
klenLength of the key. Can be APR_HASH_KEY_STRING to use the string length.
valValue to associate with the key
Remarks:
If the value is NULL the hash entry is deleted.

Get the current entry's details from the iteration state.

Parameters:
hiThe iteration state
keyReturn pointer for the pointer to the key.
klenReturn pointer for the key length.
valReturn pointer for the associated value.
Remarks:
The return pointers should point to a variable that will be set to the corresponding data, or they may be NULL if the data isn't interesting.

Clear any key/value pairs in the hash table.

Parameters:
htThe hash table
APR_DECLARE ( void *  )

Look up the value associated with a key in a hash table.

Parameters:
htThe hash table
keyPointer to the key
klenLength of the key. Can be APR_HASH_KEY_STRING to use the string length.
Returns:
Returns NULL if the key is not present.

Start iterating over the entries in a hash table.

Parameters:
pThe pool to allocate the apr_hash_index_t iterator. If this pool is NULL, then an internal, non-thread-safe iterator is used.
htThe hash table
Returns:
The iteration state
Remarks:
There is no restriction on adding or deleting hash entries during an iteration (although the results may be unpredictable unless all you do is delete the current entry) and multiple iterations can be in progress at the same time.
Example:
 int sum_values(apr_pool_t *p, apr_hash_t *ht)
 {
     apr_hash_index_t *hi;
     void *val;
     int sum = 0;
     for (hi = apr_hash_first(p, ht); hi; hi = apr_hash_next(hi)) {
         apr_hash_this(hi, NULL, NULL, &val);
         sum += *(int *)val;
     }
     return sum;
 }

Continue iterating over the entries in a hash table.

Parameters:
hiThe iteration state
Returns:
a pointer to the updated iteration state. NULL if there are no more entries.
APR_DECLARE ( unsigned  int)

Get the number of key/value pairs in the hash table.

Parameters:
htThe hash table
Returns:
The number of key/value pairs in the hash table.

Iterate over a hash table running the provided function once for every element in the hash table. The

Parameters:
compfunction will be invoked for every element in the hash table.
compThe function to run
recThe data to pass as the first argument to the function
htThe hash table to iterate over
Returns:
FALSE if one of the comp() iterations returned zero; TRUE if all iterations returned non-zero
See also:
apr_hash_do_callback_fn_t
APR_DECLARE_NONSTD ( unsigned  int) const

The default hash function.

Get a pointer to the pool which the hash table was created in


Variable Documentation

char int base

Definition at line 192 of file apr_hash.h.

const apr_hash_t const apr_hash_t void*(*) const void data)

Definition at line 218 of file apr_hash.h.

const apr_hash_t* h

Definition at line 97 of file apr_hash.h.

const apr_hash_t* h1

Definition at line 210 of file apr_hash.h.

const apr_hash_t const apr_hash_t* h2

Definition at line 210 of file apr_hash.h.

Definition at line 87 of file apr_hash.h.

void const apr_hash_t * ht

Definition at line 147 of file apr_hash.h.

const void** key

Definition at line 107 of file apr_hash.h.

const void apr_ssize_t * klen

Definition at line 71 of file apr_hash.h.

const apr_hash_t const apr_hash_t void*(* merger)(apr_pool_t *p, const void *key, apr_ssize_t klen, const void *h1_val, const void *h2_val, const void *data)

Definition at line 212 of file apr_hash.h.

Definition at line 192 of file apr_hash.h.

void const apr_table_t void * rec

Definition at line 248 of file apr_hash.h.

const void apr_ssize_t void** val

Definition at line 107 of file apr_hash.h.