invert()
public
Returns a Hash in which the key-value pairs have
been inverted.
Example:
require 'sdbm'
SDBM.open 'my_database' do |db|
db.update('apple' => 'fruit', 'spinach' => 'vegetable')
db.invert
end
static VALUE
fsdbm_invert(VALUE obj)
{
datum key, val;
struct dbmdata *dbmp;
DBM *dbm;
VALUE keystr, valstr;
VALUE hash = rb_hash_new();
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_hash_aset(hash, valstr, keystr);
}
return hash;
}