Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

Hash Tables
[Apache Portability Runtime library]


Defines

#define APR_HASH_KEY_STRING   (-1)

Typedefs

typedef apr_hash_t apr_hash_t
typedef apr_hash_index_t apr_hash_index_t

Functions

apr_hash_tapr_hash_make (apr_pool_t *pool)
apr_hash_tapr_hash_copy (apr_pool_t *pool, const apr_hash_t *h)
void apr_hash_set (apr_hash_t *ht, const void *key, apr_ssize_t klen, const void *val)
void * apr_hash_get (apr_hash_t *ht, const void *key, apr_ssize_t klen)
apr_hash_index_tapr_hash_first (apr_pool_t *p, apr_hash_t *ht)
apr_hash_index_tapr_hash_next (apr_hash_index_t *hi)
void apr_hash_this (apr_hash_index_t *hi, const void **key, apr_ssize_t *klen, void **val)
unsigned int apr_hash_count (apr_hash_t *ht)
apr_hash_tapr_hash_overlay (apr_pool_t *p, const apr_hash_t *overlay, const apr_hash_t *base)
apr_hash_tapr_hash_merge (apr_pool_t *p, const apr_hash_t *h1, const apr_hash_t *h2, 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 void *data)
apr_pool_tapr_hash_pool_get (const apr_hash_t *thehash)

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 null-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 null-term'd key.


Typedef Documentation

typedef struct apr_hash_index_t apr_hash_index_t
 

Abstract type for scanning hash tables.

typedef struct apr_hash_t apr_hash_t
 

Abstract type for hash tables.


Function Documentation

apr_hash_t* apr_hash_copy apr_pool_t   pool,
const apr_hash_t   h
 

Make a copy of a hash table

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

unsigned int apr_hash_count apr_hash_t   ht
 

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

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

apr_hash_index_t* apr_hash_first apr_pool_t   p,
apr_hash_t   ht
 

 
 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;
 }
 

void* apr_hash_get apr_hash_t   ht,
const void *    key,
apr_ssize_t    klen
 

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

Parameters:
ht  The hash table
key  Pointer to the key
klen  Length of the key. Can be APR_HASH_KEY_STRING to use the string length.
Returns:
Returns NULL if the key is not present.

apr_hash_t* apr_hash_make apr_pool_t   pool
 

Create a hash table.

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

apr_hash_t* apr_hash_merge apr_pool_t   p,
const apr_hash_t   h1,
const apr_hash_t   h2,
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 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.

Parameters:
p  The pool to use for the new hash table
h1  The first of the tables to merge
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 apr_hash_overlay())
data  Client data to pass to the merger function
Returns:
A new hash table containing all of the data from the two passed in

apr_hash_index_t* apr_hash_next apr_hash_index_t   hi
 

Continue iterating over the entries in a hash table.

Parameters:
hi  The iteration state
Returns:
a pointer to the updated iteration state. NULL if there are no more entries.

apr_hash_t* apr_hash_overlay apr_pool_t   p,
const apr_hash_t   overlay,
const apr_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.

Parameters:
p  The pool to use for the new hash table
overlay  The table to add to the initial table
base  The 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

apr_pool_t* apr_hash_pool_get const apr_hash_t   thehash
 

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

void apr_hash_set apr_hash_t   ht,
const void *    key,
apr_ssize_t    klen,
const void *    val
 

Associate a value with a key in a hash table.

Parameters:
ht  The hash table
key  Pointer to the key
klen  Length of the key. Can be APR_HASH_KEY_STRING to use the string length.
val  Value to associate with the key
Remarks:
If the value is NULL the hash entry is deleted.

void apr_hash_this apr_hash_index_t   hi,
const void **    key,
apr_ssize_t *    klen,
void **    val
 

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

Parameters:
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.
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.


Generated on Fri Apr 16 09:03:30 2004 for Apache Portable Runtime by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002