Crossfire Server, Trunk  R20513
Functions
hashtable.c File Reference
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <autoconf.h>
#include <hashtable.h>
Include dependency graph for hashtable.c:

Go to the source code of this file.

Functions

void add_ptr_assoc (ptr_assoc **hash_table, void *key, void *value)
 Adds a value to a hash table which one can lookup with key. More...
 
void * find_assoc_value (ptr_assoc **hash_table, void *key)
 Find the value associated with a given key. More...
 
static ptr_assocfind_ptr_assoc (ptr_assoc **hash_table, void *key)
 Find the ptr_assoc with a given key. More...
 
void free_ptr_assoc (ptr_assoc **hash_table, void *key)
 Remove the association with a given key. More...
 
static int hashptr (void *ptr)
 Hashing-function used by the pointer association library. More...
 
void init_ptr_assoc_table (ptr_assoc **hash_table)
 Initialises the hash table for a pointer association table. More...
 
static ptr_assocnew_ptr_assoc (void *key, void *value)
 Allocates and initialises a new ptr_assoc structure. More...
 

Function Documentation

void add_ptr_assoc ( ptr_assoc **  hash_table,
void *  key,
void *  value 
)

Adds a value to a hash table which one can lookup with key.

Parameters
hash_tablePointer to the hash table to add to.
keyThe key to lookup by in the association.
valueThe value to store with the key.

Definition at line 109 of file hashtable.c.

References _ptr_assoc::array, hashptr(), _ptr_assoc::key, new_ptr_assoc(), _ptr_assoc::next, _ptr_assoc::previous, and _ptr_assoc::value.

Referenced by add_map_assoc(), and add_object_assoc().

Here is the call graph for this function:

Here is the caller graph for this function:

void* find_assoc_value ( ptr_assoc **  hash_table,
void *  key 
)

Find the value associated with a given key.

Parameters
hash_tablePointer to the hash table to search.
keyThe key to lookup by in the association.
Returns
The value associated with the key.

Definition at line 205 of file hashtable.c.

References find_ptr_assoc(), and _ptr_assoc::value.

Referenced by find_assoc_pymap(), and find_assoc_pyobject().

Here is the call graph for this function:

Here is the caller graph for this function:

static ptr_assoc* find_ptr_assoc ( ptr_assoc **  hash_table,
void *  key 
)
static

Find the ptr_assoc with a given key.

Parameters
hash_tablePointer to the hash table to search.
keyThe key to lookup by in the association.
Returns
The ptr_assoc that is found, or null if none is found.

Definition at line 168 of file hashtable.c.

References hashptr(), _ptr_assoc::key, and _ptr_assoc::next.

Referenced by find_assoc_value(), and free_ptr_assoc().

Here is the call graph for this function:

Here is the caller graph for this function:

void free_ptr_assoc ( ptr_assoc **  hash_table,
void *  key 
)

Remove the association with a given key.

Parameters
hash_tablePointer to the hash table to search.
keyThe key to lookup by in the association.

Definition at line 222 of file hashtable.c.

References _ptr_assoc::array, find_ptr_assoc(), _ptr_assoc::next, and _ptr_assoc::previous.

Referenced by free_map_assoc(), and free_object_assoc().

Here is the call graph for this function:

Here is the caller graph for this function:

static int hashptr ( void *  ptr)
static

Hashing-function used by the pointer association library.

Currently just takes the pointer modulus the table size (which should be a prime number).

Parameters
ptrThe pointer to hash.
Returns
The returned hash value.

Definition at line 72 of file hashtable.c.

References PTR_ASSOC_TABLESIZE.

Referenced by add_ptr_assoc(), and find_ptr_assoc().

Here is the caller graph for this function:

void init_ptr_assoc_table ( ptr_assoc **  hash_table)

Initialises the hash table for a pointer association table.

Parameters
hash_tablePointer to the hash table to initialise.

Definition at line 57 of file hashtable.c.

References hash_table, and PTR_ASSOC_TABLESIZE.

Referenced by init_map_assoc_table(), and init_object_assoc_table().

Here is the caller graph for this function:

static ptr_assoc* new_ptr_assoc ( void *  key,
void *  value 
)
static

Allocates and initialises a new ptr_assoc structure.

Parameters
keyThe key to lookup by in the association.
valueThe value to store with the key.
Returns
The new ptr_assoc structure.

Definition at line 87 of file hashtable.c.

References _ptr_assoc::array, _ptr_assoc::key, _ptr_assoc::next, _ptr_assoc::previous, and _ptr_assoc::value.

Referenced by add_ptr_assoc().

Here is the caller graph for this function: