Ruby 2.7.0p0(2019-12-25revision647ee6f091eafcce70ffb75ddf7e121e192ab217)

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 MEMO * | lazyenum_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,
|  |  | y
| ) |  | RTEST(rb_num_coerce_relop((x), (y), idGE))

Definition at line 3733 of file enumerator.c.

## ◆ PASS_KW_SPLAT

#define PASS_KW_SPLAT (rb_empty_keyword_given_p() ? RB_PASS_EMPTY_KEYWORDS : rb_keyword_given_p())

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
| ) |  |

Definition at line 3374 of file enumerator.c.

References rb_arithmetic_sequence_components_t::begin, obj, rb_cArithSeq, and rb_obj_is_kind_of().

## ◆ 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.