CCAFFEINE  0.8.8
ResourceHash.h
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