home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 November / VPR9611B.ISO / vabasic / ntclnt.exe / DISK8 / data.8 / datab / INCLUDE / IHASH.HH < prev    next >
Text File  |  1996-07-29  |  3KB  |  81 lines

  1. /*------------------------------------------------------------------------
  2.  * $Source: /rcs/crcs/general/ihash.hh,v $
  3.  * $Date: 1995/11/10 23:55:16 $                   $Revision: 1.7 $
  4.  *
  5.  * Copyright 1990, Visual Edge Software Ltd.
  6.  * -----------------------------------------
  7.  * ALL RIGHTS RESERVED.  This notice is intended as a precaution against
  8.  * inadvertent publication, and shall not be deemed to constitute an
  9.  * acknowledgment that publication has  occurred nor to imply any waiver
  10.  * of confidentiality.  The year included in the notice is the year
  11.  * of the creation of the work.
  12.  *------------------------------------------------------------------------
  13.  * Class VeIHashTable:  Integer-keyed hash table <ItemT>
  14.  *------------------------------------------------------------------------*/
  15.  
  16. #ifndef VIHash_HH
  17. #define VIHash_HH
  18.  
  19. /*------------------------------------------------------------------------
  20.  * You can define a VeIHashTable over any pointer type.
  21.  * This template class defines a thin typed-access layer over
  22.  * VeIPHashTable.  No template repository code should be needed.
  23.  *-----------------------------------------------------------------------*/
  24.  
  25. #include <visedge.hh>
  26. #include <ptrarray.hh>
  27. #include <iptrhash.hh>
  28.  
  29. #ifndef NOTEMPLATES
  30. template<class ItemT>
  31.         class VeIHashTable : public VeIPHashTable
  32. {
  33. public:
  34.         VeIHashTable () {}
  35.         VeIHashTable (int hashsize) : VeIPHashTable(hashsize) {}
  36.         VeIHashTable (const VeIPHashTable& other) : VeIPHashTable(other) {}
  37.  
  38.         ~VeIHashTable() {}
  39.  
  40.         /*--------------------------------------------------
  41.          * Explicit insertion of entries.
  42.          *--------------------------------------------------*/
  43.  
  44.         ItemT&  PutAt (VIHashKey k, ItemT i) { return (ItemT&)
  45.                                                VeIPHashTable::PutAt(k,(PVoid) i);}
  46.  
  47.         /*--------------------------------------------------
  48.          * Extraction of entries - adding unfound ones!
  49.          *--------------------------------------------------*/
  50.  
  51.         ItemT& Get (VIHashKey k) { return (ItemT&) VeIPHashTable::Get(k); }
  52.         ItemT& operator[] (VIHashKey k) { return Get(k);  }
  53.         ItemT FindElement (int &i, PVoid &aCell, VIHashKey *aKey = 0) { return (ItemT) VeIPHashTable::FindElement(i, aCell, aKey); }
  54.  
  55.     /*-------------------------------------------------- 
  56.      * Extraction of entries - (without adding new ones)
  57.      *--------------------------------------------------*/
  58.  
  59.     ItemT Query(VIHashKey k) { return (ItemT) VeIPHashTable::Query(k); }
  60.  
  61.     bool_t Query(VIHashKey k, ItemT &item)
  62.     {
  63.         bool_t        found;
  64.         PVoid        pvitem;
  65.  
  66.         found = VeIPHashTable::Query(k, pvitem);
  67.         item = (ItemT)pvitem;
  68.  
  69.         return found;
  70.     }
  71.  
  72.         /*--------------------------------------------------
  73.          * Shrinking.  Remove() returns the removed element.
  74.          *--------------------------------------------------*/
  75.  
  76.         ItemT Remove (VIHashKey k) { return (ItemT) VeIPHashTable::Remove(k); }
  77. };
  78. #endif // NOTEMPLATES
  79.  
  80. #endif
  81.