156 #define enumerator_free RUBY_TYPED_DEFAULT_FREE
355 rb_warn(
"Enumerator.new without a block is deprecated; use Object#to_enum");
418 obj, meth, argc, argv, size_fn,
Qnil);
479 #if SIZEOF_INT < SIZEOF_LONG
978 ID mid = default_method;
979 if (!
NIL_P(method)) {
989 eargs = default_args;
1065 #define yielder_free RUBY_TYPED_DEFAULT_FREE
1070 return p ?
sizeof(
struct yielder) : 0;
1171 #define generator_free RUBY_TYPED_DEFAULT_FREE
1176 return p ?
sizeof(
struct generator) : 0;
1247 "wrong argument type %s (expected Proc)",
1251 rb_warn(
"given block not used");
1464 obj, meth, argc, argv, size_fn,
Qnil);
1608 lazy_flat_map_func, 0),
1631 lazy_select_func, 0),
1654 lazy_reject_func, 0),
1676 if (
RTEST(result)) {
1687 lazy_grep_iter : lazy_grep_func,
1768 for (i = 0; i <
argc; i++) {
1771 for (; i <
argc; i++) {
1778 func = lazy_zip_func;
1854 lazy_take_while_func, 0),
1863 if (
NIL_P(receiver))
1867 return LONG2FIX(len < 0 ? 0 : len);
1922 lazy_drop_while_func, 0),
static VALUE append_method(VALUE obj, VALUE str, ID default_method, VALUE default_args)
static VALUE lazy_drop(VALUE obj, VALUE n)
#define RB_TYPE_P(obj, type)
static void enumerator_mark(void *p)
rb_funcall2(argv[0], id_yield, argc-1, argv+1)
VALUE rb_ary_entry(VALUE ary, long offset)
static VALUE next_i(VALUE curr, VALUE obj)
static VALUE rb_cGenerator
static VALUE enumerator_rewind(VALUE obj)
static VALUE lazy_reject(VALUE obj)
static VALUE lazy_grep(VALUE obj, VALUE pattern)
const char * rb_obj_classname(VALUE)
#define UNLIMITED_ARGUMENTS
static VALUE call_next(VALUE obj)
static void generator_mark(void *p)
VALUE rb_str_buf_append(VALUE, VALUE)
static VALUE enumerator_peek_values(VALUE obj)
static VALUE yielder_new(void)
static VALUE generator_init_copy(VALUE obj, VALUE orig)
static size_t generator_memsize(const void *p)
static VALUE enumerator_enum_size(VALUE obj, VALUE args, VALUE eobj)
rb_funcall(memo->yielder, id_lshift, 1, rb_assoc_new(memo->prev_value, memo->prev_elts))
SSL_METHOD *(* func)(void)
static VALUE yielder_allocate(VALUE klass)
#define rb_check_frozen(obj)
static VALUE lazy_size(VALUE self)
static VALUE yielder_init(VALUE obj, VALUE proc)
static VALUE enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv, rb_enumerator_size_func *size_fn, VALUE size)
ID rb_frame_this_func(void)
VALUE rb_enumerator_size_func(VALUE, VALUE, VALUE)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_ary_push(VALUE ary, VALUE item)
VALUE rb_yield_values2(int n, const VALUE *argv)
VALUE rb_fiber_yield(int argc, VALUE *argv)
static const rb_data_type_t generator_data_type
VALUE rb_ary_tmp_new(long capa)
VALUE rb_str_buf_cat2(VALUE, const char *)
static VALUE enumerator_next_values(VALUE obj)
VALUE rb_fiber_alive_p(VALUE fibval)
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
void rb_raise(VALUE exc, const char *fmt,...)
VALUE rb_proc_new(VALUE(*)(ANYARGS), VALUE)
VALUE rb_fiber_current(void)
VALUE rb_obj_class(VALUE)
static const rb_data_type_t yielder_data_type
static VALUE enum_size(VALUE self)
static VALUE enumerator_next(VALUE obj)
void rb_include_module(VALUE klass, VALUE module)
static VALUE enumerator_block_call(VALUE obj, rb_block_call_func *func, VALUE arg)
#define rb_enumeratorize_with_size(obj, id, argc, argv, size_fn)
static VALUE lazy_to_enum(int argc, VALUE *argv, VALUE self)
static VALUE yielder_yield(VALUE obj, VALUE args)
VALUE rb_class_path(VALUE)
static VALUE generator_initialize(int argc, VALUE *argv, VALUE obj)
static VALUE generator_allocate(VALUE klass)
VALUE rb_ivar_get(VALUE, ID)
static VALUE enumerator_with_object(VALUE obj, VALUE memo)
void InitVM_Enumerator(void)
rb_enumerator_size_func * size_fn
static VALUE lazy_flat_map(VALUE obj)
VALUE rb_block_call_func(RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg))
VALUE rb_enumeratorize(VALUE obj, VALUE meth, int argc, VALUE *argv)
void rb_exc_raise(VALUE mesg)
static VALUE lazy_map(VALUE obj)
static struct enumerator * enumerator_ptr(VALUE obj)
void rb_provide(const char *)
static VALUE enumerable_lazy(VALUE obj)
static VALUE get_next_values(VALUE obj, struct enumerator *e)
VALUE rb_block_proc(void)
VALUE rb_fiber_resume(VALUE fibval, int argc, VALUE *argv)
static VALUE enumerator_each(int argc, VALUE *argv, VALUE obj)
static VALUE enumerator_with_index(int argc, VALUE *argv, VALUE obj)
#define TypedData_Get_Struct(obj, type, data_type, sval)
int rb_block_given_p(void)
static VALUE obj_to_enum(int argc, VALUE *argv, VALUE obj)
VALUE rb_ary_cat(VALUE ary, const VALUE *ptr, long len)
RUBY_EXTERN VALUE rb_mKernel
static VALUE lazyenum_size(VALUE self, VALUE args, VALUE eobj)
#define RARRAY_CONST_PTR(a)
#define RARRAY_AREF(a, i)
static VALUE lazy_to_enum_i(VALUE self, VALUE meth, int argc, VALUE *argv, rb_enumerator_size_func *size_fn)
static VALUE enumerator_peek_values_m(VALUE obj)
static VALUE enumerator_size(VALUE obj)
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
static void next_init(VALUE obj, struct enumerator *e)
static VALUE lazy_take_size(VALUE generator, VALUE args, VALUE lazy)
VALUE rb_fiber_new(VALUE(*func)(ANYARGS), VALUE obj)
static VALUE stop_result(VALUE self)
#define OBJ_INIT_COPY(obj, orig)
VALUE rb_call_super(int, const VALUE *)
static VALUE lazy_take_while(VALUE obj)
static VALUE lazy_select(VALUE obj)
static VALUE generator_init(VALUE obj, VALUE proc)
static VALUE lazy_receiver_size(VALUE generator, VALUE args, VALUE lazy)
static VALUE yielder_yield_push(VALUE obj, VALUE args)
void rb_define_alias(VALUE klass, const char *name1, const char *name2)
Defines an alias of a method.
static VALUE lazy_super(int argc, VALUE *argv, VALUE lazy)
static VALUE lazy_drop_size(VALUE generator, VALUE args, VALUE lazy)
static VALUE lazy_take(VALUE obj, VALUE n)
VALUE rb_sprintf(const char *format,...)
rb_block_call(enumerable, id_each, 0, 0, chunk_ii, arg)
#define RUBY_TYPED_FREE_IMMEDIATELY
static VALUE enumerator_each_with_index(VALUE obj)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
static size_t enumerator_memsize(const void *p)
VALUE rb_rescue2(VALUE(*b_proc)(ANYARGS), VALUE data1, VALUE(*r_proc)(ANYARGS), VALUE data2,...)
VALUE rb_attr_get(VALUE, ID)
VALUE rb_int_succ(VALUE num)
static VALUE enumerator_initialize(int argc, VALUE *argv, VALUE obj)
static VALUE generator_each(int argc, VALUE *argv, VALUE obj)
static VALUE lazy_lazy(VALUE obj)
static VALUE lazy_initialize(int argc, VALUE *argv, VALUE self)
VALUE rb_obj_is_proc(VALUE)
VALUE rb_ary_new_from_values(long n, const VALUE *elts)
#define NEW_MEMO(a, b, c)
#define RETURN_SIZED_ENUMERATOR(obj, argc, argv, size_fn)
VALUE rb_enum_values_pack(int argc, const VALUE *argv)
static VALUE inspect_enumerator(VALUE obj, VALUE dummy, int recur)
static struct generator * generator_ptr(VALUE obj)
VALUE rb_obj_is_kind_of(VALUE, VALUE)
VALUE rb_proc_call(VALUE, VALUE)
static VALUE next_stopped(VALUE obj)
VALUE rb_check_array_type(VALUE ary)
#define TypedData_Make_Struct(klass, type, data_type, sval)
static void yielder_mark(void *p)
RUBY_EXTERN VALUE rb_cObject
#define RARRAY_LENINT(ary)
void Init_Enumerator(void)
int rb_respond_to(VALUE, ID)
VALUE rb_ary_dup(VALUE ary)
static VALUE enumerator_allocate(VALUE klass)
static VALUE lazy_set_method(VALUE lazy, VALUE args, rb_enumerator_size_func *size_fn)
VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
static VALUE enumerator_init_copy(VALUE obj, VALUE orig)
static VALUE lazy_flat_map_to_ary(VALUE obj, VALUE yielder)
rb_ivar_set(yielder, id_memo, LONG2NUM(++count))
static const rb_data_type_t enumerator_data_type
static VALUE yielder_initialize(VALUE obj)
static VALUE ary2sv(VALUE args, int dup)
static VALUE enumerator_peek(VALUE obj)
static size_t yielder_memsize(const void *p)
static VALUE lazy_drop_while(VALUE obj)
static VALUE enumerator_inspect(VALUE obj)
static VALUE lazy_zip(int argc, VALUE *argv, VALUE obj)
#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg)
return rb_yield_values(2, rb_enum_values_pack(argc, argv), INT2NUM(n))
static VALUE enumerator_feed(VALUE obj, VALUE v)
static struct yielder * yielder_ptr(VALUE obj)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
VALUE rb_check_funcall(VALUE, ID, int, const VALUE *)
void rb_warn(const char *fmt,...)
static VALUE lazy_flat_map_each(VALUE obj, VALUE yielder)