CCAFFEINE
0.8.8
|
00001 00007 #ifndef ResourceHash_seen 00008 #define ResourceHash_seen 00009 namespace jcpp { 00010 00011 00012 //#include "jc++/jc++.h" 00013 //#include "jc++/lang/Object.h" 00014 //#include "jc++/util/Enumeration.h" 00015 //#include "jc++/util/StringEnumeration.h" 00016 //#include "jc++/util/HashEnum.h" 00017 //#include "jc++/util/StringHashEnum.h" 00018 //#include "jc++/util/ResourceBucket.h" 00019 00020 class ResourceBucket; // our implementation detail 00021 00026 class ResourceHash : public virtual Object { 00027 00028 private: 00029 00030 ResourceBucket **table; 00031 int table_length; 00033 int N; 00034 00035 float loadFactor; 00036 int numberOfKeys; 00037 int rehashLimit; 00038 00039 char **okeys; // string array 00040 char **oelements; // element array 00041 00044 int calculateBucket(register const char *str); 00045 00046 public: 00047 00048 CDELETE ResourceHash() ; 00049 00050 CDELETE ResourceHash(char *filename) ; 00051 00052 ~ResourceHash() ; 00053 00054 int size() ; 00055 00056 boolean isEmpty() ; 00057 00059 StringEnumeration *keys() ; 00060 00062 StringEnumeration *elements() ; 00063 00064 boolean contains(char *value) ; 00065 00066 boolean containsKey(char *key) ; 00067 00071 CFREE char **charKeysToArray(int& ka_length); 00072 00073 // string literal flavor 00074 char *get(char *key) ; 00075 00077 char *put(const char *key, const char *value); 00078 00079 CFREE char *remove(char *key) ; 00080 00081 void clear() ; 00082 00083 Object *clone() { return 0; } 00084 00085 CFREE char *toString() ; 00086 00087 boolean containsValue(char *s) ; 00088 00089 void rehash(int & RehashError); 00090 00091 }; 00092 00093 } ENDSEMI //jcpp 00094 00095 #endif // ResourceHash_seen