(file) Return to HashTable.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/HashTable.h between version 1.22 and 1.26.4.1

version 1.22, 2006/01/30 16:17:04 version 1.26.4.1, 2008/04/24 18:41:36
Line 29 
Line 29 
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Mike Brasher (mbrasher@bmc.com)  
 //  
 // Modified By: Carol Ann Krug Graves, Hewlett-Packard Company  
 //                  (carolann_graves@hp.com)  
 //  
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #ifndef Pegasus_HashTable_h #ifndef Pegasus_HashTable_h
Line 148 
Line 143 
     _BucketBase* next;     _BucketBase* next;
 }; };
  
 class _HashTableRep;  
   
 /* This class implements a simple hash table forward iterator. */ /* This class implements a simple hash table forward iterator. */
 class PEGASUS_COMMON_LINKAGE _HashTableIteratorBase class PEGASUS_COMMON_LINKAGE _HashTableIteratorBase
 { {
 public: public:
  
     _HashTableIteratorBase() : _first(0), _last(0), _bucket(0) { }      _HashTableIteratorBase(_BucketBase** first, _BucketBase** last);
  
     operator int() const { return _bucket != 0; }     operator int() const { return _bucket != 0; }
  
Line 163 
Line 156 
  
     _HashTableIteratorBase& operator++();     _HashTableIteratorBase& operator++();
  
     _HashTableIteratorBase(_BucketBase** first, _BucketBase** last);  
   
 protected: protected:
  
       // Note:  The default copy constructor/assignment operator is used by the
       // postfix increment operator.  The member pointers may be safely copied
       // because they refer to structures that must not change while the iterator
       // is in scope.
   
     _BucketBase** _first;     _BucketBase** _first;
     _BucketBase** _last;     _BucketBase** _last;
     _BucketBase* _bucket;     _BucketBase* _bucket;
     friend class _HashTableRep;  
 }; };
  
 // ATTN: reorganization not supported yet. // ATTN: reorganization not supported yet.
Line 274 
Line 269 
  
     V& getValue() { return _value; }     V& getValue() { return _value; }
  
       void putValue(const V& value) {_value = value;}
   
 private: private:
  
     K _key;     K _key;
Line 304 
Line 301 
 { {
 public: public:
  
     _HashTableIterator()  
         : _HashTableIteratorBase() { }  
   
     _HashTableIterator(_BucketBase** first, _BucketBase** last)     _HashTableIterator(_BucketBase** first, _BucketBase** last)
         : _HashTableIteratorBase(first, last) { }         : _HashTableIteratorBase(first, last) { }
  
Line 378 
Line 372 
     (which by the way has exactly the same effect).     (which by the way has exactly the same effect).
  
         <pre>         <pre>
         typedef HashTable&lt;String, Uint32, EqualFunc&lt;String&gt;, HashFunc&lt;String&gt;&gt; HT;          typedef HashTable&lt;String, Uint32,
               EqualFunc&lt;String&gt;, HashFunc&lt;String&gt;&gt; HT;
         </pre>         </pre>
  
     The third and forth arguments are described more in detail later.      The third and fourth arguments are described more in detail later.
  
     Then, entries may be inserted like this:     Then, entries may be inserted like this:
  
Line 470 
Line 465 
 public: public:
  
     typedef _HashTableIterator<K, V, E> Iterator;     typedef _HashTableIterator<K, V, E> Iterator;
       typedef _Bucket<K, V, E> Bucket;
  
     /* By default, we create this many chains initially */     /* By default, we create this many chains initially */
     enum { DEFAULT_NUM_CHAINS = 32 };     enum { DEFAULT_NUM_CHAINS = 32 };
Line 548 
Line 544 
             _rep.getChains(), _rep.getChains() + _rep.getNumChains());             _rep.getChains(), _rep.getChains() + _rep.getNumChains());
     }     }
  
       /** Gets the entry pointer with the given key.
           @param key          key of entry to be located.
           @param bucket       output - pointer to entry with that key
           @return true if entry found; false otherwise.
       */
       Boolean getBucket(const K& key, _Bucket<K, V, E>*& bucket) const;
   
 private: private:
  
     _HashTableRep _rep;     _HashTableRep _rep;
Line 568 
Line 571 
     return false;     return false;
 } }
  
   template<class K, class V, class E, class H>
   inline Boolean HashTable<K, V, E, H>::getBucket(
       const K& key, _Bucket<K, V, E>*& bucket) const
   {
       bucket = (_Bucket<K, V, E>*)_rep.lookup(H::hash(key), &key);
   
       if (bucket)
       {
           return true;
       }
   
       return false;
   }
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
  
 #endif /* Pegasus_HashTable_h */ #endif /* Pegasus_HashTable_h */


Legend:
Removed from v.1.22  
changed lines
  Added in v.1.26.4.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2