Ruby  2.7.1p83(2020-03-31revisiona0c7c23c9cec0d0ffcba012279cd652d28ad5bf3)
Data Structures | Macros | Typedefs | Functions | Variables
enumerator.c File Reference
#include "ruby/ruby.h"
#include "internal.h"
#include "id.h"

Go to the source code of this file.

Data Structures

struct  enumerator
 
struct  generator
 
struct  yielder
 
struct  producer
 
struct  lazyenum_funcs
 
struct  proc_entry
 
struct  enum_chain
 
struct  arith_seq_gen
 

Macros

#define id_call   idCall
 
#define id_each   idEach
 
#define id_eqq   idEqq
 
#define id_initialize   idInitialize
 
#define id_size   idSize
 
#define enumerator_free   RUBY_TYPED_DEFAULT_FREE
 
#define proc_entry_free   RUBY_TYPED_DEFAULT_FREE
 
#define PASS_KW_SPLAT   (rb_empty_keyword_given_p() ? RB_PASS_EMPTY_KEYWORDS : rb_keyword_given_p())
 
#define yielder_free   RUBY_TYPED_DEFAULT_FREE
 
#define generator_free   RUBY_TYPED_DEFAULT_FREE
 
#define memo_value   v2
 
#define memo_flags   u3.state
 
#define LAZY_MEMO_BREAK   1
 
#define LAZY_MEMO_PACKED   2
 
#define LAZY_MEMO_BREAK_P(memo)   ((memo)->memo_flags & LAZY_MEMO_BREAK)
 
#define LAZY_MEMO_PACKED_P(memo)   ((memo)->memo_flags & LAZY_MEMO_PACKED)
 
#define LAZY_MEMO_SET_BREAK(memo)   ((memo)->memo_flags |= LAZY_MEMO_BREAK)
 
#define LAZY_MEMO_SET_VALUE(memo, value)   MEMO_V2_SET(memo, value)
 
#define LAZY_MEMO_SET_PACKED(memo)   ((memo)->memo_flags |= LAZY_MEMO_PACKED)
 
#define LAZY_MEMO_RESET_PACKED(memo)   ((memo)->memo_flags &= ~LAZY_MEMO_PACKED)
 
#define producer_free   RUBY_TYPED_DEFAULT_FREE
 
#define enum_chain_free   RUBY_TYPED_DEFAULT_FREE
 
#define NUM_GE(x, y)   RTEST(rb_num_coerce_relop((x), (y), idGE))
 

Typedefs

typedef struct MEMOlazyenum_proc_func(VALUE, struct MEMO *, VALUE, long)
 
typedef VALUE lazyenum_size_func(VALUE, VALUE)
 

Functions

VALUE rb_enumeratorize (VALUE obj, VALUE meth, int argc, const VALUE *argv)
 
VALUE rb_enumeratorize_with_size (VALUE obj, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *size_fn)
 
VALUE rb_enumeratorize_with_size_kw (VALUE obj, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *size_fn, int kw_splat)
 
VALUE rb_arith_seq_new (VALUE obj, VALUE meth, int argc, VALUE const *argv, rb_enumerator_size_func *size_fn, VALUE beg, VALUE end, VALUE step, int excl)
 
int rb_arithmetic_sequence_extract (VALUE obj, rb_arithmetic_sequence_components_t *component)
 
void InitVM_Enumerator (void)
 
void Init_Enumerator (void)
 

Variables

VALUE rb_cEnumerator
 
VALUE rb_eStopIteration
 
VALUE rb_cArithSeq
 

Macro Definition Documentation

◆ enum_chain_free

#define enum_chain_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 3035 of file enumerator.c.

◆ enumerator_free

#define enumerator_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 215 of file enumerator.c.

◆ generator_free

#define generator_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 1404 of file enumerator.c.

◆ id_call

#define id_call   idCall

Definition at line 118 of file enumerator.c.

◆ id_each

#define id_each   idEach

Definition at line 119 of file enumerator.c.

◆ id_eqq

#define id_eqq   idEqq

Definition at line 120 of file enumerator.c.

◆ id_initialize

#define id_initialize   idInitialize

Definition at line 121 of file enumerator.c.

◆ id_size

#define id_size   idSize

Definition at line 122 of file enumerator.c.

◆ LAZY_MEMO_BREAK

#define LAZY_MEMO_BREAK   1

Definition at line 1589 of file enumerator.c.

◆ LAZY_MEMO_BREAK_P

#define LAZY_MEMO_BREAK_P (   memo)    ((memo)->memo_flags & LAZY_MEMO_BREAK)

Definition at line 1591 of file enumerator.c.

◆ LAZY_MEMO_PACKED

#define LAZY_MEMO_PACKED   2

Definition at line 1590 of file enumerator.c.

◆ LAZY_MEMO_PACKED_P

#define LAZY_MEMO_PACKED_P (   memo)    ((memo)->memo_flags & LAZY_MEMO_PACKED)

Definition at line 1592 of file enumerator.c.

◆ LAZY_MEMO_RESET_PACKED

#define LAZY_MEMO_RESET_PACKED (   memo)    ((memo)->memo_flags &= ~LAZY_MEMO_PACKED)

Definition at line 1596 of file enumerator.c.

◆ LAZY_MEMO_SET_BREAK

#define LAZY_MEMO_SET_BREAK (   memo)    ((memo)->memo_flags |= LAZY_MEMO_BREAK)

Definition at line 1593 of file enumerator.c.

◆ LAZY_MEMO_SET_PACKED

#define LAZY_MEMO_SET_PACKED (   memo)    ((memo)->memo_flags |= LAZY_MEMO_PACKED)

Definition at line 1595 of file enumerator.c.

◆ LAZY_MEMO_SET_VALUE

#define LAZY_MEMO_SET_VALUE (   memo,
  value 
)    MEMO_V2_SET(memo, value)

Definition at line 1594 of file enumerator.c.

◆ memo_flags

#define memo_flags   u3.state

Definition at line 1588 of file enumerator.c.

◆ memo_value

#define memo_value   v2

Definition at line 1587 of file enumerator.c.

◆ NUM_GE

#define NUM_GE (   x,
 
)    RTEST(rb_num_coerce_relop((x), (y), idGE))

Definition at line 3733 of file enumerator.c.

◆ PASS_KW_SPLAT

Definition at line 379 of file enumerator.c.

◆ proc_entry_free

#define proc_entry_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 262 of file enumerator.c.

◆ producer_free

#define producer_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 2852 of file enumerator.c.

◆ yielder_free

#define yielder_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 1264 of file enumerator.c.

Typedef Documentation

◆ lazyenum_proc_func

typedef struct MEMO* lazyenum_proc_func(VALUE, struct MEMO *, VALUE, long)

Definition at line 157 of file enumerator.c.

◆ lazyenum_size_func

typedef VALUE lazyenum_size_func(VALUE, VALUE)

Definition at line 158 of file enumerator.c.

Function Documentation

◆ Init_Enumerator()

void Init_Enumerator ( void  )

Definition at line 4089 of file enumerator.c.

◆ InitVM_Enumerator()

void InitVM_Enumerator ( void  )

Definition at line 3900 of file enumerator.c.

References rb_define_method(), rb_intern, and rb_mKernel.

◆ rb_arith_seq_new()

VALUE rb_arith_seq_new ( VALUE  obj,
VALUE  meth,
int  argc,
VALUE const argv,
rb_enumerator_size_func size_fn,
VALUE  beg,
VALUE  end,
VALUE  step,
int  excl 
)

Definition at line 3308 of file enumerator.c.

◆ rb_arithmetic_sequence_extract()

int rb_arithmetic_sequence_extract ( VALUE  obj,
rb_arithmetic_sequence_components_t component 
)

◆ rb_enumeratorize()

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

Definition at line 516 of file enumerator.c.

References argc, argv, enumerator::meth, obj, and rb_enumeratorize_with_size().

◆ rb_enumeratorize_with_size()

VALUE rb_enumeratorize_with_size ( VALUE  obj,
VALUE  meth,
int  argc,
const VALUE argv,
rb_enumerator_size_func size_fn 
)

Definition at line 525 of file enumerator.c.

References obj, rb_obj_is_kind_of(), and RTEST.

Referenced by rb_enumeratorize().

◆ rb_enumeratorize_with_size_kw()

VALUE rb_enumeratorize_with_size_kw ( VALUE  obj,
VALUE  meth,
int  argc,
const VALUE argv,
rb_enumerator_size_func size_fn,
int  kw_splat 
)

Definition at line 537 of file enumerator.c.

References obj, rb_obj_is_kind_of(), and RTEST.

Variable Documentation

◆ rb_cArithSeq

VALUE rb_cArithSeq

Definition at line 180 of file enumerator.c.

Referenced by rb_arithmetic_sequence_extract(), and rb_range_values().

◆ rb_cEnumerator

VALUE rb_cEnumerator

Definition at line 109 of file enumerator.c.

◆ rb_eStopIteration

VALUE rb_eStopIteration

Definition at line 124 of file enumerator.c.