Method: DBM#key

Defined in:
dbm.c

#key(value) ⇒ String

Returns the key for the specified value.

Returns:

  • (String)


329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
# File 'dbm.c', line 329

static VALUE
fdbm_key(VALUE obj, VALUE valstr)
{
    datum key, val;
    struct dbmdata *dbmp;
    DBM *dbm;
    long len;

    ExportStringValue(valstr);
    len = RSTRING_LEN(valstr);
    if (TOO_LONG(len)) return Qnil;

    GetDBM2(obj, dbmp, dbm);
    for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) {
  val = dbm_fetch(dbm, key);
  if ((long)val.dsize == RSTRING_LEN(valstr) &&
      memcmp(val.dptr, RSTRING_PTR(valstr), val.dsize) == 0) {
      return rb_str_new(key.dptr, key.dsize);
  }
    }
    return Qnil;
}