From b1f96af92f5b8519c477de3bd8917e5220442f6b Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> Date: Tue, 8 Sep 1998 07:09:52 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'v1_1d-start'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_1d-start@299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enum.c | 106 ++++++++++++++++++++++++++++------------------------------------- 1 file changed, 46 insertions(+), 60 deletions(-) (limited to 'enum.c') diff --git a/enum.c b/enum.c index 4cf490e4ca..ca76d2aca2 100644 --- a/enum.c +++ b/enum.c @@ -12,7 +12,7 @@ #include "ruby.h" -VALUE mEnumerable; +VALUE rb_mEnumerable; static ID id_each, id_eqq, id_cmp; VALUE @@ -27,7 +27,7 @@ grep_i(i, arg) VALUE i, *arg; { if (RTEST(rb_funcall(arg[0], id_eqq, 1, i))) { - ary_push(arg[1], i); + rb_ary_push(arg[1], i); } return Qnil; } @@ -46,14 +46,14 @@ static VALUE enum_grep(obj, pat) VALUE obj, pat; { - if (iterator_p()) { + if (rb_iterator_p()) { rb_iterate(rb_each, obj, grep_iter_i, pat); return obj; } else { VALUE tmp, arg[2]; - arg[0] = pat; arg[1] = tmp = ary_new(); + arg[0] = pat; arg[1] = tmp = rb_ary_new(); rb_iterate(rb_each, obj, grep_i, (VALUE)arg); return tmp; @@ -71,7 +71,7 @@ find_i(i, arg) struct find_arg *arg; { if (RTEST(rb_yield(i))) { - arg->found = TRUE; + arg->found = Qtrue; arg->val = i; rb_iter_break(); } @@ -88,7 +88,7 @@ enum_find(argc, argv, obj) VALUE if_none; rb_scan_args(argc, argv, "01", &if_none); - arg.found = FALSE; + arg.found = Qfalse; rb_iterate(rb_each, obj, find_i, (VALUE)&arg); if (arg.found) { return arg.val; @@ -104,7 +104,7 @@ find_all_i(i, tmp) VALUE i, tmp; { if (RTEST(rb_yield(i))) { - ary_push(tmp, i); + rb_ary_push(tmp, i); } return Qnil; } @@ -115,7 +115,7 @@ enum_find_all(obj) { VALUE tmp; - tmp = ary_new(); + tmp = rb_ary_new(); rb_iterate(rb_each, obj, find_all_i, tmp); return tmp; @@ -125,7 +125,7 @@ static VALUE collect_i(i, tmp) VALUE i, tmp; { - ary_push(tmp, rb_yield(i)); + rb_ary_push(tmp, rb_yield(i)); return Qnil; } @@ -135,37 +135,17 @@ enum_collect(obj) { VALUE tmp; - tmp = ary_new(); + tmp = rb_ary_new(); rb_iterate(rb_each, obj, collect_i, tmp); return tmp; } -static VALUE -reverse_i(i, tmp) - VALUE i, tmp; -{ - ary_unshift(tmp, i); - return Qnil; -} - -static VALUE -enum_reverse(obj) - VALUE obj; -{ - VALUE tmp; - - tmp = ary_new(); - rb_iterate(rb_each, obj, reverse_i, tmp); - - return tmp; -} - static VALUE enum_all(i, ary) VALUE i, ary; { - ary_push(ary, i); + rb_ary_push(ary, i); return Qnil; } @@ -175,7 +155,7 @@ enum_to_a(obj) { VALUE ary; - ary = ary_new(); + ary = rb_ary_new(); rb_iterate(rb_each, obj, enum_all, ary); return ary; @@ -185,7 +165,7 @@ static VALUE enum_sort(obj) VALUE obj; { - return ary_sort(enum_to_a(obj)); + return rb_ary_sort(enum_to_a(obj)); } static VALUE @@ -213,7 +193,7 @@ min_ii(i, min) if (NIL_P(*min)) *min = i; else { - cmp = rb_yield(assoc_new(i, *min)); + cmp = rb_yield(rb_assoc_new(i, *min)); if (FIX2LONG(cmp) < 0) *min = i; } @@ -226,7 +206,7 @@ enum_min(obj) { VALUE min = Qnil; - rb_iterate(rb_each, obj, iterator_p()?min_ii:min_i, (VALUE)&min); + rb_iterate(rb_each, obj, rb_iterator_p()?min_ii:min_i, (VALUE)&min); return min; } @@ -255,7 +235,7 @@ max_ii(i, max) if (NIL_P(*max)) *max = i; else { - cmp = rb_yield(assoc_new(i, *max)); + cmp = rb_yield(rb_assoc_new(i, *max)); if (FIX2LONG(cmp) > 0) *max = i; } @@ -268,7 +248,7 @@ enum_max(obj) { VALUE max = Qnil; - rb_iterate(rb_each, obj, iterator_p()?max_ii:max_i, (VALUE)&max); + rb_iterate(rb_each, obj, rb_iterator_p()?max_ii:max_i, (VALUE)&max); return max; } @@ -328,8 +308,8 @@ enum_member(obj, val) iv.i = 0; iv.v = val; rb_iterate(rb_each, obj, member_i, (VALUE)&iv); - if (iv.i) return TRUE; - return FALSE; + if (iv.i) return Qtrue; + return Qfalse; } static VALUE @@ -341,7 +321,7 @@ length_i(i, length) return Qnil; } -VALUE +static VALUE enum_length(obj) VALUE obj; { @@ -351,17 +331,24 @@ enum_length(obj) return INT2FIX(length); } +VALUE +rb_enum_length(obj) + VALUE obj; +{ + return enum_length(obj); +} + static VALUE each_with_index_i(val, indexp) VALUE val; int *indexp; { - rb_yield(assoc_new(val, INT2FIX(*indexp))); + rb_yield(rb_assoc_new(val, INT2FIX(*indexp))); (*indexp)++; return Qnil; } -VALUE +static VALUE enum_each_with_index(obj) VALUE obj; { @@ -374,24 +361,23 @@ enum_each_with_index(obj) void Init_Enumerable() { - mEnumerable = rb_define_module("Enumerable"); - - rb_define_method(mEnumerable,"to_a", enum_to_a, 0); - - rb_define_method(mEnumerable,"sort", enum_sort, 0); - rb_define_method(mEnumerable,"grep", enum_grep, 1); - rb_define_method(mEnumerable,"find", enum_find, -1); - rb_define_method(mEnumerable,"find_all", enum_find_all, 0); - rb_define_method(mEnumerable,"collect", enum_collect, 0); - rb_define_method(mEnumerable,"reverse", enum_reverse, 0); - rb_define_method(mEnumerable,"min", enum_min, 0); - rb_define_method(mEnumerable,"max", enum_max, 0); - rb_define_method(mEnumerable,"index", enum_index, 1); - rb_define_method(mEnumerable,"member?", enum_member, 1); - rb_define_method(mEnumerable,"include?", enum_member, 1); - rb_define_method(mEnumerable,"length", enum_length, 0); - rb_define_method(mEnumerable,"size", enum_length, 0); - rb_define_method(mEnumerable,"each_with_index", enum_each_with_index, 0); + rb_mEnumerable = rb_define_module("Enumerable"); + + rb_define_method(rb_mEnumerable,"to_a", enum_to_a, 0); + + rb_define_method(rb_mEnumerable,"sort", enum_sort, 0); + rb_define_method(rb_mEnumerable,"grep", enum_grep, 1); + rb_define_method(rb_mEnumerable,"find", enum_find, -1); + rb_define_method(rb_mEnumerable,"find_all", enum_find_all, 0); + rb_define_method(rb_mEnumerable,"collect", enum_collect, 0); + rb_define_method(rb_mEnumerable,"min", enum_min, 0); + rb_define_method(rb_mEnumerable,"max", enum_max, 0); + rb_define_method(rb_mEnumerable,"index", enum_index, 1); + rb_define_method(rb_mEnumerable,"member?", enum_member, 1); + rb_define_method(rb_mEnumerable,"include?", enum_member, 1); + rb_define_method(rb_mEnumerable,"length", enum_length, 0); + rb_define_method(rb_mEnumerable,"size", enum_length, 0); + rb_define_method(rb_mEnumerable,"each_with_index", enum_each_with_index, 0); id_eqq = rb_intern("==="); id_each = rb_intern("each"); -- cgit v1.2.3