5 ** Copyright 1998 - 2007 Double Precision, Inc. See COPYING for
6 ** distribution information.
9 static const char gdbmobj_h_rcsid
[]="$Id: gdbmobj.h,v 1.8 2009/06/27 16:32:38 mrsam Exp $";
26 void gdbmobj_init(struct gdbmobj
*);
28 int gdbmobj_open(struct gdbmobj
*, const char *, const char *);
29 void gdbmobj_close(struct gdbmobj
*);
31 #define gdbmobj_isopen(p) (!!(p)->has_dbf)
33 char *gdbmobj_fetch(struct gdbmobj
*, const char *, size_t, size_t *, const char *);
34 int gdbmobj_exists(struct gdbmobj
*, const char *, size_t);
35 int gdbmobj_delete(struct gdbmobj
*, const char *, size_t);
36 int gdbmobj_store(struct gdbmobj
*, const char *, size_t, const char *,
37 size_t, const char *);
39 char *gdbmobj_firstkey(struct gdbmobj
*, size_t *, char **, size_t *);
40 char *gdbmobj_nextkey(struct gdbmobj
*, size_t *, char **, size_t *);
51 GdbmObj(const GdbmObj
&); /* Undefined */
52 GdbmObj
&operator=(const GdbmObj
&); /* Undefined */
55 GdbmObj() { gdbmobj_init(&obj
); }
56 ~GdbmObj() { gdbmobj_close(&obj
); }
57 int Open(std::string filename
, const char *mode
)
59 return ( gdbmobj_open(&obj
, filename
.c_str(), mode
));
62 int IsOpen() { return (gdbmobj_isopen(&obj
)); }
63 void Close() { gdbmobj_close(&obj
); }
65 std::string
Fetch(std::string key
, std::string mode
)
68 char *p
=Fetch(key
.c_str(), key
.size(), l
, mode
.c_str());
72 std::string
v(p
, p
+l
);
78 bool Exists(std::string key
)
80 return !!Exists(key
.c_str(), key
.size());
83 bool Delete(std::string key
)
85 return !!Delete(key
.c_str(), key
.size());
88 int Store(std::string key
, std::string val
, std::string mode
)
90 return Store(key
.c_str(), key
.size(),
91 val
.c_str(), val
.size(), mode
.c_str());
94 std::string
FetchFirstKeyVal(std::string
&valRet
)
101 key
=FetchFirstKeyVal(keyLen
, val
, valLen
);
106 std::string
r(key
, key
+keyLen
);
108 valRet
=std::string(val
, val
+valLen
);
113 std::string
FetchNextKeyVal(std::string
&valRet
)
120 key
=FetchNextKeyVal(keyLen
, val
, valLen
);
125 std::string
r(key
, key
+keyLen
);
127 valRet
=std::string(val
, val
+valLen
);
133 char *Fetch(const char *key
, size_t keylen
,
134 size_t &valuelen
, const char *mode
)
136 return (gdbmobj_fetch(&obj
, key
, keylen
,
140 int Exists(const char *key
, size_t keylen
)
142 return (gdbmobj_exists(&obj
, key
, keylen
));
145 int Delete(const char *key
, size_t keylen
)
147 return (gdbmobj_delete(&obj
, key
, keylen
));
150 int Store(const char *key
, size_t keylen
,
151 const char *value
, size_t valuelen
,
154 return (gdbmobj_store(&obj
, key
, keylen
, value
,
158 char *FetchFirstKeyVal(size_t &keylen
, char *&val
, size_t &vallen
)
160 return (gdbmobj_firstkey(&obj
, &keylen
, &val
, &vallen
));
162 char *FetchNextKeyVal(size_t &keylen
, char *&val
, size_t &vallen
)
164 return (gdbmobj_nextkey(&obj
, &keylen
, &val
, &vallen
));