mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
2000-05-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
24b9bdca25
commit
8b1de0b1ad
49 changed files with 610 additions and 613 deletions
40
array.c
40
array.c
|
@ -584,30 +584,32 @@ rb_ary_aset(argc, argv, ary)
|
|||
VALUE *argv;
|
||||
VALUE ary;
|
||||
{
|
||||
VALUE arg1, arg2, arg3;
|
||||
long offset, beg, len;
|
||||
|
||||
if (rb_scan_args(argc, argv, "21", &arg1, &arg2, &arg3) == 3) {
|
||||
rb_ary_replace(ary, NUM2LONG(arg1), NUM2LONG(arg2), arg3);
|
||||
return arg3;
|
||||
if (argc == 3) {
|
||||
rb_ary_replace(ary, NUM2LONG(argv[0]), NUM2LONG(argv[1]), argv[2]);
|
||||
return argv[2];
|
||||
}
|
||||
else if (FIXNUM_P(arg1)) {
|
||||
offset = FIX2LONG(arg1);
|
||||
if (argc != 2) {
|
||||
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)", argc);
|
||||
}
|
||||
if (FIXNUM_P(argv[0])) {
|
||||
offset = FIX2LONG(argv[0]);
|
||||
goto fixnum;
|
||||
}
|
||||
else if (rb_range_beg_len(arg1, &beg, &len, RARRAY(ary)->len, 1)) {
|
||||
else if (rb_range_beg_len(argv[0], &beg, &len, RARRAY(ary)->len, 1)) {
|
||||
/* check if idx is Range */
|
||||
rb_ary_replace(ary, beg, len, arg2);
|
||||
return arg2;
|
||||
rb_ary_replace(ary, beg, len, argv[1]);
|
||||
return argv[1];
|
||||
}
|
||||
if (TYPE(arg1) == T_BIGNUM) {
|
||||
if (TYPE(argv[0]) == T_BIGNUM) {
|
||||
rb_raise(rb_eIndexError, "index too big");
|
||||
}
|
||||
|
||||
offset = NUM2LONG(arg1);
|
||||
offset = NUM2LONG(argv[0]);
|
||||
fixnum:
|
||||
rb_ary_store(ary, offset, arg2);
|
||||
return arg2;
|
||||
rb_ary_store(ary, offset, argv[1]);
|
||||
return argv[1];
|
||||
}
|
||||
|
||||
VALUE
|
||||
|
@ -957,7 +959,7 @@ sort_internal(ary)
|
|||
VALUE ary;
|
||||
{
|
||||
qsort(RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE),
|
||||
rb_iterator_p()?sort_1:sort_2);
|
||||
rb_block_given_p()?sort_1:sort_2);
|
||||
return ary;
|
||||
}
|
||||
|
||||
|
@ -997,7 +999,7 @@ rb_ary_collect(ary)
|
|||
long len, i;
|
||||
VALUE collect;
|
||||
|
||||
if (!rb_iterator_p()) {
|
||||
if (!rb_block_given_p()) {
|
||||
return rb_ary_dup(ary);
|
||||
}
|
||||
|
||||
|
@ -1046,7 +1048,7 @@ rb_ary_delete(ary, item)
|
|||
i2++;
|
||||
}
|
||||
if (RARRAY(ary)->len == i2) {
|
||||
if (rb_iterator_p()) {
|
||||
if (rb_block_given_p()) {
|
||||
return rb_yield(item);
|
||||
}
|
||||
return Qnil;
|
||||
|
@ -1081,7 +1083,7 @@ rb_ary_delete_at(ary, pos)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
rb_ary_delete_at_m(argc, argv, ary)
|
||||
rb_ary_slice_bang(argc, argv, ary)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE ary;
|
||||
|
@ -1627,7 +1629,7 @@ Init_Array()
|
|||
rb_define_method(rb_cArray, "map!", rb_ary_collect_bang, 0);
|
||||
rb_define_method(rb_cArray, "filter", rb_ary_filter, 0);
|
||||
rb_define_method(rb_cArray, "delete", rb_ary_delete, 1);
|
||||
rb_define_method(rb_cArray, "delete_at", rb_ary_delete_at_m, -1);
|
||||
rb_define_method(rb_cArray, "delete_at", rb_ary_delete_at, -1);
|
||||
rb_define_method(rb_cArray, "delete_if", rb_ary_delete_if, 0);
|
||||
rb_define_method(rb_cArray, "reject!", rb_ary_delete_if, 0);
|
||||
rb_define_method(rb_cArray, "replace", rb_ary_replace_m, 1);
|
||||
|
@ -1637,7 +1639,7 @@ Init_Array()
|
|||
rb_define_method(rb_cArray, "<=>", rb_ary_cmp, 1);
|
||||
|
||||
rb_define_method(rb_cArray, "slice", rb_ary_aref, -1);
|
||||
rb_define_method(rb_cArray, "slice!", rb_ary_delete_at_m, -1);
|
||||
rb_define_method(rb_cArray, "slice!", rb_ary_slice_bang, -1);
|
||||
|
||||
rb_define_method(rb_cArray, "assoc", rb_ary_assoc, 1);
|
||||
rb_define_method(rb_cArray, "rassoc", rb_ary_rassoc, 1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue