UHashTable, UHashElem - hash table classes
SYNOPSIS
#include <Unidraw/uhash.h>
DESCRIPTION
UHashTable implements a simple open hash table. The num-
ber of slots can be specified when the table is created.
UHashTable stores UHashElem instances, which contain the
key that is hashed. Code that uses UHashTables may derive
from UHashElem to store data in addition to the key.
UHashTable also provides operations for iterating over the
elements in the hash table.
UHASHELEM OPERATIONS
UHashElem(void* = nil)
Create a UHashElem with the given key value.
void* GetKey()
void SetKey(void*)
Explicitly get and set the element's key value.
UHASHTABLE PUBLIC OPERATIONS
UHashTable(int nslots)
Create a new UHashTable, specifying its number of
slots.
virtual void Register(void* key, UHashElem* = nil)
Make an entry into the hash table. If no UHashElem
is supplied, this function call the CreateElem
function (described below) to create one, and it
will call SetKey (with key as its argument) on the
result.
virtual void Unregister(void* key)
Remove the element with the matching key from the
hash table and delete it.
void First(Iterator&)
void Next(Iterator&)
boolean Done(Iterator)
UHashElem* GetElem(Iterator)
Operations for iterating over the elements in the
hash table. These operation do not guarantee a
particular ordering for the iteration. First ini-
tializes an iterator to point to the first element
in the traversal, Next increments the iterator to
point to the following element, and Done returns
whether or not the iterator points beyond the last
element in the traversal. GetElem returns the ele-
ment to which the given iterator points.
Find the element with the matching key (as defined
by the Equal operation, described below) in the
hash table.
UHASHTABLE PROTECTED OPERATIONS
virtual UHashElem* CreateElem()
Return a new UHashElem instance. Subclasses of
UHashTable should redefine this function if they
use subclasses of UHashElem.
virtual int Hash(void* key)
Hash the specified key to return a slot index.
This value should be less than the value of the
_nslots member variable.
virtual boolean Equal(void* key1, void* key2)
Return whether the specified keys are equivalent.
By default, Equal simply compares the pointers for
equality. Subclasses may redefine this operation
to make more sophisticated comparisons.
SEE ALSO
Iterator(3U)
Man(1) output converted with
man2html