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 #ifndef __GenericHeap_h
00030 #define __GenericHeap_h
00031
00032 #ifdef __GNUC__
00033 #pragma interface
00034 #endif
00035
00036 #include "_generic.h"
00037 #include "AbstractHeap.h"
00038
00039 template <class T>
00040 class UTILIB_API GenericHeap;
00041
00045 template <class T>
00046 class GenericHeapItem
00047 {
00048 friend class AbstractHeap<GenericHeapItem<T>,T>;
00049
00050 public:
00051
00053 void write(ostream& os) {Keyptr->write(os);}
00055 T& key() {return *Keyptr;}
00057 int compare(T& key)
00058 {return Keyptr->compare(key);}
00059
00060 private:
00061
00063 T* Keyptr;
00065 int element;
00067 GenericHeapItem(T* Key_) : Keyptr(Key_), element(0) {}
00068 };
00069
00070
00071
00072 template <class T>
00073 class GenericHeap : public AbstractHeap<GenericHeapItem<T>,T>
00074 {
00075 public:
00076
00078 explicit GenericHeap(const char* nameBuff = "Unnamed",
00079 int initSize=defaultSize, int quantumChoice = defaultQuantum)
00080 : AbstractHeap<GenericHeapItem<T>,T>(nameBuff,initSize,quantumChoice) {}
00081
00082 };
00083
00084 #endif