Hash Tables
[mod_cache]


マクロ定義

#define CACHE_HASH_KEY_STRING   (-1)

型定義

typedef cache_hash_t cache_hash_t
typedef cache_hash_index_t cache_hash_index_t

関数

cache_hash_tcache_hash_make (apr_size_t size)
void cache_hash_free (cache_hash_t *ht)
void * cache_hash_set (cache_hash_t *ht, const void *key, apr_ssize_t klen, const void *val)
void * cache_hash_get (cache_hash_t *ht, const void *key, apr_ssize_t klen)
cache_hash_index_tcache_hash_first (cache_hash_t *ht)
cache_hash_index_tcache_hash_next (cache_hash_index_t *hi)
void cache_hash_this (cache_hash_index_t *hi, const void **key, apr_ssize_t *klen, void **val)
int cache_hash_count (cache_hash_t *ht)

マクロ定義

#define CACHE_HASH_KEY_STRING   (-1)

When passing a key to cache_hash_set or cache_hash_get, this value can be passed to indicate a string-valued key, and have cache_hash compute the length automatically.

意見:
cache_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), cache_hash_this() will return the null-term'd key.


型定義

typedef struct cache_hash_index_t cache_hash_index_t

Abstract type for scanning hash tables.

typedef struct cache_hash_t cache_hash_t

Abstract type for hash tables.


関数

int cache_hash_count ( cache_hash_t ht  ) 

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

引数:
ht The hash table
戻り値:
The number of key/value pairs in the hash table.

cache_hash_index_t* cache_hash_first ( cache_hash_t ht  ) 

     int sum_values(cache_hash_t *ht)
     {
         cache_hash_index_t *hi;
 	   void *val;
 	   int sum = 0;
 	   for (hi = cache_hash_first(ht); hi; hi = cache_hash_next(hi)) {
 	       cache_hash_this(hi, NULL, NULL, &val);
 	       sum += *(int *)val;
 	   }
 	   return sum;
     }

 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.
 

void cache_hash_free ( cache_hash_t ht  ) 

Create a hash table.

引数:
*ht Pointer to the hash table to be freed.
戻り値:
void
意見:
The caller should ensure that all objects have been removed from the cache prior to calling cache_hash_free(). Objects not removed from the cache prior to calling cache_hash_free() will be unaccessable.

void* cache_hash_get ( cache_hash_t ht,
const void *  key,
apr_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 CACHE_HASH_KEY_STRING to use the string length.
戻り値:
Returns NULL if the key is not present.

cache_hash_t* cache_hash_make ( apr_size_t  size  ) 

Create a hash table.

引数:
size 
戻り値:
The hash table just created

cache_hash_index_t* cache_hash_next ( cache_hash_index_t hi  ) 

Continue iterating over the entries in a hash table.

引数:
hi The iteration state
戻り値:
a pointer to the updated iteration state. NULL if there are no more entries.

void* cache_hash_set ( cache_hash_t ht,
const void *  key,
apr_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 CACHE_HASH_KEY_STRING to use the string length.
val Value to associate with the key
意見:
If the value is NULL the hash entry is deleted.
戻り値:
The value of the deleted cache entry (so the caller can clean it up).

void cache_hash_this ( cache_hash_index_t hi,
const void **  key,
apr_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.
意見:
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.


Apacheに対してSun Jul 19 22:05:28 2009に生成されました。  doxygen 1.4.7