logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

UHashTable, UHashElem - hash table classes

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.

See Also