class BDB::Delegate
Public Class Methods
_load(p1)
click to toggle source
static VALUE
bdb_deleg_load(VALUE obj, VALUE str)
{
bdb_DB *dbst;
obj = bdb_local_aref();
Data_Get_Struct(obj, bdb_DB, dbst);
return rb_funcall(dbst->marshal, bdb_id_load, 1, str);
}
_load_data(p1)
click to toggle source
static VALUE
bdb_deleg_load(VALUE obj, VALUE str)
{
bdb_DB *dbst;
obj = bdb_local_aref();
Data_Get_Struct(obj, bdb_DB, dbst);
return rb_funcall(dbst->marshal, bdb_id_load, 1, str);
}
Public Instance Methods
_dump(p1)
click to toggle source
static VALUE
bdb_deleg_dump(VALUE obj, VALUE limit)
{
struct deleg_class *delegst;
bdb_DB *dbst;
Data_Get_Struct(obj, struct deleg_class, delegst);
Data_Get_Struct(delegst->db, bdb_DB, dbst);
return rb_funcall(dbst->marshal, bdb_id_dump, 1, delegst->obj);
}
_dump_data(p1)
click to toggle source
static VALUE
bdb_deleg_dump(VALUE obj, VALUE limit)
{
struct deleg_class *delegst;
bdb_DB *dbst;
Data_Get_Struct(obj, struct deleg_class, delegst);
Data_Get_Struct(delegst->db, bdb_DB, dbst);
return rb_funcall(dbst->marshal, bdb_id_dump, 1, delegst->obj);
}
inspect()
click to toggle source
static VALUE bdb_deleg_inspect(VALUE obj)
method_missing(*args)
click to toggle source
static VALUE
bdb_deleg_missing(int argc, VALUE *argv, VALUE obj)
{
struct deleg_class *delegst, *newst;
bdb_DB *dbst;
VALUE res, new;
Data_Get_Struct(obj, struct deleg_class, delegst);
if (rb_block_given_p()) {
#if HAVE_RB_BLOCK_CALL
res = rb_block_call(delegst->obj, id_send, argc, argv, rb_yield, 0);
#else
VALUE tmp[3];
tmp[0] = delegst->obj;
tmp[1] = (VALUE)argc;
tmp[2] = (VALUE)argv;
res = rb_iterate((VALUE(*)(VALUE))bdb_deleg_each, (VALUE)tmp, rb_yield, 0);
#endif
}
else {
res = rb_funcall2(delegst->obj, id_send, argc, argv);
}
Data_Get_Struct(delegst->db, bdb_DB, dbst);
if (dbst->dbp) {
VALUE nargv[2];
if (!SPECIAL_CONST_P(res) &&
(TYPE(res) != T_DATA ||
RDATA(res)->dmark != (RUBY_DATA_FUNC)bdb_deleg_mark)) {
new = Data_Make_Struct(bdb_cDelegate, struct deleg_class,
bdb_deleg_mark, free, newst);
newst->db = delegst->db;
newst->obj = res;
newst->key = (!delegst->type)?obj:delegst->key;
newst->type = 1;
res = new;
}
if (!delegst->type) {
nargv[0] = delegst->key;
nargv[1] = delegst->obj;
}
else {
Data_Get_Struct(delegst->key, struct deleg_class, newst);
nargv[0] = newst->key;
nargv[1] = newst->obj;
}
bdb_put(2, nargv, delegst->db);
}
return res;
}
to_a()
click to toggle source
static VALUE bdb_deleg_to_a(VALUE obj)
to_ary()
click to toggle source
static VALUE bdb_deleg_to_ary(VALUE obj)
to_f()
click to toggle source
static VALUE bdb_deleg_to_f(VALUE obj)
to_hash()
click to toggle source
static VALUE bdb_deleg_to_hash(VALUE obj)
to_i()
click to toggle source
static VALUE bdb_deleg_to_i(VALUE obj)
to_int()
click to toggle source
static VALUE bdb_deleg_to_int(VALUE obj)
to_io()
click to toggle source
static VALUE bdb_deleg_to_io(VALUE obj)
to_orig()
click to toggle source
VALUE
bdb_deleg_to_orig(VALUE obj)
{
struct deleg_class *delegst;
Data_Get_Struct(obj, struct deleg_class, delegst);
return delegst->obj;
}
to_proc()
click to toggle source
static VALUE bdb_deleg_to_proc(VALUE obj)
to_s()
click to toggle source
static VALUE bdb_deleg_to_s(VALUE obj)
to_str()
click to toggle source
static VALUE bdb_deleg_to_str(VALUE obj)