Data Structures | Defines | Functions | Variables

enumerator.c File Reference

#include "ruby/ruby.h"
Include dependency graph for enumerator.c:

Go to the source code of this file.

Data Structures

struct  enumerator
struct  generator
struct  yielder

Defines

#define enumerator_free   RUBY_TYPED_DEFAULT_FREE
#define yielder_free   RUBY_TYPED_DEFAULT_FREE
#define generator_free   RUBY_TYPED_DEFAULT_FREE

Functions

static VALUE generator_allocate (VALUE klass)
static VALUE generator_init (VALUE obj, VALUE proc)
static void enumerator_mark (void *p)
static size_t enumerator_memsize (const void *p)
static struct enumeratorenumerator_ptr (VALUE obj)
static VALUE obj_to_enum (int argc, VALUE *argv, VALUE obj)
static VALUE enumerator_allocate (VALUE klass)
static VALUE enumerator_init (VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv)
static VALUE enumerator_initialize (int argc, VALUE *argv, VALUE obj)
static VALUE enumerator_init_copy (VALUE obj, VALUE orig)
VALUE rb_enumeratorize (VALUE obj, VALUE meth, int argc, VALUE *argv)
static VALUE enumerator_block_call (VALUE obj, rb_block_call_func *func, VALUE arg)
static VALUE enumerator_each (VALUE obj)
static VALUE enumerator_with_index_i (VALUE val, VALUE m, int argc, VALUE *argv)
static VALUE enumerator_with_index (int argc, VALUE *argv, VALUE obj)
static VALUE enumerator_each_with_index (VALUE obj)
static VALUE enumerator_with_object_i (VALUE val, VALUE memo, int argc, VALUE *argv)
static VALUE enumerator_with_object (VALUE obj, VALUE memo)
static VALUE next_ii (VALUE i, VALUE obj, int argc, VALUE *argv)
static VALUE next_i (VALUE curr, VALUE obj)
static void next_init (VALUE obj, struct enumerator *e)
static VALUE get_next_values (VALUE obj, struct enumerator *e)
static VALUE enumerator_next_values (VALUE obj)
static VALUE ary2sv (VALUE args, int dup)
static VALUE enumerator_next (VALUE obj)
static VALUE enumerator_peek_values (VALUE obj)
static VALUE enumerator_peek_values_m (VALUE obj)
static VALUE enumerator_peek (VALUE obj)
static VALUE enumerator_feed (VALUE obj, VALUE v)
static VALUE enumerator_rewind (VALUE obj)
static VALUE inspect_enumerator (VALUE obj, VALUE dummy, int recur)
static VALUE enumerator_inspect (VALUE obj)
static void yielder_mark (void *p)
static size_t yielder_memsize (const void *p)
static struct yielderyielder_ptr (VALUE obj)
static VALUE yielder_allocate (VALUE klass)
static VALUE yielder_init (VALUE obj, VALUE proc)
static VALUE yielder_initialize (VALUE obj)
static VALUE yielder_yield (VALUE obj, VALUE args)
static VALUE yielder_yield_push (VALUE obj, VALUE args)
static VALUE yielder_yield_i (VALUE obj, VALUE memo, int argc, VALUE *argv)
static VALUE yielder_new (void)
static void generator_mark (void *p)
static size_t generator_memsize (const void *p)
static struct generatorgenerator_ptr (VALUE obj)
VALUE rb_obj_is_proc (VALUE proc)
static VALUE generator_initialize (int argc, VALUE *argv, VALUE obj)
static VALUE generator_init_copy (VALUE obj, VALUE orig)
static VALUE generator_each (VALUE obj)
static VALUE stop_result (VALUE self)
void Init_Enumerator (void)

Variables

VALUE rb_cEnumerator
static ID id_rewind
static ID id_each
static VALUE sym_each
VALUE rb_eStopIteration
static VALUE rb_cGenerator
static VALUE rb_cYielder
static const rb_data_type_t enumerator_data_type
static const rb_data_type_t yielder_data_type
static const rb_data_type_t generator_data_type

Define Documentation

#define enumerator_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 124 of file enumerator.c.

#define generator_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 908 of file enumerator.c.

#define yielder_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 805 of file enumerator.c.


Function Documentation

static VALUE ary2sv ( VALUE  args,
int  dup 
) [static]

Definition at line 535 of file enumerator.c.

References RARRAY_LEN, RARRAY_PTR, rb_ary_dup(), T_ARRAY, and TYPE.

Referenced by enumerator_next(), and enumerator_peek().

static VALUE enumerator_allocate ( VALUE  klass  )  [static]

Definition at line 183 of file enumerator.c.

References enumerator_data_type, enumerator::obj, and TypedData_Make_Struct.

Referenced by Init_Enumerator(), and rb_enumeratorize().

static VALUE enumerator_block_call ( VALUE  obj,
rb_block_call_func func,
VALUE  arg 
) [static]
static VALUE enumerator_each ( VALUE  obj  )  [static]

Definition at line 329 of file enumerator.c.

References enumerator_block_call(), and rb_block_given_p().

Referenced by Init_Enumerator().

static VALUE enumerator_each_with_index ( VALUE  obj  )  [static]

Definition at line 380 of file enumerator.c.

References enumerator_with_index(), and NULL.

Referenced by Init_Enumerator().

static VALUE enumerator_feed ( VALUE  obj,
VALUE  v 
) [static]

Definition at line 689 of file enumerator.c.

References enumerator_ptr(), enumerator::feedvalue, Qundef, rb_eTypeError, and rb_raise().

Referenced by Init_Enumerator().

static VALUE enumerator_init ( VALUE  enum_obj,
VALUE  obj,
VALUE  meth,
int  argc,
VALUE argv 
) [static]
static VALUE enumerator_init_copy ( VALUE  obj,
VALUE  orig 
) [static]
static VALUE enumerator_initialize ( int  argc,
VALUE argv,
VALUE  obj 
) [static]
static VALUE enumerator_inspect ( VALUE  obj  )  [static]

Definition at line 790 of file enumerator.c.

References inspect_enumerator(), and rb_exec_recursive().

Referenced by Init_Enumerator().

static void enumerator_mark ( void *  p  )  [static]
static size_t enumerator_memsize ( const void *  p  )  [static]

Definition at line 127 of file enumerator.c.

static VALUE enumerator_next ( VALUE  obj  )  [static]

Definition at line 576 of file enumerator.c.

References ary2sv(), and enumerator_next_values().

Referenced by Init_Enumerator().

static VALUE enumerator_next_values ( VALUE  obj  )  [static]

Definition at line 520 of file enumerator.c.

References enumerator_ptr(), get_next_values(), enumerator::lookahead, and Qundef.

Referenced by enumerator_next(), and Init_Enumerator().

static VALUE enumerator_peek ( VALUE  obj  )  [static]

Definition at line 646 of file enumerator.c.

References ary2sv(), and enumerator_peek_values().

Referenced by Init_Enumerator().

static VALUE enumerator_peek_values ( VALUE  obj  )  [static]
static VALUE enumerator_peek_values_m ( VALUE  obj  )  [static]

Definition at line 620 of file enumerator.c.

References enumerator_peek_values(), and rb_ary_dup().

Referenced by Init_Enumerator().

static struct enumerator* enumerator_ptr ( VALUE  obj  )  [static, read]
static VALUE enumerator_rewind ( VALUE  obj  )  [static]
static VALUE enumerator_with_index ( int  argc,
VALUE argv,
VALUE  obj 
) [static]
static VALUE enumerator_with_index_i ( VALUE  val,
VALUE  m,
int  argc,
VALUE argv 
) [static]

Definition at line 336 of file enumerator.c.

References INT2FIX, rb_ary_new4(), and rb_yield_values().

Referenced by enumerator_with_index().

static VALUE enumerator_with_object ( VALUE  obj,
VALUE  memo 
) [static]

Definition at line 406 of file enumerator.c.

References enumerator_block_call(), enumerator_with_object_i(), and RETURN_ENUMERATOR.

Referenced by Init_Enumerator().

static VALUE enumerator_with_object_i ( VALUE  val,
VALUE  memo,
int  argc,
VALUE argv 
) [static]

Definition at line 386 of file enumerator.c.

References rb_ary_new4(), and rb_yield_values().

Referenced by enumerator_with_object().

static VALUE generator_allocate ( VALUE  klass  )  [static]

Definition at line 937 of file enumerator.c.

References generator_data_type, generator::proc, and TypedData_Make_Struct.

Referenced by enumerator_initialize(), and Init_Enumerator().

static VALUE generator_each ( VALUE  obj  )  [static]

Definition at line 1013 of file enumerator.c.

References generator_ptr(), generator::proc, rb_ary_new3(), rb_proc_call(), and yielder_new().

Referenced by Init_Enumerator().

static VALUE generator_init ( VALUE  obj,
VALUE  proc 
) [static]
static VALUE generator_init_copy ( VALUE  obj,
VALUE  orig 
) [static]
static VALUE generator_initialize ( int  argc,
VALUE argv,
VALUE  obj 
) [static]
static void generator_mark ( void *  p  )  [static]

Definition at line 902 of file enumerator.c.

References generator::proc, and rb_gc_mark().

static size_t generator_memsize ( const void *  p  )  [static]

Definition at line 911 of file enumerator.c.

static struct generator* generator_ptr ( VALUE  obj  )  [static, read]
static VALUE get_next_values ( VALUE  obj,
struct enumerator e 
) [static]
void Init_Enumerator ( void   ) 
static VALUE inspect_enumerator ( VALUE  obj,
VALUE  dummy,
int  recur 
) [static]
static VALUE next_i ( VALUE  curr,
VALUE  obj 
) [static]
static VALUE next_ii ( VALUE  i,
VALUE  obj,
int  argc,
VALUE argv 
) [static]

Definition at line 415 of file enumerator.c.

References enumerator::args, enumerator_ptr(), enumerator::feedvalue, Qundef, rb_ary_new4(), and rb_fiber_yield().

Referenced by next_i().

static void next_init ( VALUE  obj,
struct enumerator e 
) [static]
static VALUE obj_to_enum ( int  argc,
VALUE argv,
VALUE  obj 
) [static]

Definition at line 171 of file enumerator.c.

References enumerator::meth, rb_enumeratorize(), and sym_each.

Referenced by Init_Enumerator().

VALUE rb_enumeratorize ( VALUE  obj,
VALUE  meth,
int  argc,
VALUE argv 
)

Definition at line 300 of file enumerator.c.

References enumerator_allocate(), enumerator_init(), and rb_cEnumerator.

Referenced by obj_to_enum().

VALUE rb_obj_is_proc ( VALUE  proc  ) 
static VALUE stop_result ( VALUE  self  )  [static]

Definition at line 1067 of file enumerator.c.

References rb_attr_get(), and rb_intern.

Referenced by Init_Enumerator().

static VALUE yielder_allocate ( VALUE  klass  )  [static]

Definition at line 834 of file enumerator.c.

References yielder::proc, TypedData_Make_Struct, and yielder_data_type.

Referenced by Init_Enumerator(), and yielder_new().

static VALUE yielder_init ( VALUE  obj,
VALUE  proc 
) [static]
static VALUE yielder_initialize ( VALUE  obj  )  [static]

Definition at line 863 of file enumerator.c.

References rb_block_proc(), rb_need_block(), and yielder_init().

Referenced by Init_Enumerator().

static void yielder_mark ( void *  p  )  [static]

Definition at line 799 of file enumerator.c.

References yielder::proc, and rb_gc_mark().

static size_t yielder_memsize ( const void *  p  )  [static]

Definition at line 808 of file enumerator.c.

static VALUE yielder_new ( void   )  [static]

Definition at line 893 of file enumerator.c.

References rb_cYielder, rb_proc_new(), yielder_allocate(), yielder_init(), and yielder_yield_i().

Referenced by generator_each().

static struct yielder* yielder_ptr ( VALUE  obj  )  [static, read]

Definition at line 821 of file enumerator.c.

References yielder::proc, Qundef, rb_eArgError, rb_raise(), TypedData_Get_Struct, and yielder_data_type.

Referenced by yielder_yield().

static VALUE yielder_yield ( VALUE  obj,
VALUE  args 
) [static]

Definition at line 872 of file enumerator.c.

References yielder::proc, rb_proc_call(), and yielder_ptr().

Referenced by Init_Enumerator(), and yielder_yield_push().

static VALUE yielder_yield_i ( VALUE  obj,
VALUE  memo,
int  argc,
VALUE argv 
) [static]

Definition at line 887 of file enumerator.c.

References rb_yield_values2().

Referenced by yielder_new().

static VALUE yielder_yield_push ( VALUE  obj,
VALUE  args 
) [static]

Definition at line 880 of file enumerator.c.

References yielder_yield().

Referenced by Init_Enumerator().


Variable Documentation

Initial value:
 {
    "enumerator",
    enumerator_mark,
    enumerator_free,
    enumerator_memsize,
}

Definition at line 132 of file enumerator.c.

Referenced by enumerator_allocate(), enumerator_init(), enumerator_init_copy(), enumerator_ptr(), and inspect_enumerator().

Initial value:
 {
    "generator",
    generator_mark,
    generator_free,
    generator_memsize,
}

Definition at line 916 of file enumerator.c.

Referenced by generator_allocate(), generator_init(), generator_init_copy(), and generator_ptr().

ID id_each [static]

Definition at line 79 of file enumerator.c.

Referenced by Init_Enumerator(), and next_i().

ID id_rewind [static]

Definition at line 79 of file enumerator.c.

Referenced by enumerator_rewind(), and Init_Enumerator().

Definition at line 78 of file enumerator.c.

Referenced by enum_chunk(), enum_slice_before(), Init_Enumerator(), and rb_enumeratorize().

VALUE rb_cGenerator [static]

Definition at line 95 of file enumerator.c.

Referenced by enumerator_initialize(), and Init_Enumerator().

VALUE rb_cYielder [static]

Definition at line 95 of file enumerator.c.

Referenced by Init_Enumerator(), and yielder_new().

Definition at line 82 of file enumerator.c.

Referenced by Init_Enumerator(), next_i(), rb_f_loop(), and zip_i().

VALUE sym_each [static]

Definition at line 80 of file enumerator.c.

Referenced by enumerator_initialize(), Init_Enumerator(), and obj_to_enum().

Initial value:
 {
    "yielder",
    yielder_mark,
    yielder_free,
    yielder_memsize,
}

Definition at line 813 of file enumerator.c.

Referenced by yielder_allocate(), yielder_init(), and yielder_ptr().