00001
00009 #ifndef HASTL_H
00010 #define HASTL_H
00011
00012 #ifdef _MSC_VER
00013
00014 #pragma warning (disable:4786)
00015 #endif
00016
00017 #include <queue>
00018 #if !defined(linux)
00019 # include <limits>
00020 #endif
00021 #include <stack>
00022 #include <list>
00023 #include <map>
00024 #include <vector>
00025 #include <set>
00026
00027 #ifdef linux
00028 #include <new>
00029 #endif
00030
00031 #if defined(_MSC_VER) && !defined(__GNUC__) && !defined(__xlC__)
00032
00033
00034 using namespace std;
00035 #endif
00036
00037 class PtrDoubleMap;
00038
00039 class PtrDoubleMap_itr
00041 {
00042 public:
00043 PtrDoubleMap_itr( PtrDoubleMap& new_map);
00044 PtrDoubleMap_itr( PtrDoubleMap_itr& ref);
00045
00046 void* GetKey();
00047 double GetVal();
00048 int GetFirst();
00049 int GetNext();
00050
00051 protected:
00052 map<void*, double, less<void*> >::iterator itr;
00053 PtrDoubleMap& int_map;
00054 };
00055
00056 class PtrDoubleMap: public map<void*, double, less<void*> >
00058 {
00059 public:
00060 PtrDoubleMap();
00061
00062 typedef PtrDoubleMap_itr iterator;
00063
00064 void clear();
00065 int count(void* ptr);
00066 int size();
00067
00068 double GetVal(void* ptr);
00069 void SetVal(void* ptr, double val);
00070 int ierr;
00071 };
00072
00073 class PtrPtrMap;
00074
00075 class PtrPtrMap_itr
00077 {
00078 public:
00079 PtrPtrMap_itr(PtrPtrMap& new_map);
00080 PtrPtrMap_itr( PtrPtrMap_itr& ref);
00081
00082 void* GetKey();
00083 void* GetVal();
00084 int GetFirst();
00085 int GetNext();
00086
00087 protected:
00088 map<void*, void*, less<void*> >::iterator itr;
00089 PtrPtrMap& int_map;
00090
00091 };
00092
00093 class PtrPtrMap: public map<void*, void*, less<void*> >
00095 {
00096 public:
00097 PtrPtrMap();
00098
00099 typedef PtrPtrMap_itr iterator;
00100
00101 void clear();
00102 int count(void* ptr);
00103 int size();
00104
00105 void* GetVal(void* ptr);
00106 void SetVal(void* ptr, void* val);
00107 int ierr;
00108 };
00109
00110 typedef map<void*, int, less<void*> > PtrIntMap;
00111
00112 typedef map<int, void* , less<int> > IntPtrMap;
00113 typedef vector<void*> VecPtr;
00114
00115 #endif
00116