bdb/bdb.h

81 lines
1.4 KiB
C
Raw Normal View History

2006-02-14 03:56:36 +01:00
#ifndef BDB2_H
#define BDB2_H
#include <ruby.h>
#include <version.h>
2006-03-06 18:44:47 +01:00
#include <extconf.h>
2006-02-14 03:56:36 +01:00
2006-03-06 18:44:47 +01:00
#ifdef INC_DB4
#include <db4/db.h>
#else
#include <db.h>
#endif
2006-02-14 03:56:36 +01:00
#define NOTXN NULL
#define FNLEN 40
#define filename_copy(fp,fv) \
strncpy(fp,RSTRING(fv)->ptr,FNLEN);
#define filename_dup(fpd,fps) \
strncpy(fpd,fps,FNLEN);
typedef struct s_envh {
VALUE self;
DB_ENV *env;
VALUE adb; /* Ruby array holding opened databases */
VALUE atxn; /* Ruby array holding open transactions */
} t_envh;
2006-02-14 03:56:36 +01:00
typedef struct s_dbh {
VALUE self;
DB *db;
2006-02-14 03:56:36 +01:00
VALUE aproc;
t_envh *env; /* Parent environment, NULL if not opened from one */
VALUE adbc; /* Ruby array holding opened cursor */
2006-02-14 03:56:36 +01:00
char filename[FNLEN+1];
} t_dbh;
typedef struct s_dbch {
VALUE self;
2006-02-14 03:56:36 +01:00
DBC *dbc;
t_dbh *db;
2006-02-14 03:56:36 +01:00
char filename[FNLEN+1];
} t_dbch;
typedef struct s_txnh {
VALUE self;
DB_TXN *txn;
t_envh *env;
} t_txnh;
2006-02-14 03:56:36 +01:00
#define ci(b,m) \
rb_define_const(b,#m,INT2FIX(m))
#define cs(b,m) \
rb_define_const(b,#m,rb_str_new2(m))
#define simple_set(fname) \
VALUE db_ ## fname ## _eq(VALUE obj, VALUE v) \
{ \
rb_ivar_set(obj,fv_ ## fname,v); \
return obj; \
}
#define attr_writer(fname) \
VALUE fname ## _writer(VALUE obj, VALUE v) \
{ \
rb_ivar_set(obj,fv_ ## fname,v); \
return obj; \
}
#define attr_reader(fname) \
VALUE fname ## _reader(VALUE obj) \
{ \
return rb_ivar_get(obj,fv_ ## fname); \
}
2006-02-14 03:56:36 +01:00
#endif