From 9f45081627cf682b3ee938353da134d6f28560da Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 29 Nov 2013 02:26:48 +0000 Subject: ruby/ruby.h: add blockarg to rb_block_call_func * include/ruby/ruby.h (rb_block_call_func): add blockarg. block function can take block argument, e.g., proc {|&blockarg| ...}. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enumerator.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'enumerator.c') diff --git a/enumerator.c b/enumerator.c index a3022ce3bb..038773e3bb 100644 --- a/enumerator.c +++ b/enumerator.c @@ -493,7 +493,7 @@ enumerator_each(int argc, VALUE *argv, VALUE obj) } static VALUE -enumerator_with_index_i(VALUE val, VALUE m, int argc, VALUE *argv) +enumerator_with_index_i(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE *memo = (VALUE *)m; VALUE idx = *memo; @@ -557,7 +557,7 @@ enumerator_each_with_index(VALUE obj) } static VALUE -enumerator_with_object_i(VALUE val, VALUE memo, int argc, VALUE *argv) +enumerator_with_object_i(VALUE val, VALUE memo, int argc, VALUE *argv, VALUE blockarg) { if (argc <= 1) return rb_yield_values(2, val, memo); @@ -604,7 +604,7 @@ enumerator_with_object(VALUE obj, VALUE memo) } static VALUE -next_ii(VALUE i, VALUE obj, int argc, VALUE *argv) +next_ii(VALUE i, VALUE obj, int argc, VALUE *argv, VALUE blockarg) { struct enumerator *e = enumerator_ptr(obj); VALUE feedvalue = Qnil; @@ -1147,7 +1147,7 @@ static VALUE yielder_yield_push(VALUE obj, VALUE args) } static VALUE -yielder_yield_i(VALUE obj, VALUE memo, int argc, VALUE *argv) +yielder_yield_i(VALUE obj, VALUE memo, int argc, VALUE *argv, VALUE blockarg) { return rb_yield_values2(argc, argv); } @@ -1318,7 +1318,7 @@ lazy_receiver_size(VALUE generator, VALUE args, VALUE lazy) } static VALUE -lazy_init_iterator(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_init_iterator(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE result; if (argc == 1) { @@ -1344,7 +1344,7 @@ lazy_init_iterator(VALUE val, VALUE m, int argc, VALUE *argv) } static VALUE -lazy_init_block_i(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_init_block_i(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { rb_block_call(m, id_each, argc-1, argv+1, lazy_init_iterator, val); return Qnil; @@ -1504,7 +1504,7 @@ lazy_to_enum(int argc, VALUE *argv, VALUE self) } static VALUE -lazy_map_func(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_map_func(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE result = rb_yield_values2(argc - 1, &argv[1]); @@ -1525,7 +1525,7 @@ lazy_map(VALUE obj) } static VALUE -lazy_flat_map_i(VALUE i, VALUE yielder, int argc, VALUE *argv) +lazy_flat_map_i(VALUE i, VALUE yielder, int argc, VALUE *argv, VALUE blockarg) { return rb_funcall2(yielder, id_yield, argc, argv); } @@ -1554,7 +1554,7 @@ lazy_flat_map_to_ary(VALUE obj, VALUE yielder) } static VALUE -lazy_flat_map_func(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_flat_map_func(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE result = rb_yield_values2(argc - 1, &argv[1]); if (RB_TYPE_P(result, T_ARRAY)) { @@ -1610,7 +1610,7 @@ lazy_flat_map(VALUE obj) } static VALUE -lazy_select_func(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_select_func(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE element = rb_enum_values_pack(argc - 1, argv + 1); @@ -1633,7 +1633,7 @@ lazy_select(VALUE obj) } static VALUE -lazy_reject_func(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_reject_func(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE element = rb_enum_values_pack(argc - 1, argv + 1); @@ -1656,7 +1656,7 @@ lazy_reject(VALUE obj) } static VALUE -lazy_grep_func(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_grep_func(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE i = rb_enum_values_pack(argc - 1, argv + 1); VALUE result = rb_funcall(m, id_eqq, 1, i); @@ -1668,7 +1668,7 @@ lazy_grep_func(VALUE val, VALUE m, int argc, VALUE *argv) } static VALUE -lazy_grep_iter(VALUE val, VALUE m, int argc, VALUE *argv) +lazy_grep_iter(VALUE val, VALUE m, int argc, VALUE *argv, VALUE blockarg) { VALUE i = rb_enum_values_pack(argc - 1, argv + 1); VALUE result = rb_funcall(m, id_eqq, 1, i); @@ -1702,7 +1702,7 @@ next_stopped(VALUE obj) } static VALUE -lazy_zip_arrays_func(VALUE val, VALUE arrays, int argc, VALUE *argv) +lazy_zip_arrays_func(VALUE val, VALUE arrays, int argc, VALUE *argv, VALUE blockarg) { VALUE yielder, ary, memo; long i, count; @@ -1722,7 +1722,7 @@ lazy_zip_arrays_func(VALUE val, VALUE arrays, int argc, VALUE *argv) } static VALUE -lazy_zip_func(VALUE val, VALUE zip_args, int argc, VALUE *argv) +lazy_zip_func(VALUE val, VALUE zip_args, int argc, VALUE *argv, VALUE blockarg) { VALUE yielder, ary, arg, v; long i; @@ -1787,7 +1787,7 @@ lazy_zip(int argc, VALUE *argv, VALUE obj) } static VALUE -lazy_take_func(VALUE val, VALUE args, int argc, VALUE *argv) +lazy_take_func(VALUE val, VALUE args, int argc, VALUE *argv, VALUE blockarg) { long remain; VALUE memo = rb_attr_get(argv[0], id_memo); @@ -1836,7 +1836,7 @@ lazy_take(VALUE obj, VALUE n) } static VALUE -lazy_take_while_func(VALUE val, VALUE args, int argc, VALUE *argv) +lazy_take_while_func(VALUE val, VALUE args, int argc, VALUE *argv, VALUE blockarg) { VALUE result = rb_yield_values2(argc - 1, &argv[1]); if (!RTEST(result)) return Qundef; @@ -1870,7 +1870,7 @@ lazy_drop_size(VALUE generator, VALUE args, VALUE lazy) } static VALUE -lazy_drop_func(VALUE val, VALUE args, int argc, VALUE *argv) +lazy_drop_func(VALUE val, VALUE args, int argc, VALUE *argv, VALUE blockarg) { long remain; VALUE memo = rb_attr_get(argv[0], id_memo); @@ -1900,7 +1900,7 @@ lazy_drop(VALUE obj, VALUE n) } static VALUE -lazy_drop_while_func(VALUE val, VALUE args, int argc, VALUE *argv) +lazy_drop_while_func(VALUE val, VALUE args, int argc, VALUE *argv, VALUE blockarg) { VALUE memo = rb_attr_get(argv[0], id_memo); if (NIL_P(memo) && !RTEST(rb_yield_values2(argc - 1, &argv[1]))) { -- cgit v1.2.3