diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-09 10:56:24 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-09 10:56:24 +0000 |
commit | b814252d728cb08f159da1777feca4f8e9362327 (patch) | |
tree | de6617897dbf6bce78045e3fa2ea84ea2422f166 /array.c | |
parent | 1bbcd202e4dab0894bc5ed68ce4ea84dc916980f (diff) |
1.1b7 pre
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@67 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r-- | array.c | 42 |
1 files changed, 22 insertions, 20 deletions
@@ -403,24 +403,19 @@ ary_index(ary, val) } static VALUE -ary_indexes(ary, args) - VALUE ary, args; +ary_indexes(argc, argv, ary) + int argc; + VALUE *argv; + VALUE ary; { - VALUE *p, *pend; VALUE new_ary; - int i = 0; + int i; - if (!args || NIL_P(args) || RARRAY(args)->len == 0) { - return ary_new2(0); + new_ary = ary_new2(argc); + for (i=0; i<argc; i++) { + ary_store(new_ary, i, ary_entry(ary, NUM2INT(argv[i]))); } - new_ary = ary_new2(RARRAY(args)->len); - - p = RARRAY(args)->ptr; pend = p + RARRAY(args)->len; - while (p < pend) { - ary_store(new_ary, i++, ary_entry(ary, NUM2INT(*p))); - p++; - } return new_ary; } @@ -821,20 +816,27 @@ ary_delete_if(ary) return ary; } -#if 0 static VALUE -ary_replace(ary) +ary_filter(ary) VALUE ary; { int i; + ary_modify(ary); for (i = 0; i < RARRAY(ary)->len; i++) { RARRAY(ary)->ptr[i] = rb_yield(RARRAY(ary)->ptr[i]); } + return ary; +} +static VALUE +ary_replace_method(ary, ary2) + VALUE ary, ary2; +{ + Check_Type(ary2, T_ARRAY); + ary_replace(ary, 0, RARRAY(ary2)->len, ary2); return ary; } -#endif static VALUE ary_clear(ary) @@ -1188,7 +1190,8 @@ Init_Array() rb_define_alias(cArray, "size", "length"); rb_define_method(cArray, "empty?", ary_empty_p, 0); rb_define_method(cArray, "index", ary_index, 1); - rb_define_method(cArray, "indexes", ary_indexes, -2); + rb_define_method(cArray, "indexes", ary_indexes, -1); + rb_define_method(cArray, "indices", ary_indexes, -1); rb_define_method(cArray, "clone", ary_clone, 0); rb_define_method(cArray, "dup", ary_dup, 0); rb_define_method(cArray, "join", ary_join_method, -1); @@ -1199,9 +1202,8 @@ Init_Array() rb_define_method(cArray, "delete", ary_delete, 1); rb_define_method(cArray, "delete_at", ary_delete_at, 1); rb_define_method(cArray, "delete_if", ary_delete_if, 0); -#if 0 - rb_define_method(cArray, "replace", ary_replace, 0); -#endif + rb_define_method(cArray, "filter", ary_filter, 0); + rb_define_method(cArray, "replace", ary_replace_method, 1); rb_define_method(cArray, "clear", ary_clear, 0); rb_define_method(cArray, "fill", ary_fill, -1); rb_define_method(cArray, "include?", ary_includes, 1); |