Provided by: ivtools-dev_1.2.11a1-2_amd64 bug


       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.


       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(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.