home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / WmtRWTPtrSet.hxx < prev    next >
Text File  |  1996-05-31  |  2KB  |  57 lines

  1. /*---------------------------------------------------------------------------
  2.  *
  3.  *      (c)     Westmount Technology    1994
  4.  *
  5.  *      File:        @(#)WmtRWTPtrSet.hxx    1.2
  6.  *      Author:        peku
  7.  *      Description:    pointer set based on RogueWave library
  8.  *---------------------------------------------------------------------------
  9.  SccsId = @(#)WmtRWTPtrSet.hxx    1.2   03 Jun 1994 Copyright 1994 Westmount Technology */
  10.  
  11. #ifndef WMTRWTPTRSET_HXX
  12. #define WMTRWTPTRSET_HXX
  13.  
  14. #ifndef __RWTVHSET_H__
  15. #include "rw/tvhset.h"
  16. #endif
  17.  
  18. typedef void* voidptr;
  19. unsigned WmtRWTHashVoidPtr(const voidptr& p);
  20.  
  21. template<class T>
  22. #ifdef __GNUG__
  23. class WmtRWTPtrSet : public RWTValHashSet<voidptr> {
  24. #else
  25. class WmtRWTPtrSet : private RWTValHashSet<voidptr> {
  26. #endif
  27. public:
  28.     WmtRWTPtrSet() : RWTValHashSet<voidptr>(WmtRWTHashVoidPtr) {}
  29.  
  30.     void doInsert(T *ptr)
  31.         { RWTValHashSet<voidptr>::insert(ptr); }
  32.     RWBoolean doRemove(T *ptr)
  33.         { return RWTValHashSet<voidptr>::remove(ptr); }
  34.     void doClear()
  35.         { RWTValHashSet<voidptr>::clear(); }
  36.     RWBoolean doIsEmpty() const
  37.         { return RWTValHashSet<voidptr>::isEmpty(); }
  38. };
  39.  
  40. template <class T>
  41. class WmtRWTPtrSetIterator : private RWTValHashTableIterator<voidptr> {
  42. public:
  43.     // cast away const
  44.     // strange: RWTValHashTableIterator does not have 
  45.     // const parameter in the constructor
  46.     //
  47.     WmtRWTPtrSetIterator(const WmtRWTPtrSet<T>& c) :
  48.         RWTValHashTableIterator<voidptr>((RWTValHashSet<voidptr>&)c) {}
  49.  
  50.     T *key() const { return (T*)RWTValHashTableIterator<voidptr>::key(); }
  51.     RWBoolean operator++()
  52.         { return RWTValHashTableIterator<voidptr>::operator++(); }
  53.     void reset() { RWTValHashTableIterator<voidptr>::reset(); }
  54. };
  55.  
  56. #endif /* WMTRWTPTRSET_HXX */
  57.