UHashTable, UHashElem - hash table classes
#include <Unidraw/uhash.h>
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.
- 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
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.
- 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.