home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / PtrSet.cxx < prev    next >
C/C++ Source or Header  |  1996-05-31  |  2KB  |  81 lines

  1. /*---------------------------------------------------------------------------
  2.  *
  3.  * Copyright (c) 1993 by Westmount Technology B.V., Delft, The Netherlands.
  4.  *
  5.  * This software is furnished under a license and may be used only in
  6.  * accordance with the terms of such license and with the inclusion of
  7.  * the above copyright notice. This software or any other copies thereof
  8.  * may not be provided or otherwise made available to any other person.
  9.  * No title to and ownership of the software is hereby transferred.
  10.  *
  11.  * The information in this software is subject to change without notice
  12.  * and should not be construed as a commitment by Westmount Technology B.V.
  13.  *
  14.  *---------------------------------------------------------------------------
  15.  *
  16.  *    File        : @(#)PtrSet.cxx    1.3
  17.  *    Author        : frmo
  18.  *    Original date    : 26-2-1993
  19.  *    Description    : Set of Pointers
  20.  *
  21.  *---------------------------------------------------------------------------
  22.  */
  23. static const char SccsId[]="@(#)PtrSet.cxx    1.3    13 Jan 1994 Copyright 1993 Westmount Technology";
  24.  
  25. #ifndef PTRSET_HXX
  26. #include "PtrSet.hxx"
  27. #endif
  28.  
  29. PointerHash::~PointerHash()
  30. {
  31. }
  32.  
  33. unsigned PointerHash::hash() const
  34. {
  35.     const ALIGNMENT = 4;
  36.     return unsigned(ptr) / ALIGNMENT;
  37. }
  38.  
  39. int PointerHash::isEqual(const Hashable &key) const
  40. {
  41.     return ((const PointerHash &) key).ptr == ptr;
  42. }
  43.  
  44. int GenPtrSet::add(void *ptr)
  45. {
  46.     PointerHash *nph = new PointerHash(ptr);
  47.     if (PtrHashTbl::add(*nph) != nph) {
  48.         // entry already present
  49.         delete nph;
  50.         return -1;
  51.     }
  52.     return 0;
  53. }
  54.  
  55. void GenPtrSet::remove(void *ptr)
  56. {
  57.     delete PtrHashTbl::remove(ptr);
  58. }
  59.  
  60. int GenPtrSet::isPresent(void *ptr) const
  61. {
  62.     return PtrHashTbl::find(ptr) != 0;
  63. }
  64.  
  65. unsigned GenPtrSet::size() const
  66. {
  67.     return PtrHashTbl::size();
  68. }
  69.  
  70. void *GenPtrSet::first()
  71. {
  72.     PointerHash *ph = PtrHashTbl::first();
  73.     return ph ? ph->getPtr() : 0;
  74. }
  75.  
  76. void *GenPtrSet::next()
  77. {
  78.     PointerHash *ph = PtrHashTbl::next();
  79.     return ph ? ph->getPtr() : 0;
  80. }
  81.