Open
Graph Drawing
Framework

 v.2007.11
 

HashArray.h

Go to the documentation of this file.
00001 /*
00002  * $Revision: 1.2 $
00003  * 
00004  * last checkin:
00005  *   $Author: gutwenger $ 
00006  *   $Date: 2007-11-08 16:10:37 +0100 (Do, 08 Nov 2007) $ 
00007  ***************************************************************/
00008  
00051 #ifdef _MSC_VER
00052 #pragma once
00053 #endif
00054 
00055 #ifndef OGDF_HASH_ARRAY_H
00056 #define OGDF_HASH_ARRAY_H
00057 
00058 
00059 #include <ogdf/basic/Hashing.h>
00060 
00061 
00062 namespace ogdf {
00063 
00064 
00118 template<class I, class E, class H = DefHashFunc<I> >
00119 class HashArray : private Hashing<I,E,H>
00120 {
00121     E m_defaultValue; 
00122 
00123 public:
00125     typedef HashConstIterator<I,E,H> const_terator;
00126 
00128     HashArray() : Hashing<I,E,H>() { }
00129 
00131     HashArray(const E &defaultValue, const H &hashFunc = H())
00132         : Hashing<I,E,H>(256, hashFunc), m_defaultValue(defaultValue) { }
00133 
00135     HashArray(const HashArray<I,E,H> &A) : Hashing<I,E,H>(A), m_defaultValue(A.m_defaultValue) { }
00136 
00138     HashConstIterator<I,E,H> begin() const { return Hashing<I,E,H>::begin(); }
00139 
00141     int size() const { return Hashing<I,E,H>::size(); }
00142     
00144     int empty() const { return Hashing<I,E,H>::empty(); }
00145 
00146 
00148     const E &operator[](const I &i) const {
00149         HashElement<I,E> *pElement = Hashing<I,E,H>::lookup(i);
00150         if (pElement) return pElement->info();
00151         else return m_defaultValue;
00152     }
00153 
00155     E &operator[](const I &i) {
00156         HashElement<I,E> *pElement = Hashing<I,E,H>::lookup(i);
00157         if (!pElement) pElement = Hashing<I,E,H>::fastInsert(i,m_defaultValue);
00158         return pElement->info();
00159     }
00160 
00162     bool isDefined(const I &i) const {
00163         return Hashing<I,E,H>::member(i);
00164     }
00165 
00167     void undefine(const I &i) {
00168         Hashing<I,E,H>::del(i);
00169     }
00170 
00172     HashArray<I,E,H> &operator=(const HashArray<I,E,H> &A) {
00173         m_defaultValue = A.m_defaultValue;
00174         Hashing<I,E,H>::operator =(A);
00175         return *this;
00176     }
00177 
00179     void clear() { Hashing<I,E,H>::clear(); }
00180 };
00181 
00182 
00183 } // end namespace ogdf
00184 
00185 #endif


© 1999-2007 by oreas GmbH, © 2005-2007 by University Dortmund and University Cologne.

Generated on Thu Nov 22 19:40:01 2007 by doxygen 1.5.4.