Ruby  2.0.0p598(2014-11-13revision48408)
Data Structures | Macros | Functions | Variables
enum.c File Reference
#include "ruby/ruby.h"
#include "ruby/util.h"
#include "node.h"
#include "id.h"
#include "internal.h"

Go to the source code of this file.

Data Structures

struct  sort_by_data
 
struct  minmax_t
 
struct  minmax_by_t
 
struct  chunk_arg
 
struct  slicebefore_arg
 

Macros

#define STATIC_ASSERT(name, expr)   typedef int static_assert_##name##_check[1 - 2*!(expr)]
 
#define id_each   idEach
 
#define id_eqq   idEqq
 
#define id_cmp   idCmp
 
#define id_lshift   idLTLT
 
#define ENUM_WANT_SVALUE()
 
#define enum_yield   rb_yield_values2
 
#define SORT_BY_BUFSIZE   16
 
#define ENUMFUNC(name)   rb_block_given_p() ? name##_iter_i : name##_i
 
#define DEFINE_ENUMFUNCS(name)
 
#define rb_intern(str)   rb_intern_const(str)
 

Functions

VALUE rb_enum_values_pack (int argc, VALUE *argv)
 
static VALUE grep_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE grep_iter_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_grep (VALUE obj, VALUE pat)
 
static VALUE count_i (VALUE i, VALUE memop, int argc, VALUE *argv)
 
static VALUE count_iter_i (VALUE i, VALUE memop, int argc, VALUE *argv)
 
static VALUE count_all_i (VALUE i, VALUE memop, int argc, VALUE *argv)
 
static VALUE enum_count (int argc, VALUE *argv, VALUE obj)
 
static VALUE find_i (VALUE i, VALUE memop, int argc, VALUE *argv)
 
static VALUE enum_find (int argc, VALUE *argv, VALUE obj)
 
static VALUE find_index_i (VALUE i, VALUE memop, int argc, VALUE *argv)
 
static VALUE find_index_iter_i (VALUE i, VALUE memop, int argc, VALUE *argv)
 
static VALUE enum_find_index (int argc, VALUE *argv, VALUE obj)
 
static VALUE find_all_i (VALUE i, VALUE ary, int argc, VALUE *argv)
 
static VALUE enum_size (VALUE self, VALUE args)
 
static VALUE enum_find_all (VALUE obj)
 
static VALUE reject_i (VALUE i, VALUE ary, int argc, VALUE *argv)
 
static VALUE enum_reject (VALUE obj)
 
static VALUE collect_i (VALUE i, VALUE ary, int argc, VALUE *argv)
 
static VALUE collect_all (VALUE i, VALUE ary, int argc, VALUE *argv)
 
static VALUE enum_collect (VALUE obj)
 
static VALUE flat_map_i (VALUE i, VALUE ary, int argc, VALUE *argv)
 
static VALUE enum_flat_map (VALUE obj)
 
static VALUE enum_to_a (int argc, VALUE *argv, VALUE obj)
 
static VALUE inject_i (VALUE i, VALUE p, int argc, VALUE *argv)
 
static VALUE inject_op_i (VALUE i, VALUE p, int argc, VALUE *argv)
 
static VALUE enum_inject (int argc, VALUE *argv, VALUE obj)
 
static VALUE partition_i (VALUE i, VALUE arys, int argc, VALUE *argv)
 
static VALUE enum_partition (VALUE obj)
 
static VALUE group_by_i (VALUE i, VALUE hash, int argc, VALUE *argv)
 
static VALUE enum_group_by (VALUE obj)
 
static VALUE first_i (VALUE i, VALUE params, int argc, VALUE *argv)
 
static VALUE enum_take (VALUE obj, VALUE n)
 
static VALUE enum_first (int argc, VALUE *argv, VALUE obj)
 
static VALUE enum_sort (VALUE obj)
 
static VALUE sort_by_i (VALUE i, VALUE _data, int argc, VALUE *argv)
 
static int sort_by_cmp (const void *ap, const void *bp, void *data)
 
static VALUE enum_sort_by (VALUE obj)
 
 DEFINE_ENUMFUNCS (all)
 
static VALUE enum_all (VALUE obj)
 
 DEFINE_ENUMFUNCS (any)
 
static VALUE enum_any (VALUE obj)
 
 DEFINE_ENUMFUNCS (one)
 
static VALUE enum_one (VALUE obj)
 
 DEFINE_ENUMFUNCS (none)
 
static VALUE enum_none (VALUE obj)
 
static VALUE min_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE min_ii (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_min (VALUE obj)
 
static VALUE max_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE max_ii (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_max (VALUE obj)
 
 STATIC_ASSERT (minmax_t, sizeof(struct minmax_t)<=sizeof(NODE)-offsetof(NODE, u1))
 
static void minmax_i_update (VALUE i, VALUE j, struct minmax_t *memo)
 
static VALUE minmax_i (VALUE i, VALUE _memo, int argc, VALUE *argv)
 
static void minmax_ii_update (VALUE i, VALUE j, struct minmax_t *memo)
 
static VALUE minmax_ii (VALUE i, VALUE _memo, int argc, VALUE *argv)
 
static VALUE enum_minmax (VALUE obj)
 
static VALUE min_by_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_min_by (VALUE obj)
 
static VALUE max_by_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_max_by (VALUE obj)
 
static void minmax_by_i_update (VALUE v1, VALUE v2, VALUE i1, VALUE i2, struct minmax_by_t *memo)
 
static VALUE minmax_by_i (VALUE i, VALUE _memo, int argc, VALUE *argv)
 
static VALUE enum_minmax_by (VALUE obj)
 
static VALUE member_i (VALUE iter, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_member (VALUE obj, VALUE val)
 
static VALUE each_with_index_i (VALUE i, VALUE memo, int argc, VALUE *argv)
 
static VALUE enum_each_with_index (int argc, VALUE *argv, VALUE obj)
 
static VALUE enum_reverse_each (int argc, VALUE *argv, VALUE obj)
 
static VALUE each_val_i (VALUE i, VALUE p, int argc, VALUE *argv)
 
static VALUE enum_each_entry (int argc, VALUE *argv, VALUE obj)
 
static VALUE each_slice_i (VALUE i, VALUE m, int argc, VALUE *argv)
 
static VALUE enum_each_slice_size (VALUE obj, VALUE args)
 
static VALUE enum_each_slice (VALUE obj, VALUE n)
 
static VALUE each_cons_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_each_cons_size (VALUE obj, VALUE args)
 
static VALUE enum_each_cons (VALUE obj, VALUE n)
 
static VALUE each_with_object_i (VALUE i, VALUE memo, int argc, VALUE *argv)
 
static VALUE enum_each_with_object (VALUE obj, VALUE memo)
 
static VALUE zip_ary (VALUE val, NODE *memo, int argc, VALUE *argv)
 
static VALUE call_next (VALUE *v)
 
static VALUE call_stop (VALUE *v)
 
static VALUE zip_i (VALUE val, NODE *memo, int argc, VALUE *argv)
 
static VALUE enum_zip (int argc, VALUE *argv, VALUE obj)
 
static VALUE take_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE take_while_i (VALUE i, VALUE ary, int argc, VALUE *argv)
 
static VALUE enum_take_while (VALUE obj)
 
static VALUE drop_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_drop (VALUE obj, VALUE n)
 
static VALUE drop_while_i (VALUE i, VALUE args, int argc, VALUE *argv)
 
static VALUE enum_drop_while (VALUE obj)
 
static VALUE cycle_i (VALUE i, VALUE ary, int argc, VALUE *argv)
 
static VALUE enum_cycle_size (VALUE self, VALUE args)
 
static VALUE enum_cycle (int argc, VALUE *argv, VALUE obj)
 
static VALUE chunk_ii (VALUE i, VALUE _argp, int argc, VALUE *argv)
 
static VALUE chunk_i (VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
 
static VALUE enum_chunk (int argc, VALUE *argv, VALUE enumerable)
 
static VALUE slicebefore_ii (VALUE i, VALUE _argp, int argc, VALUE *argv)
 
static VALUE slicebefore_i (VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
 
static VALUE enum_slice_before (int argc, VALUE *argv, VALUE enumerable)
 
void Init_Enumerable (void)
 

Variables

VALUE rb_mEnumerable
 
static ID id_next
 
static ID id_div
 
static ID id_call
 
static ID id_size
 

Macro Definition Documentation

#define DEFINE_ENUMFUNCS (   name)
Value:
static VALUE enum_##name##_func(VALUE result, NODE *memo); \
\
static VALUE \
name##_i(VALUE i, VALUE memo, int argc, VALUE *argv) \
{ \
return enum_##name##_func(rb_enum_values_pack(argc, argv), RNODE(memo)); \
} \
\
static VALUE \
name##_iter_i(VALUE i, VALUE memo, int argc, VALUE *argv) \
{ \
return enum_##name##_func(enum_yield(argc, argv), RNODE(memo)); \
} \
\
static VALUE \
enum_##name##_func(VALUE result, NODE *memo)
return
Definition: bigdecimal.c:5821
ssize_t i
Definition: bigdecimal.c:5676
Definition: ripper.y:240
VALUE * argv
Definition: tcltklib.c:1970
q result
Definition: tcltklib.c:7069
int argc
Definition: tcltklib.c:1969
#define enum_yield
Definition: enum.c:44
VALUE rb_enum_values_pack(int argc, VALUE *argv)
Definition: enum.c:33
unsigned long VALUE
Definition: ripper.y:104
const char * name
Definition: nkf.c:208
#define RNODE(obj)

Definition at line 955 of file enum.c.

#define ENUM_WANT_SVALUE ( )
#define enum_yield   rb_yield_values2

Definition at line 44 of file enum.c.

Referenced by collect_i(), count_iter_i(), find_index_iter_i(), flat_map_i(), and take_while_i().

#define ENUMFUNC (   name)    rb_block_given_p() ? name##_iter_i : name##_i

Definition at line 953 of file enum.c.

Referenced by enum_all(), enum_any(), enum_none(), and enum_one().

#define id_cmp   idCmp
#define id_each   idEach
#define id_eqq   idEqq

Definition at line 28 of file enum.c.

Referenced by grep_i(), grep_iter_i(), and slicebefore_ii().

#define id_lshift   idLTLT

Definition at line 30 of file enum.c.

Referenced by chunk_i(), chunk_ii(), slicebefore_i(), and slicebefore_ii().

#define rb_intern (   str)    rb_intern_const(str)
#define SORT_BY_BUFSIZE   16

Definition at line 781 of file enum.c.

Referenced by enum_sort_by(), and sort_by_i().

#define STATIC_ASSERT (   name,
  expr 
)    typedef int static_assert_##name##_check[1 - 2*!(expr)]

Definition at line 18 of file enum.c.

Function Documentation

static VALUE call_next ( VALUE v)
static

Definition at line 1963 of file enum.c.

References id_next, and rb_funcall().

Referenced by zip_i().

static VALUE call_stop ( VALUE v)
static

Definition at line 1969 of file enum.c.

References Qundef.

Referenced by zip_i().

static VALUE chunk_i ( VALUE  yielder,
VALUE  enumerator,
int  argc,
VALUE argv 
)
static
static VALUE chunk_ii ( VALUE  i,
VALUE  _argp,
int  argc,
VALUE argv 
)
static
static VALUE collect_all ( VALUE  i,
VALUE  ary,
int  argc,
VALUE argv 
)
static

Definition at line 403 of file enum.c.

References Qnil, rb_ary_push(), rb_enum_values_pack(), and rb_thread_check_ints().

Referenced by enum_to_a().

static VALUE collect_i ( VALUE  i,
VALUE  ary,
int  argc,
VALUE argv 
)
static

Definition at line 395 of file enum.c.

References enum_yield, Qnil, and rb_ary_push().

Referenced by enum_collect().

static VALUE count_all_i ( VALUE  i,
VALUE  memop,
int  argc,
VALUE argv 
)
static

Definition at line 124 of file enum.c.

References RNode::cnt, Qnil, RNODE, and RNode::u3.

Referenced by enum_count().

static VALUE count_i ( VALUE  i,
VALUE  memop,
int  argc,
VALUE argv 
)
static

Definition at line 100 of file enum.c.

References RNode::cnt, ENUM_WANT_SVALUE, Qnil, rb_equal(), RNODE, RNode::u1, RNode::u3, and RNode::value.

Referenced by enum_count().

static VALUE count_iter_i ( VALUE  i,
VALUE  memop,
int  argc,
VALUE argv 
)
static

Definition at line 113 of file enum.c.

References RNode::cnt, enum_yield, Qnil, RNODE, RTEST, and RNode::u3.

Referenced by enum_count().

static VALUE cycle_i ( VALUE  i,
VALUE  ary,
int  argc,
VALUE argv 
)
static

Definition at line 2232 of file enum.c.

References ENUM_WANT_SVALUE, Qnil, rb_ary_push(), and rb_yield().

Referenced by enum_cycle().

DEFINE_ENUMFUNCS ( all  )

Definition at line 973 of file enum.c.

References Qfalse, Qnil, rb_iter_break(), result, and RTEST.

DEFINE_ENUMFUNCS ( any  )

Definition at line 1007 of file enum.c.

References Qnil, Qtrue, rb_iter_break(), result, and RTEST.

DEFINE_ENUMFUNCS ( one  )

Definition at line 1041 of file enum.c.

References Qfalse, Qnil, Qtrue, Qundef, rb_iter_break(), result, and RTEST.

DEFINE_ENUMFUNCS ( none  )

Definition at line 1085 of file enum.c.

References Qfalse, Qnil, rb_iter_break(), result, and RTEST.

static VALUE drop_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 2145 of file enum.c.

References RNode::cnt, Qnil, rb_ary_push(), rb_enum_values_pack(), RNODE, RNode::u1, RNode::u3, and RNode::value.

Referenced by enum_drop().

static VALUE drop_while_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 2188 of file enum.c.

References ENUM_WANT_SVALUE, Qnil, rb_ary_push(), rb_yield(), RNODE, RTEST, RNode::state, TRUE, RNode::u1, RNode::u3, and RNode::value.

Referenced by enum_drop_while().

static VALUE each_cons_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static
static VALUE each_slice_i ( VALUE  i,
VALUE  m,
int  argc,
VALUE argv 
)
static
static VALUE each_val_i ( VALUE  i,
VALUE  p,
int  argc,
VALUE argv 
)
static

Definition at line 1722 of file enum.c.

References ENUM_WANT_SVALUE, Qnil, and rb_yield().

Referenced by enum_each_entry().

static VALUE each_with_index_i ( VALUE  i,
VALUE  memo,
int  argc,
VALUE argv 
)
static

Definition at line 1646 of file enum.c.

References INT2NUM, n, rb_enum_values_pack(), rb_yield_values(), and RNODE.

Referenced by enum_each_with_index().

static VALUE each_with_object_i ( VALUE  i,
VALUE  memo,
int  argc,
VALUE argv 
)
static

Definition at line 1902 of file enum.c.

References ENUM_WANT_SVALUE, and rb_yield_values().

Referenced by enum_each_with_object().

static VALUE enum_all ( VALUE  obj)
static

Definition at line 1000 of file enum.c.

References ENUMFUNC, id_each, NEW_MEMO, Qtrue, and rb_block_call().

Referenced by Init_Enumerable().

static VALUE enum_any ( VALUE  obj)
static

Definition at line 1034 of file enum.c.

References ENUMFUNC, id_each, NEW_MEMO, Qfalse, and rb_block_call().

Referenced by Init_Enumerable().

static VALUE enum_chunk ( int  argc,
VALUE argv,
VALUE  enumerable 
)
static
static VALUE enum_collect ( VALUE  obj)
static

Definition at line 429 of file enum.c.

References ary, collect_i(), enum_size(), id_each, rb_ary_new(), rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_count ( int  argc,
VALUE argv,
VALUE  obj 
)
static
static VALUE enum_cycle ( int  argc,
VALUE argv,
VALUE  obj 
)
static
static VALUE enum_cycle_size ( VALUE  self,
VALUE  args 
)
static

Definition at line 2242 of file enum.c.

References DBL2NUM, enum_size(), INFINITY, INT2FIX, LONG2FIX, mul, n, NUM2LONG, Qnil, RARRAY_LEN, RARRAY_PTR(), rb_funcall(), and size.

Referenced by enum_cycle().

static VALUE enum_drop ( VALUE  obj,
VALUE  n 
)
static

Definition at line 2170 of file enum.c.

References drop_i(), id_each, len, NEW_MEMO, NUM2LONG, rb_ary_new(), rb_block_call(), rb_eArgError, rb_raise(), and result.

Referenced by Init_Enumerable().

static VALUE enum_drop_while ( VALUE  obj)
static

Definition at line 2219 of file enum.c.

References drop_while_i(), FALSE, id_each, NEW_MEMO, rb_ary_new(), rb_block_call(), result, and RETURN_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_each_cons ( VALUE  obj,
VALUE  n 
)
static
static VALUE enum_each_cons_size ( VALUE  obj,
VALUE  args 
)
static
static VALUE enum_each_entry ( int  argc,
VALUE argv,
VALUE  obj 
)
static

Definition at line 1759 of file enum.c.

References each_val_i(), enum_size(), id_each, obj, rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_each_slice ( VALUE  obj,
VALUE  n 
)
static
static VALUE enum_each_slice_size ( VALUE  obj,
VALUE  args 
)
static

Definition at line 1786 of file enum.c.

References enum_size(), id_div, LONG2FIX, LONG2NUM, n, NUM2LONG, Qnil, RARRAY_PTR(), rb_eArgError, rb_funcall(), rb_raise(), and size.

Referenced by enum_each_slice().

static VALUE enum_each_with_index ( int  argc,
VALUE argv,
VALUE  obj 
)
static

Definition at line 1673 of file enum.c.

References each_with_index_i(), enum_size(), id_each, NEW_MEMO, obj, rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_each_with_object ( VALUE  obj,
VALUE  memo 
)
static

Definition at line 1923 of file enum.c.

References each_with_object_i(), enum_size(), id_each, rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_find ( int  argc,
VALUE argv,
VALUE  obj 
)
static
static VALUE enum_find_all ( VALUE  obj)
static

Definition at line 341 of file enum.c.

References ary, enum_size(), find_all_i(), id_each, rb_ary_new(), rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_find_index ( int  argc,
VALUE argv,
VALUE  obj 
)
static
static VALUE enum_first ( int  argc,
VALUE argv,
VALUE  obj 
)
static

Definition at line 743 of file enum.c.

References enum_take(), first_i(), id_each, NEW_MEMO, Qnil, rb_block_call(), and rb_check_arity.

Referenced by Init_Enumerable().

static VALUE enum_flat_map ( VALUE  obj)
static

Definition at line 476 of file enum.c.

References ary, enum_size(), flat_map_i(), id_each, rb_ary_new(), rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_grep ( VALUE  obj,
VALUE  pat 
)
static

Definition at line 89 of file enum.c.

References ary, grep_i(), grep_iter_i(), id_each, NEW_MEMO, rb_ary_new(), rb_block_call(), and rb_block_given_p().

Referenced by Init_Enumerable().

static VALUE enum_group_by ( VALUE  obj)
static
static VALUE enum_inject ( int  argc,
VALUE argv,
VALUE  obj 
)
static
static VALUE enum_max ( VALUE  obj)
static
static VALUE enum_max_by ( VALUE  obj)
static

Definition at line 1494 of file enum.c.

References enum_size(), id_each, max_by_i(), NEW_MEMO, Qnil, Qundef, rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_member ( VALUE  obj,
VALUE  val 
)
static

Definition at line 1637 of file enum.c.

References id_each, member_i(), NEW_MEMO, Qfalse, and rb_block_call().

Referenced by Init_Enumerable().

static VALUE enum_min ( VALUE  obj)
static
static VALUE enum_min_by ( VALUE  obj)
static

Definition at line 1448 of file enum.c.

References enum_size(), id_each, min_by_i(), NEW_MEMO, Qnil, Qundef, rb_block_call(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_minmax ( VALUE  obj)
static
static VALUE enum_minmax_by ( VALUE  obj)
static
static VALUE enum_none ( VALUE  obj)
static

Definition at line 1110 of file enum.c.

References ENUMFUNC, id_each, NEW_MEMO, Qtrue, and rb_block_call().

Referenced by Init_Enumerable().

static VALUE enum_one ( VALUE  obj)
static

Definition at line 1074 of file enum.c.

References ENUMFUNC, id_each, NEW_MEMO, one(), Qfalse, Qundef, rb_block_call(), and result.

Referenced by Init_Enumerable().

static VALUE enum_partition ( VALUE  obj)
static
static VALUE enum_reject ( VALUE  obj)
static

Definition at line 382 of file enum.c.

References ary, enum_size(), id_each, rb_ary_new(), rb_block_call(), reject_i(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_reverse_each ( int  argc,
VALUE argv,
VALUE  obj 
)
static

Definition at line 1704 of file enum.c.

References ary, enum_size(), enum_to_a(), i, obj, RARRAY_LEN, RARRAY_PTR(), rb_yield(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Enumerable().

static VALUE enum_size ( VALUE  self,
VALUE  args 
)
static
static VALUE enum_slice_before ( int  argc,
VALUE argv,
VALUE  enumerable 
)
static
static VALUE enum_sort ( VALUE  obj)
static

Definition at line 776 of file enum.c.

References enum_to_a(), and rb_ary_sort().

Referenced by Init_Enumerable().

static VALUE enum_sort_by ( VALUE  obj)
static
static VALUE enum_take ( VALUE  obj,
VALUE  n 
)
static

Definition at line 2092 of file enum.c.

References id_each, len, NEW_MEMO, NUM2LONG, rb_ary_new2(), rb_block_call(), rb_eArgError, rb_raise(), result, and take_i().

Referenced by enum_first(), and Init_Enumerable().

static VALUE enum_take_while ( VALUE  obj)
static

Definition at line 2134 of file enum.c.

References ary, id_each, rb_ary_new(), rb_block_call(), RETURN_ENUMERATOR, and take_while_i().

Referenced by Init_Enumerable().

static VALUE enum_to_a ( int  argc,
VALUE argv,
VALUE  obj 
)
static

Definition at line 499 of file enum.c.

References ary, collect_all(), id_each, OBJ_INFECT, rb_ary_new(), and rb_block_call().

Referenced by enum_reverse_each(), enum_sort(), and Init_Enumerable().

static VALUE enum_zip ( int  argc,
VALUE argv,
VALUE  obj 
)
static
static VALUE find_all_i ( VALUE  i,
VALUE  ary,
int  argc,
VALUE argv 
)
static

Definition at line 302 of file enum.c.

References ENUM_WANT_SVALUE, Qnil, rb_ary_push(), rb_yield(), and RTEST.

Referenced by enum_find_all().

static VALUE find_i ( VALUE  i,
VALUE  memop,
int  argc,
VALUE argv 
)
static

Definition at line 179 of file enum.c.

References RNode::cnt, ENUM_WANT_SVALUE, i, Qnil, rb_iter_break(), rb_yield(), RNODE, RTEST, RNode::u1, RNode::u3, and RNode::value.

Referenced by enum_find().

static VALUE find_index_i ( VALUE  i,
VALUE  memop,
int  argc,
VALUE argv 
)
static
static VALUE find_index_iter_i ( VALUE  i,
VALUE  memop,
int  argc,
VALUE argv 
)
static

Definition at line 246 of file enum.c.

References RNode::cnt, enum_yield, Qnil, rb_iter_break(), RNODE, RTEST, RNode::u1, RNode::u3, UINT2NUM, and RNode::value.

Referenced by enum_find_index().

static VALUE first_i ( VALUE  i,
VALUE  params,
int  argc,
VALUE argv 
)
static

Definition at line 713 of file enum.c.

References ENUM_WANT_SVALUE, i, rb_iter_break(), RNODE, RNode::u1, UNREACHABLE, and RNode::value.

Referenced by enum_first().

static VALUE flat_map_i ( VALUE  i,
VALUE  ary,
int  argc,
VALUE argv 
)
static

Definition at line 442 of file enum.c.

References enum_yield, NIL_P(), Qnil, rb_ary_concat(), rb_ary_push(), rb_check_array_type(), and tmp.

Referenced by enum_flat_map().

static VALUE grep_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 47 of file enum.c.

References ENUM_WANT_SVALUE, id_eqq, Qnil, rb_ary_push(), rb_funcall(), RNODE, RTEST, RNode::u1, RNode::u2, and RNode::value.

Referenced by enum_grep().

static VALUE grep_iter_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 59 of file enum.c.

References ENUM_WANT_SVALUE, id_eqq, Qnil, rb_ary_push(), rb_funcall(), rb_yield(), RNODE, RTEST, RNode::u1, RNode::u2, and RNode::value.

Referenced by enum_grep().

static VALUE group_by_i ( VALUE  i,
VALUE  hash,
int  argc,
VALUE argv 
)
static
void Init_Enumerable ( void  )
static VALUE inject_i ( VALUE  i,
VALUE  p,
int  argc,
VALUE argv 
)
static

Definition at line 510 of file enum.c.

References RNode::argc, ENUM_WANT_SVALUE, i, Qnil, rb_yield_values(), RNODE, RNode::u1, RNode::u2, and RNode::value.

Referenced by enum_inject().

static VALUE inject_op_i ( VALUE  i,
VALUE  p,
int  argc,
VALUE argv 
)
static

Definition at line 527 of file enum.c.

References RNode::argc, ENUM_WANT_SVALUE, i, RNode::id, Qnil, rb_funcall(), RNODE, RNode::u1, RNode::u2, RNode::u3, and RNode::value.

Referenced by enum_inject().

static VALUE max_by_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 1460 of file enum.c.

References ENUM_WANT_SVALUE, i, id_cmp, Qnil, Qundef, rb_cmpint(), rb_funcall(), rb_yield(), RNODE, RNode::u1, RNode::u2, v, and RNode::value.

Referenced by enum_max_by().

static VALUE max_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 1190 of file enum.c.

References cmp, ENUM_WANT_SVALUE, i, id_cmp, Qnil, Qundef, rb_cmpint(), rb_funcall(), RNODE, RNode::u1, and RNode::value.

Referenced by enum_max().

static VALUE max_ii ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 1210 of file enum.c.

References cmp, ENUM_WANT_SVALUE, i, Qnil, Qundef, rb_cmpint(), rb_yield_values(), RNODE, RNode::u1, and RNode::value.

Referenced by enum_max().

static VALUE member_i ( VALUE  iter,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 1612 of file enum.c.

References Qnil, Qtrue, rb_enum_values_pack(), rb_equal(), rb_iter_break(), RNODE, RNode::u1, RNode::u2, and RNode::value.

Referenced by enum_member().

static VALUE min_by_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 1414 of file enum.c.

References ENUM_WANT_SVALUE, i, id_cmp, Qnil, Qundef, rb_cmpint(), rb_funcall(), rb_yield(), RNODE, RNode::u1, RNode::u2, v, and RNode::value.

Referenced by enum_min_by().

static VALUE min_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 1118 of file enum.c.

References cmp, ENUM_WANT_SVALUE, i, id_cmp, Qnil, Qundef, rb_cmpint(), rb_funcall(), RNODE, RNode::u1, and RNode::value.

Referenced by enum_min().

static VALUE min_ii ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 1138 of file enum.c.

References cmp, ENUM_WANT_SVALUE, i, Qnil, Qundef, rb_cmpint(), rb_yield_values(), RNODE, RNode::u1, and RNode::value.

Referenced by enum_min().

static VALUE minmax_by_i ( VALUE  i,
VALUE  _memo,
int  argc,
VALUE argv 
)
static
static void minmax_by_i_update ( VALUE  v1,
VALUE  v2,
VALUE  i1,
VALUE  i2,
struct minmax_by_t memo 
)
static
static VALUE minmax_i ( VALUE  i,
VALUE  _memo,
int  argc,
VALUE argv 
)
static

Definition at line 1290 of file enum.c.

References ENUM_WANT_SVALUE, i, id_cmp, minmax_t::last, minmax_i_update(), n, Qnil, Qundef, rb_cmpint(), rb_funcall(), RNODE, and tmp.

Referenced by enum_minmax().

static void minmax_i_update ( VALUE  i,
VALUE  j,
struct minmax_t memo 
)
static

Definition at line 1269 of file enum.c.

References i, id_cmp, minmax_t::max, minmax_t::min, n, Qundef, rb_cmpint(), and rb_funcall().

Referenced by enum_minmax(), and minmax_i().

static VALUE minmax_ii ( VALUE  i,
VALUE  _memo,
int  argc,
VALUE argv 
)
static

Definition at line 1342 of file enum.c.

References ENUM_WANT_SVALUE, i, minmax_t::last, minmax_ii_update(), n, Qnil, Qundef, rb_cmpint(), rb_yield_values(), RNODE, and tmp.

Referenced by enum_minmax().

static void minmax_ii_update ( VALUE  i,
VALUE  j,
struct minmax_t memo 
)
static

Definition at line 1321 of file enum.c.

References i, minmax_t::max, minmax_t::min, n, Qundef, rb_cmpint(), and rb_yield_values().

Referenced by enum_minmax(), and minmax_ii().

static VALUE partition_i ( VALUE  i,
VALUE  arys,
int  argc,
VALUE argv 
)
static

Definition at line 619 of file enum.c.

References ary, ENUM_WANT_SVALUE, Qnil, rb_ary_push(), rb_yield(), RNODE, RTEST, RNode::u1, RNode::u2, and RNode::value.

Referenced by enum_partition().

VALUE rb_enum_values_pack ( int  argc,
VALUE argv 
)
static VALUE reject_i ( VALUE  i,
VALUE  ary,
int  argc,
VALUE argv 
)
static

Definition at line 354 of file enum.c.

References ENUM_WANT_SVALUE, Qnil, rb_ary_push(), rb_yield(), and RTEST.

Referenced by enum_reject().

static VALUE slicebefore_i ( VALUE  yielder,
VALUE  enumerator,
int  argc,
VALUE argv 
)
static
static VALUE slicebefore_ii ( VALUE  i,
VALUE  _argp,
int  argc,
VALUE argv 
)
static
static int sort_by_cmp ( const void ap,
const void bp,
void data 
)
static

Definition at line 817 of file enum.c.

References a, ary, b, id_cmp, rb_cmpint(), rb_eRuntimeError, rb_funcall(), rb_raise(), and RBASIC.

Referenced by enum_sort_by().

static VALUE sort_by_i ( VALUE  i,
VALUE  _data,
int  argc,
VALUE argv 
)
static
STATIC_ASSERT ( minmax_t  ,
sizeof(struct minmax_t)<=sizeof(NODE)-offsetof(NODE, u1)   
)
static VALUE take_i ( VALUE  i,
VALUE  args,
int  argc,
VALUE argv 
)
static

Definition at line 2072 of file enum.c.

References RNode::cnt, Qnil, rb_ary_push(), rb_enum_values_pack(), rb_iter_break(), RNODE, RNode::u1, RNode::u3, and RNode::value.

Referenced by enum_take().

static VALUE take_while_i ( VALUE  i,
VALUE  ary,
int  argc,
VALUE argv 
)
static

Definition at line 2111 of file enum.c.

References enum_yield, Qnil, rb_ary_push(), rb_enum_values_pack(), rb_iter_break(), and RTEST.

Referenced by enum_take_while().

static VALUE zip_ary ( VALUE  val,
NODE memo,
int  argc,
VALUE argv 
)
static
static VALUE zip_i ( VALUE  val,
NODE memo,
int  argc,
VALUE argv 
)
static

Variable Documentation

ID id_call
static

Definition at line 24 of file enum.c.

Referenced by chunk_ii(), enum_find(), Init_Enumerable(), and slicebefore_ii().

ID id_div
static

Definition at line 23 of file enum.c.

Referenced by enum_each_slice_size(), and Init_Enumerable().

ID id_next
static

Definition at line 22 of file enum.c.

Referenced by call_next(), and Init_Enumerable().

ID id_size
static

Definition at line 25 of file enum.c.

Referenced by enum_size(), and Init_Enumerable().

VALUE rb_mEnumerable