1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
#ifndef bdbobj_h
#define bdbobj_h
/*
** Copyright 1998 - 1999 Double Precision, Inc. See COPYING for
** distribution information.
*/
static const char bdbobj_h_rcsid[]="$Id: bdbobj.h,v 1.5 1999/12/06 13:13:46 mrsam Exp $";
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <sys/types.h>
#if HAVE_LIMITS_H
#include <limits.h>
#endif
#include <db.h>
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
struct bdbobj {
DB *dbf;
int has_dbf;
#if DB_VERSION_MAJOR >= 2
DBC *dbc;
int has_dbc;
#endif
} ;
void bdbobj_init(struct bdbobj *);
int bdbobj_open(struct bdbobj *, const char *, const char *);
void bdbobj_close(struct bdbobj *);
#define bdbobj_isopen(p) (!!(p)->has_dbf)
char *bdbobj_fetch(struct bdbobj *, const char *, size_t, size_t *, const char *);
int bdbobj_exists(struct bdbobj *, const char *, size_t);
int bdbobj_delete(struct bdbobj *, const char *, size_t);
int bdbobj_store(struct bdbobj *, const char *, size_t, const char *,
size_t, const char *);
char *bdbobj_firstkey(struct bdbobj *, size_t *, char **, size_t *);
char *bdbobj_nextkey(struct bdbobj *, size_t *, char **, size_t *);
#ifdef __cplusplus
} ;
class BDbObj {
struct bdbobj obj;
BDbObj(const BDbObj &); // Undefined
BDbObj &operator=(const BDbObj &); // Undefined
char *do_fetch(const char *, size_t, size_t &);
char *do_query(const char *, size_t, size_t &, const char *);
public:
BDbObj() { bdbobj_init(&obj); }
~BDbObj() { bdbobj_close(&obj); }
int Open(const char *filename, const char *mode)
{
return (bdbobj_open(&obj, filename, mode));
}
int IsOpen() { return (bdbobj_isopen(&obj)); }
void Close() { bdbobj_close(&obj); }
char *Fetch(const char *key, size_t keylen, size_t &vallen,
const char *mode)
{
return (bdbobj_fetch(&obj, key, keylen, &vallen, mode));
}
int Exists(const char *key, size_t keylen)
{
return (bdbobj_exists(&obj, key, keylen));
}
int Delete(const char *key, size_t keylen)
{
return (bdbobj_delete(&obj, key, keylen));
}
int Store(const char *key, size_t keylen, const char *val,
size_t vallen, const char *mode)
{
return (bdbobj_store(&obj, key, keylen, val, vallen,
mode));
}
char *FetchFirstKeyVal(size_t &keylen, char *&val, size_t &vallen)
{
return (bdbobj_firstkey(&obj, &keylen, &val, &vallen));
}
char *FetchNextKeyVal(size_t &keylen, char *&val, size_t &vallen)
{
return (bdbobj_nextkey(&obj, &keylen, &val, &vallen));
}
} ;
#endif
#endif
|