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 #ifndef _EYEDB_OBJ_CACHE_H
00026 #define _EYEDB_OBJ_CACHE_H
00027
00028 namespace eyedb {
00029
00035 struct ObjCacheLink;
00036
00040 class ObjCache {
00041
00042 public:
00047 ObjCache(unsigned int n = 8);
00048
00055 Bool insertObject(const Oid &oid, void *o, unsigned int refcnt = 0);
00056
00062 Bool deleteObject(const Oid &oid, bool force = false);
00063
00069 void *getObject(const Oid &oid, bool incr = false);
00070
00075 ObjectList *getObjects();
00076
00080 void empty();
00081
00085 unsigned int getObjectCount() {return obj_cnt;}
00086
00087 ~ObjCache();
00088
00089 private:
00090 unsigned int key;
00091 unsigned int links_cnt;
00092 unsigned int obj_cnt;
00093 ObjCacheLink **links;
00094 unsigned int getIndex(const Oid&);
00095 unsigned int tstamp;
00096 bool rescaling;
00097 void rescale();
00098 };
00099
00104 }
00105
00106 #endif