156 #define enumerator_free RUBY_TYPED_DEFAULT_FREE
352 rb_warn(
"Enumerator.new without a block is deprecated; use Object#to_enum");
879 int tainted, untrusted;
886 return rb_sprintf(
"#<%s: uninitialized>", cname);
911 else if (method !=
Qfalse) {
998 #define yielder_free RUBY_TYPED_DEFAULT_FREE
1003 return p ?
sizeof(
struct yielder) : 0;
1103 #define generator_free RUBY_TYPED_DEFAULT_FREE
1108 return p ?
sizeof(
struct generator) : 0;
1177 "wrong argument type %s (expected Proc)",
1181 rb_warn(
"given block not used");
1587 if (
RTEST(result)) {
1599 if (
RTEST(result)) {
1686 for (i = 0; i <
argc; i++) {
1689 for (; i <
argc; i++) {
1717 if ((remain =
NUM2LONG(memo)-1) == 0) {
1781 if (
NIL_P(receiver))
1785 return LONG2FIX(len < 0 ? 0 : len);
1798 if ((remain =
NUM2LONG(memo)) == 0) {
1827 if (memo ==
Qtrue) {
static VALUE lazy_drop(VALUE obj, VALUE n)
#define RB_TYPE_P(obj, type)
static VALUE lazy_zip_func(VALUE val, VALUE zip_args, int argc, VALUE *argv)
VALUE rb_block_call_func(VALUE, VALUE, int, VALUE *)
static void enumerator_mark(void *p)
VALUE rb_ary_new4(long n, const VALUE *elts)
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_drop_while_func(VALUE val, VALUE args, int argc, VALUE *argv)
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)
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)
SSL_METHOD *(* func)(void)
static VALUE yielder_allocate(VALUE klass)
static VALUE lazy_size(VALUE self)
static VALUE yielder_init(VALUE obj, VALUE proc)
ID rb_frame_this_func(void)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_ary_push(VALUE ary, VALUE item)
static VALUE enumerator_with_object_i(VALUE val, VALUE memo, int argc, VALUE *argv)
VALUE rb_yield_values2(int n, const VALUE *argv)
VALUE rb_fiber_yield(int argc, VALUE *argv)
VALUE rb_yield_values(int n,...)
static const rb_data_type_t generator_data_type
VALUE rb_ary_tmp_new(long capa)
static VALUE enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv, VALUE(*size_fn)(ANYARGS), VALUE size)
VALUE rb_str_buf_cat2(VALUE, const char *)
static VALUE enumerator_next_values(VALUE obj)
VALUE rb_fiber_alive_p(VALUE fibval)
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
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)
static const rb_data_type_t yielder_data_type
static VALUE enum_size(VALUE self)
VALUE rb_ary_new3(long n,...)
static VALUE enumerator_next(VALUE obj)
static VALUE lazy_to_enum_i(VALUE self, VALUE meth, int argc, VALUE *argv, VALUE(*size_fn)(ANYARGS))
void rb_include_module(VALUE klass, VALUE module)
static VALUE enumerator_block_call(VALUE obj, rb_block_call_func *func, VALUE arg)
static VALUE lazy_to_enum(int argc, VALUE *argv, VALUE self)
static VALUE lazy_drop_func(VALUE val, VALUE args, int argc, VALUE *argv)
static VALUE yielder_yield(VALUE obj, VALUE args)
static VALUE generator_initialize(int argc, VALUE *argv, VALUE obj)
static VALUE generator_allocate(VALUE klass)
static VALUE yielder_yield_i(VALUE obj, VALUE memo, int argc, VALUE *argv)
VALUE rb_ivar_get(VALUE, ID)
VALUE rb_str_concat(VALUE, VALUE)
static VALUE lazy_init_iterator(VALUE val, VALUE m, int argc, VALUE *argv)
static VALUE enumerator_with_object(VALUE obj, VALUE memo)
void InitVM_Enumerator(void)
static VALUE lazy_flat_map(VALUE obj)
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)
VALUE rb_enumeratorize_with_size(VALUE obj, VALUE meth, int argc, VALUE *argv, VALUE(*size_fn)(ANYARGS))
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 lazy_flat_map_func(VALUE val, VALUE m, 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 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 enumerator_with_index_i(VALUE val, VALUE m, int argc, VALUE *argv)
static VALUE lazy_take_while(VALUE obj)
static VALUE lazy_select(VALUE obj)
static VALUE generator_init(VALUE obj, VALUE proc)
VALUE rb_check_funcall(VALUE, ID, int, VALUE *)
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_init_block_i(VALUE val, VALUE m, int argc, VALUE *argv)
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,...)
VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE)
static VALUE enumerator_each_with_index(VALUE obj)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
VALUE rb_block_call(VALUE, ID, int, VALUE *, VALUE(*)(ANYARGS), VALUE)
static VALUE lazy_grep_iter(VALUE val, VALUE m, int argc, VALUE *argv)
VALUE(* size_fn)(ANYARGS)
VALUE rb_exc_new2(VALUE etype, const char *s)
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)
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_take_while_func(VALUE val, VALUE args, int argc, VALUE *argv)
static VALUE lazy_initialize(int argc, VALUE *argv, VALUE self)
VALUE rb_obj_is_proc(VALUE)
VALUE rb_ivar_set(VALUE, ID, VALUE)
VALUE rb_enum_values_pack(int argc, VALUE *argv)
#define RETURN_SIZED_ENUMERATOR(obj, argc, argv, size_fn)
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 lazy_map_func(VALUE val, VALUE m, int argc, VALUE *argv)
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)
static VALUE next_ii(VALUE i, VALUE obj, int argc, VALUE *argv)
VALUE rb_ary_dup(VALUE ary)
static VALUE enumerator_allocate(VALUE klass)
static VALUE lazy_zip_arrays_func(VALUE val, VALUE arrays, int argc, VALUE *argv)
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)
VALUE rb_ary_new2(long capa)
static const rb_data_type_t enumerator_data_type
static VALUE yielder_initialize(VALUE obj)
const char * rb_id2name(ID id)
#define rb_check_arity(argc, min, max)
static VALUE ary2sv(VALUE args, int dup)
static VALUE lazy_flat_map_i(VALUE i, VALUE yielder, int argc, VALUE *argv)
VALUE rb_funcall2(VALUE, ID, int, const VALUE *)
Calls a method.
static VALUE enumerator_peek(VALUE obj)
static VALUE lazy_set_method(VALUE lazy, VALUE args, VALUE(*size_fn)(ANYARGS))
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)
static VALUE enumerator_feed(VALUE obj, VALUE v)
static VALUE lazy_reject_func(VALUE val, VALUE m, int argc, VALUE *argv)
static VALUE lazy_grep_func(VALUE val, VALUE m, int argc, VALUE *argv)
static struct yielder * yielder_ptr(VALUE obj)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
void rb_warn(const char *fmt,...)
static VALUE lazy_flat_map_each(VALUE obj, VALUE yielder)
static VALUE lazy_take_func(VALUE val, VALUE args, int argc, VALUE *argv)
static VALUE lazy_select_func(VALUE val, VALUE m, int argc, VALUE *argv)