Method: SDBM#each

Defined in:
init.c

#eachObject #each {|key, value| ... } ⇒ Object #each_pairObject #each_pair {|key, value| ... } ⇒ Object

Iterates over each key-value pair in the database.

If no block is given, returns an Enumerator.

Overloads:

  • #each {|key, value| ... } ⇒ Object

    Yields:

  • #each_pair {|key, value| ... } ⇒ Object

    Yields:



819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
# File 'init.c', line 819

static VALUE
fsdbm_each_pair(VALUE obj)
{
    datum key, val;
    DBM *dbm;
    struct dbmdata *dbmp;
    VALUE keystr, valstr;

    RETURN_ENUMERATOR(obj, 0, 0);

    GetDBM2(obj, dbmp, dbm);
    for (key = sdbm_firstkey(dbm); key.dptr; key = sdbm_nextkey(dbm)) {
	val = sdbm_fetch(dbm, key);
	keystr = rb_external_str_new(key.dptr, key.dsize);
	valstr = rb_external_str_new(val.dptr, val.dsize);
	rb_yield(rb_assoc_new(keystr, valstr));
	GetDBM2(obj, dbmp, dbm);
    }

    return obj;
}