diff options
Diffstat (limited to 'ext/sdbm/init.c')
-rw-r--r-- | ext/sdbm/init.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/ext/sdbm/init.c b/ext/sdbm/init.c index f20e3cfa58..f473555840 100644 --- a/ext/sdbm/init.c +++ b/ext/sdbm/init.c @@ -242,6 +242,8 @@ fsdbm_select(argc, argv, obj) } } else { + rb_warn("SDBM#select(index..) is deprecated; use SDBM#values_at"); + for (i=0; i<argc; i++) { rb_ary_push(new, fsdbm_fetch(obj, argv[i], Qnil)); } @@ -251,6 +253,22 @@ fsdbm_select(argc, argv, obj) } static VALUE +fsdbm_values_at(argc, argv, obj) + int argc; + VALUE *argv; + VALUE obj; +{ + VALUE new = rb_ary_new2(argc); + int i; + + for (i=0; i<argc; i++) { + rb_ary_push(new, fsdbm_fetch(obj, argv[i], Qnil)); + } + + return new; +} + +static VALUE fsdbm_delete(obj, keystr) VALUE obj, keystr; { @@ -728,6 +746,7 @@ Init_sdbm() rb_define_method(rb_cDBM, "indexes", fsdbm_indexes, -1); rb_define_method(rb_cDBM, "indices", fsdbm_indexes, -1); rb_define_method(rb_cDBM, "select", fsdbm_select, -1); + rb_define_method(rb_cDBM, "values_at", fsdbm_values_at, -1); rb_define_method(rb_cDBM, "length", fsdbm_length, 0); rb_define_method(rb_cDBM, "size", fsdbm_length, 0); rb_define_method(rb_cDBM, "empty?", fsdbm_empty_p, 0); |