00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __GenericHashTable_h
00031 #define __GenericHashTable_h
00032
00033 #ifdef __GNUC__
00034 #pragma interface
00035 #endif
00036
00037 #include "AbstractHashTable.h"
00038
00039 template <class T>
00040 class UTILIB_API GenericHashTable;
00041
00042
00043
00047 template <class T>
00048 class GenericHashTableItem
00049 {
00050 friend class AbstractHashTable<GenericHashTableItem<T>,T>;
00051
00052 public:
00053
00055 void write(ostream& os) {Keyptr->write(os);}
00057 T& key() {return *Keyptr;}
00059 int compare(T& key)
00060 {return Keyptr->compare(key);}
00061
00062 private:
00063
00065 T* Keyptr;
00067 GenericHashTableItem(T* Key_) : Keyptr(Key_) {}
00068 };
00069
00070
00071
00072 template <class T>
00073 class GenericHashTable : public AbstractHashTable<GenericHashTableItem<T>,T>
00074 {
00075 public:
00076
00078 explicit GenericHashTable(const char* nameBuff = "Unnamed")
00079 : AbstractHashTable<GenericHashTableItem<T>,T>(nameBuff) {}
00080
00082 explicit GenericHashTable(size_type init_size,
00083 const char* nameBuff = "Unnamed")
00084 : AbstractHashTable<GenericHashTableItem<T>,T>(init_size, nameBuff) {}
00085 };
00086
00087 #endif