UHashTable, UHashElem - hash table classes
Contents
Description
UHashTable implements a simple open hash table. The number 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.
Name
UHashTable, UHashElem - hash table classes
See Also
Iterator(3U) Unidraw 3 October 1990 UHashTable(3U)
Synopsis
#include<Unidraw/uhash.h>
Uhashelem Operations
UHashElem(void*=nil)
Create a UHashElem with the given key value.
void*GetKey()voidSetKey(void*)
Explicitly get and set the element's key value.
Uhashtable Protected Operations
virtualUHashElem*CreateElem()
Return a new UHashElem instance. Subclasses of UHashTable should redefine this function if they
use subclasses of UHashElem.
virtualintHash(void*key)
Hash the specified key to return a slot index. This value should be less than the value of the
_nslots member variable.
virtualbooleanEqual(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.
Uhashtable Public Operations
UHashTable(intnslots)
Create a new UHashTable, specifying its number of slots.
virtualvoidRegister(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.
virtualvoidUnregister(void*key)
Remove the element with the matching key from the hash table and delete it.
voidFirst(Iterator&)voidNext(Iterator&)booleanDone(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 initializes 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 element to which the given iterator points.
UHashElem*Find(void*key)
Find the element with the matching key (as defined by the Equal operation, described below) in the
hash table.
