method
reject!
v1_9_3_392 -
Show latest stable
- Class:
GDBM
reject!()public
Deletes every key-value pair from gdbm for which block evaluates to true.
static VALUE
fgdbm_delete_if(VALUE obj)
{
struct dbmdata *dbmp;
GDBM_FILE dbm;
VALUE keystr, valstr;
VALUE ret, ary = rb_ary_new();
int i, status = 0, n;
rb_gdbm_modify(obj);
GetDBM2(obj, dbmp, dbm);
n = dbmp->di_size;
dbmp->di_size = -1;
for (keystr = rb_gdbm_firstkey(dbm); RTEST(keystr);
keystr = rb_gdbm_nextkey(dbm, keystr)) {
valstr = rb_gdbm_fetch2(dbm, keystr);
ret = rb_protect(rb_yield, rb_assoc_new(keystr, valstr), &status);
if (status != 0) break;
if (RTEST(ret)) rb_ary_push(ary, keystr);
GetDBM2(obj, dbmp, dbm);
}
for (i = 0; i < RARRAY_LEN(ary); i++)
rb_gdbm_delete(obj, RARRAY_PTR(ary)[i]);
if (status) rb_jump_tag(status);
if (n > 0) dbmp->di_size = n - (int)RARRAY_LEN(ary);
return obj;
} Related methods
- Instance methods
- []
- []=
- cachesize=
- clear
- close
- closed?
- delete
- delete_if
- each
- each_key
- each_pair
- each_value
- empty?
- fastmode=
- fetch
- has_key?
- has_value?
- include?
- index
- invert
- key
- key?
- keys
- length
- member?
- reject
- reject!
- reorganize
- replace
- select
- shift
- size
- store
- sync
- syncmode=
- to_a
- to_hash
- update
- value?
- values
- values_at
- Class methods
- new
- open