Ruby  2.1.10p492(2016-04-01revision54464)
Data Structures | Macros | Enumerations | Functions | Variables
array.c File Reference
#include "ruby/ruby.h"
#include "ruby/util.h"
#include "ruby/st.h"
#include "ruby/encoding.h"
#include "internal.h"
#include "probes.h"
#include "id.h"
#include <assert.h>

Go to the source code of this file.

Data Structures

struct  ary_sort_data
 

Macros

#define NDEBUG
 
#define ARY_DEFAULT_SIZE   16
 
#define ARY_MAX_SIZE   (LONG_MAX / (int)sizeof(VALUE))
 
#define ARY_SHARED_P(ary)
 
#define ARY_EMBED_P(ary)
 
#define ARY_HEAP_PTR(a)   (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.ptr)
 
#define ARY_HEAP_LEN(a)   (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.len)
 
#define ARY_EMBED_PTR(a)   (assert(ARY_EMBED_P(a)), RARRAY(a)->as.ary)
 
#define ARY_EMBED_LEN(a)
 
#define ARY_HEAP_SIZE(a)   (assert(!ARY_EMBED_P(a)), assert(ARY_OWNS_HEAP_P(a)), RARRAY(a)->as.heap.aux.capa * sizeof(VALUE))
 
#define ARY_OWNS_HEAP_P(a)   (!FL_TEST((a), ELTS_SHARED|RARRAY_EMBED_FLAG))
 
#define FL_SET_EMBED(a)
 
#define FL_UNSET_EMBED(ary)   FL_UNSET((ary), RARRAY_EMBED_FLAG|RARRAY_EMBED_LEN_MASK)
 
#define FL_SET_SHARED(ary)
 
#define FL_UNSET_SHARED(ary)   FL_UNSET((ary), ELTS_SHARED)
 
#define ARY_SET_PTR(ary, p)
 
#define ARY_SET_EMBED_LEN(ary, n)
 
#define ARY_SET_HEAP_LEN(ary, n)
 
#define ARY_SET_LEN(ary, n)
 
#define ARY_INCREASE_PTR(ary, n)
 
#define ARY_INCREASE_LEN(ary, n)
 
#define ARY_CAPA(ary)
 
#define ARY_SET_CAPA(ary, n)
 
#define ARY_SHARED(ary)   (assert(ARY_SHARED_P(ary)), RARRAY(ary)->as.heap.aux.shared)
 
#define ARY_SET_SHARED(ary, value)
 
#define RARRAY_SHARED_ROOT_FLAG   FL_USER5
 
#define ARY_SHARED_ROOT_P(ary)   (FL_TEST((ary), RARRAY_SHARED_ROOT_FLAG))
 
#define ARY_SHARED_NUM(ary)   (assert(ARY_SHARED_ROOT_P(ary)), RARRAY(ary)->as.heap.aux.capa)
 
#define ARY_SHARED_OCCUPIED(ary)   (ARY_SHARED_NUM(ary) == 1)
 
#define ARY_SET_SHARED_NUM(ary, value)
 
#define FL_SET_SHARED_ROOT(ary)
 
#define STRING_P(s)   (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
 
#define SORT_OPTIMIZABLE_BIT(type)   (1U << TOKEN_PASTE(sort_opt_,type))
 
#define SORT_OPTIMIZABLE(data, type)
 
#define OPTHASH_GIVEN_P(opts)   (argc > 0 && !NIL_P((opts) = rb_check_hash_type(argv[argc-1])) && (--argc, 1))
 
#define RAND_UPTO(max)   (long)rb_random_ulong_limited((randgen), (max)-1)
 
#define tmpbuf(n, size)   rb_str_tmp_new((n)*(size))
 
#define tmpbuf_discard(s)   (rb_str_resize((s), 0L), RBASIC_SET_CLASS_RAW(s, rb_cString))
 
#define tmpary(n)   rb_ary_tmp_new(n)
 
#define tmpary_discard(a)   (ary_discard(a), RBASIC_SET_CLASS_RAW(a, rb_cArray))
 
#define rb_intern(str)   rb_intern_const(str)
 

Enumerations

enum  ary_take_pos_flags { ARY_TAKE_FIRST = 0, ARY_TAKE_LAST = 1 }
 
enum  { sort_opt_Fixnum, sort_opt_String, sort_optimizable_count }
 

Functions

void rb_mem_clear (register VALUE *mem, register long size)
 
static void ary_mem_clear (VALUE ary, long beg, long size)
 
static void memfill (register VALUE *mem, register long size, register VALUE val)
 
static void ary_memfill (VALUE ary, long beg, long size, VALUE val)
 
static void ary_memcpy (VALUE ary, long beg, long argc, const VALUE *argv)
 
static void ary_resize_capa (VALUE ary, long capacity)
 
static void ary_shrink_capa (VALUE ary)
 
static void ary_double_capa (VALUE ary, long min)
 
static void rb_ary_decrement_share (VALUE shared)
 
static void rb_ary_unshare (VALUE ary)
 
static void rb_ary_unshare_safe (VALUE ary)
 
static VALUE rb_ary_increment_share (VALUE shared)
 
static void rb_ary_set_shared (VALUE ary, VALUE shared)
 
static void rb_ary_modify_check (VALUE ary)
 
void rb_ary_modify (VALUE ary)
 
static void ary_ensure_room_for_push (VALUE ary, long add_len)
 
VALUE rb_ary_freeze (VALUE ary)
 
static VALUE rb_ary_frozen_p (VALUE ary)
 
VALUE rb_ary_shared_with_p (VALUE ary1, VALUE ary2)
 
static VALUE ary_alloc (VALUE klass)
 
static VALUE empty_ary_alloc (VALUE klass)
 
static VALUE ary_new (VALUE klass, long capa)
 
VALUE rb_ary_new_capa (long capa)
 
VALUE rb_ary_new (void)
 
VALUE rb_ary_new_from_args (long n,...)
 
VALUE rb_ary_new_from_values (long n, const VALUE *elts)
 
VALUE rb_ary_tmp_new (long capa)
 
void rb_ary_free (VALUE ary)
 
RUBY_FUNC_EXPORTED size_t rb_ary_memsize (VALUE ary)
 
static void ary_discard (VALUE ary)
 
static VALUE ary_make_shared (VALUE ary)
 
static VALUE ary_make_substitution (VALUE ary)
 
VALUE rb_assoc_new (VALUE car, VALUE cdr)
 
static VALUE to_ary (VALUE ary)
 
VALUE rb_check_array_type (VALUE ary)
 
static VALUE rb_ary_s_try_convert (VALUE dummy, VALUE ary)
 
static VALUE rb_ary_initialize (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_s_create (int argc, VALUE *argv, VALUE klass)
 
void rb_ary_store (VALUE ary, long idx, VALUE val)
 
static VALUE ary_make_partial (VALUE ary, VALUE klass, long offset, long len)
 
static VALUE ary_make_shared_copy (VALUE ary)
 
static VALUE ary_take_first_or_last (int argc, VALUE *argv, VALUE ary, enum ary_take_pos_flags last)
 
VALUE rb_ary_push (VALUE ary, VALUE item)
 
VALUE rb_ary_cat (VALUE ary, const VALUE *ptr, long len)
 
static VALUE rb_ary_push_m (int argc, VALUE *argv, VALUE ary)
 
VALUE rb_ary_pop (VALUE ary)
 
static VALUE rb_ary_pop_m (int argc, VALUE *argv, VALUE ary)
 
VALUE rb_ary_shift (VALUE ary)
 
static VALUE rb_ary_shift_m (int argc, VALUE *argv, VALUE ary)
 
static void ary_ensure_room_for_unshift (VALUE ary, int argc)
 
static VALUE rb_ary_unshift_m (int argc, VALUE *argv, VALUE ary)
 
VALUE rb_ary_unshift (VALUE ary, VALUE item)
 
static VALUE rb_ary_elt (VALUE ary, long offset)
 
VALUE rb_ary_entry (VALUE ary, long offset)
 
VALUE rb_ary_subseq (VALUE ary, long beg, long len)
 
VALUE rb_ary_aref (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_at (VALUE ary, VALUE pos)
 
static VALUE rb_ary_first (int argc, VALUE *argv, VALUE ary)
 
VALUE rb_ary_last (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_fetch (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_index (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_rindex (int argc, VALUE *argv, VALUE ary)
 
VALUE rb_ary_to_ary (VALUE obj)
 
static void rb_ary_splice (VALUE ary, long beg, long len, VALUE rpl)
 
void rb_ary_set_len (VALUE ary, long len)
 
VALUE rb_ary_resize (VALUE ary, long len)
 expands or shrinks ary to len elements. More...
 
static VALUE rb_ary_aset (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_insert (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_length (VALUE ary)
 
static VALUE ary_enum_length (VALUE ary, VALUE args, VALUE eobj)
 
VALUE rb_ary_each (VALUE array)
 
static VALUE rb_ary_each_index (VALUE ary)
 
static VALUE rb_ary_reverse_each (VALUE ary)
 
static VALUE rb_ary_empty_p (VALUE ary)
 
VALUE rb_ary_dup (VALUE ary)
 
VALUE rb_ary_resurrect (VALUE ary)
 
static void ary_join_1 (VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first)
 
static VALUE recursive_join (VALUE obj, VALUE argp, int recur)
 
static void ary_join_0 (VALUE ary, VALUE sep, long max, VALUE result)
 
VALUE rb_ary_join (VALUE ary, VALUE sep)
 
static VALUE rb_ary_join_m (int argc, VALUE *argv, VALUE ary)
 
static VALUE inspect_ary (VALUE ary, VALUE dummy, int recur)
 
static VALUE rb_ary_inspect (VALUE ary)
 
VALUE rb_ary_to_s (VALUE ary)
 
static VALUE rb_ary_to_a (VALUE ary)
 
static VALUE rb_ary_to_h (VALUE ary)
 
static VALUE rb_ary_to_ary_m (VALUE ary)
 
static void ary_reverse (VALUE *p1, VALUE *p2)
 
VALUE rb_ary_reverse (VALUE ary)
 
static VALUE rb_ary_reverse_bang (VALUE ary)
 
static VALUE rb_ary_reverse_m (VALUE ary)
 
static long rotate_count (long cnt, long len)
 
VALUE rb_ary_rotate (VALUE ary, long cnt)
 
static VALUE rb_ary_rotate_bang (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_rotate_m (int argc, VALUE *argv, VALUE ary)
 
static VALUE sort_reentered (VALUE ary)
 
static int sort_1 (const void *ap, const void *bp, void *dummy)
 
static int sort_2 (const void *ap, const void *bp, void *dummy)
 
VALUE rb_ary_sort_bang (VALUE ary)
 
VALUE rb_ary_sort (VALUE ary)
 
static VALUE rb_ary_bsearch (VALUE ary)
 
static VALUE sort_by_i (RB_BLOCK_CALL_FUNC_ARGLIST(i, dummy))
 
static VALUE rb_ary_sort_by_bang (VALUE ary)
 
static VALUE rb_ary_collect (VALUE ary)
 
static VALUE rb_ary_collect_bang (VALUE ary)
 
VALUE rb_get_values_at (VALUE obj, long olen, int argc, VALUE *argv, VALUE(*func)(VALUE, long))
 
static VALUE rb_ary_values_at (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_select (VALUE ary)
 
static VALUE rb_ary_select_bang (VALUE ary)
 
static VALUE rb_ary_keep_if (VALUE ary)
 
static void ary_resize_smaller (VALUE ary, long len)
 
VALUE rb_ary_delete (VALUE ary, VALUE item)
 
void rb_ary_delete_same (VALUE ary, VALUE item)
 
VALUE rb_ary_delete_at (VALUE ary, long pos)
 
static VALUE rb_ary_delete_at_m (VALUE ary, VALUE pos)
 
static VALUE rb_ary_slice_bang (int argc, VALUE *argv, VALUE ary)
 
static VALUE ary_reject (VALUE orig, VALUE result)
 
static VALUE ary_reject_bang (VALUE ary)
 
static VALUE rb_ary_reject_bang (VALUE ary)
 
static VALUE rb_ary_reject (VALUE ary)
 
static VALUE rb_ary_delete_if (VALUE ary)
 
static VALUE take_i (RB_BLOCK_CALL_FUNC_ARGLIST(val, cbarg))
 
static VALUE take_items (VALUE obj, long n)
 
static VALUE rb_ary_zip (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_transpose (VALUE ary)
 
VALUE rb_ary_replace (VALUE copy, VALUE orig)
 
VALUE rb_ary_clear (VALUE ary)
 
static VALUE rb_ary_fill (int argc, VALUE *argv, VALUE ary)
 
VALUE rb_ary_plus (VALUE x, VALUE y)
 
VALUE rb_ary_concat (VALUE x, VALUE y)
 
static VALUE rb_ary_times (VALUE ary, VALUE times)
 
VALUE rb_ary_assoc (VALUE ary, VALUE key)
 
VALUE rb_ary_rassoc (VALUE ary, VALUE value)
 
static VALUE recursive_equal (VALUE ary1, VALUE ary2, int recur)
 
static VALUE rb_ary_equal (VALUE ary1, VALUE ary2)
 
static VALUE recursive_eql (VALUE ary1, VALUE ary2, int recur)
 
static VALUE rb_ary_eql (VALUE ary1, VALUE ary2)
 
static VALUE rb_ary_hash (VALUE ary)
 
VALUE rb_ary_includes (VALUE ary, VALUE item)
 
static VALUE recursive_cmp (VALUE ary1, VALUE ary2, int recur)
 
VALUE rb_ary_cmp (VALUE ary1, VALUE ary2)
 
static VALUE ary_add_hash (VALUE hash, VALUE ary)
 
static VALUE ary_tmp_hash_new (void)
 
static VALUE ary_make_hash (VALUE ary)
 
static VALUE ary_add_hash_by (VALUE hash, VALUE ary)
 
static VALUE ary_make_hash_by (VALUE ary)
 
static void ary_recycle_hash (VALUE hash)
 
static VALUE rb_ary_diff (VALUE ary1, VALUE ary2)
 
static VALUE rb_ary_and (VALUE ary1, VALUE ary2)
 
static int ary_hash_orset (st_data_t *key, st_data_t *value, st_data_t arg, int existing)
 
static VALUE rb_ary_or (VALUE ary1, VALUE ary2)
 
static int push_value (st_data_t key, st_data_t val, st_data_t ary)
 
static VALUE rb_ary_uniq_bang (VALUE ary)
 
static VALUE rb_ary_uniq (VALUE ary)
 
static VALUE rb_ary_compact_bang (VALUE ary)
 
static VALUE rb_ary_compact (VALUE ary)
 
static VALUE rb_ary_count (int argc, VALUE *argv, VALUE ary)
 
static VALUE flatten (VALUE ary, int level, int *modified)
 
static VALUE rb_ary_flatten_bang (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_flatten (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_shuffle_bang (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_shuffle (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_sample (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_cycle_size (VALUE self, VALUE args, VALUE eobj)
 
static VALUE rb_ary_cycle (int argc, VALUE *argv, VALUE ary)
 
static int yield_indexed_values (const VALUE values, const long r, const long *const p)
 
static void permute0 (long n, long r, long *p, long index, char *used, VALUE values)
 
static VALUE descending_factorial (long from, long how_many)
 
static VALUE binomial_coefficient (long comb, long size)
 
static VALUE rb_ary_permutation_size (VALUE ary, VALUE args, VALUE eobj)
 
static VALUE rb_ary_permutation (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_combination_size (VALUE ary, VALUE args, VALUE eobj)
 
static VALUE rb_ary_combination (VALUE ary, VALUE num)
 
static void rpermute0 (long n, long r, long *p, long index, VALUE values)
 
static VALUE rb_ary_repeated_permutation_size (VALUE ary, VALUE args, VALUE eobj)
 
static VALUE rb_ary_repeated_permutation (VALUE ary, VALUE num)
 
static void rcombinate0 (long n, long r, long *p, long index, long rest, VALUE values)
 
static VALUE rb_ary_repeated_combination_size (VALUE ary, VALUE args, VALUE eobj)
 
static VALUE rb_ary_repeated_combination (VALUE ary, VALUE num)
 
static VALUE rb_ary_product (int argc, VALUE *argv, VALUE ary)
 
static VALUE rb_ary_take (VALUE obj, VALUE n)
 
static VALUE rb_ary_take_while (VALUE ary)
 
static VALUE rb_ary_drop (VALUE ary, VALUE n)
 
static VALUE rb_ary_drop_while (VALUE ary)
 
void Init_Array (void)
 

Variables

VALUE rb_cArray
 
static ID id_cmp
 
static ID id_div
 
static ID id_power
 
VALUE rb_output_fs
 
static ID id_random
 

Macro Definition Documentation

◆ ARY_CAPA

#define ARY_CAPA (   ary)
Value:
ARY_SHARED_ROOT_P(ary) ? RARRAY_LEN(ary) : RARRAY(ary)->as.heap.aux.capa)
#define RARRAY_LEN(a)
Definition: ruby.h:878
#define RARRAY(obj)
Definition: ruby.h:1123
#define ARY_EMBED_P(ary)
Definition: array.c:101
#define RARRAY_EMBED_LEN_MAX
Definition: ruby.h:859

Definition at line 166 of file array.c.

Referenced by ary_double_capa(), ary_ensure_room_for_push(), ary_ensure_room_for_unshift(), ary_make_shared(), ary_resize_smaller(), rb_ary_clear(), rb_ary_fill(), rb_ary_pop(), rb_ary_resize(), rb_ary_set_len(), rb_ary_splice(), and rb_ary_store().

◆ ARY_DEFAULT_SIZE

#define ARY_DEFAULT_SIZE   16

◆ ARY_EMBED_LEN

#define ARY_EMBED_LEN (   a)
Value:
(long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \
#define RBASIC(obj)
Definition: ruby.h:1116
#define RARRAY_EMBED_LEN_MASK
Definition: ruby.h:876
#define RARRAY_EMBED_LEN_SHIFT
Definition: ruby.h:877
#define ARY_EMBED_P(ary)
Definition: array.c:101
#define assert(condition)
Definition: ossl.h:45

Definition at line 108 of file array.c.

Referenced by ary_resize_capa(), and rb_ary_sort_bang().

◆ ARY_EMBED_P

#define ARY_EMBED_P (   ary)
Value:
FL_TEST((ary), RARRAY_EMBED_FLAG)!=0)
#define ELTS_SHARED
Definition: ruby.h:817
#define FL_TEST(x, f)
Definition: ruby.h:1169
#define RARRAY_EMBED_FLAG
Definition: ruby.h:874
#define assert(condition)
Definition: ossl.h:45

Definition at line 101 of file array.c.

Referenced by ary_make_shared(), ary_resize_capa(), rb_ary_clear(), rb_ary_flatten_bang(), rb_ary_resize(), rb_ary_shared_with_p(), rb_ary_shift(), rb_ary_sort_bang(), rb_ary_uniq_bang(), and rb_ary_unshare_safe().

◆ ARY_EMBED_PTR

#define ARY_EMBED_PTR (   a)    (assert(ARY_EMBED_P(a)), RARRAY(a)->as.ary)

Definition at line 107 of file array.c.

Referenced by ary_resize_capa(), rb_ary_modify(), rb_ary_resize(), and rb_ary_sort_bang().

◆ ARY_HEAP_LEN

#define ARY_HEAP_LEN (   a)    (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.len)

Definition at line 106 of file array.c.

Referenced by ary_shrink_capa().

◆ ARY_HEAP_PTR

#define ARY_HEAP_PTR (   a)    (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.ptr)

Definition at line 105 of file array.c.

Referenced by rb_ary_free(), rb_ary_modify(), rb_ary_resize(), and rb_ary_sort_bang().

◆ ARY_HEAP_SIZE

#define ARY_HEAP_SIZE (   a)    (assert(!ARY_EMBED_P(a)), assert(ARY_OWNS_HEAP_P(a)), RARRAY(a)->as.heap.aux.capa * sizeof(VALUE))

Definition at line 112 of file array.c.

Referenced by rb_ary_free(), rb_ary_initialize(), rb_ary_replace(), and rb_ary_sort_bang().

◆ ARY_INCREASE_LEN

#define ARY_INCREASE_LEN (   ary,
 
)
Value:
do { \
assert(!OBJ_FROZEN(ary)); \
if (ARY_EMBED_P(ary)) { \
ARY_SET_EMBED_LEN((ary), RARRAY_LEN(ary)+(n)); \
} \
else { \
RARRAY(ary)->as.heap.len += (n); \
} \
} while (0)
#define RARRAY_LEN(a)
Definition: ruby.h:878
#define OBJ_FROZEN(x)
Definition: ruby.h:1193
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 156 of file array.c.

Referenced by rb_ary_delete_at(), rb_ary_pop_m(), rb_ary_shift(), and rb_ary_shift_m().

◆ ARY_INCREASE_PTR

#define ARY_INCREASE_PTR (   ary,
 
)
Value:
do { \
assert(!ARY_EMBED_P(ary)); \
assert(!OBJ_FROZEN(ary)); \
RARRAY(ary)->as.heap.ptr += (n); \
} while (0)
#define OBJ_FROZEN(x)
Definition: ruby.h:1193
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 151 of file array.c.

Referenced by ary_make_partial(), rb_ary_shift(), and rb_ary_shift_m().

◆ ARY_MAX_SIZE

#define ARY_MAX_SIZE   (LONG_MAX / (int)sizeof(VALUE))

◆ ARY_OWNS_HEAP_P

#define ARY_OWNS_HEAP_P (   a)    (!FL_TEST((a), ELTS_SHARED|RARRAY_EMBED_FLAG))

Definition at line 114 of file array.c.

Referenced by rb_ary_free(), rb_ary_initialize(), rb_ary_memsize(), rb_ary_pop(), and rb_ary_replace().

◆ ARY_SET_CAPA

#define ARY_SET_CAPA (   ary,
 
)
Value:
do { \
assert(!ARY_EMBED_P(ary)); \
assert(!ARY_SHARED_P(ary)); \
assert(!OBJ_FROZEN(ary)); \
RARRAY(ary)->as.heap.aux.capa = (n); \
} while (0)
#define ARY_SHARED_P(ary)
Definition: array.c:98
#define OBJ_FROZEN(x)
Definition: ruby.h:1193
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 168 of file array.c.

Referenced by ary_new(), ary_resize_capa(), rb_ary_modify(), rb_ary_resize(), and rb_ary_sort_bang().

◆ ARY_SET_EMBED_LEN

#define ARY_SET_EMBED_LEN (   ary,
 
)
Value:
do { \
long tmp_n = (n); \
assert(ARY_EMBED_P(ary)); \
assert(!OBJ_FROZEN(ary)); \
RBASIC(ary)->flags &= ~RARRAY_EMBED_LEN_MASK; \
RBASIC(ary)->flags |= (tmp_n) << RARRAY_EMBED_LEN_SHIFT; \
} while (0)
#define OBJ_FROZEN(x)
Definition: ruby.h:1193
#define RARRAY_EMBED_LEN_MASK
Definition: ruby.h:876
#define RARRAY_EMBED_LEN_SHIFT
Definition: ruby.h:877
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 131 of file array.c.

Referenced by ary_make_partial(), ary_make_substitution(), rb_ary_flatten_bang(), rb_ary_initialize(), rb_ary_modify(), rb_ary_resize(), and rb_ary_sort_bang().

◆ ARY_SET_HEAP_LEN

#define ARY_SET_HEAP_LEN (   ary,
 
)
Value:
do { \
assert(!ARY_EMBED_P(ary)); \
RARRAY(ary)->as.heap.len = (n); \
} while (0)
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 138 of file array.c.

Referenced by ary_new(), ary_resize_capa(), rb_ary_resize(), and rb_ary_sort_bang().

◆ ARY_SET_LEN

#define ARY_SET_LEN (   ary,
 
)

◆ ARY_SET_PTR

#define ARY_SET_PTR (   ary,
 
)
Value:
do { \
assert(!ARY_EMBED_P(ary)); \
assert(!OBJ_FROZEN(ary)); \
RARRAY(ary)->as.heap.ptr = (p); \
} while (0)
#define OBJ_FROZEN(x)
Definition: ruby.h:1193
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 126 of file array.c.

Referenced by ary_ensure_room_for_unshift(), ary_make_partial(), ary_make_shared(), ary_new(), ary_resize_capa(), rb_ary_modify(), rb_ary_replace(), and rb_ary_sort_bang().

◆ ARY_SET_SHARED

#define ARY_SET_SHARED (   ary,
  value 
)
Value:
do { \
const VALUE _ary_ = (ary); \
const VALUE _value_ = (value); \
assert(!ARY_EMBED_P(_ary_)); \
assert(ARY_SHARED_P(_ary_)); \
assert(ARY_SHARED_ROOT_P(_value_)); \
RB_OBJ_WRITE(_ary_, &RARRAY(_ary_)->as.heap.aux.shared, _value_); \
} while (0)
#define ARY_SHARED_ROOT_P(ary)
Definition: array.c:185
#define ARY_SHARED_P(ary)
Definition: array.c:98
#define RARRAY(obj)
Definition: ruby.h:1123
unsigned long VALUE
Definition: ruby.h:88
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 176 of file array.c.

Referenced by ary_make_shared(), and rb_ary_set_shared().

◆ ARY_SET_SHARED_NUM

#define ARY_SET_SHARED_NUM (   ary,
  value 
)
Value:
do { \
assert(ARY_SHARED_ROOT_P(ary)); \
RARRAY(ary)->as.heap.aux.capa = (value); \
} while (0)
#define ARY_SHARED_ROOT_P(ary)
Definition: array.c:185

Definition at line 189 of file array.c.

Referenced by ary_make_shared(), rb_ary_decrement_share(), and rb_ary_increment_share().

◆ ARY_SHARED

#define ARY_SHARED (   ary)    (assert(ARY_SHARED_P(ary)), RARRAY(ary)->as.heap.aux.shared)

◆ ARY_SHARED_NUM

#define ARY_SHARED_NUM (   ary)    (assert(ARY_SHARED_ROOT_P(ary)), RARRAY(ary)->as.heap.aux.capa)

Definition at line 186 of file array.c.

Referenced by rb_ary_decrement_share(), and rb_ary_increment_share().

◆ ARY_SHARED_OCCUPIED

#define ARY_SHARED_OCCUPIED (   ary)    (ARY_SHARED_NUM(ary) == 1)

◆ ARY_SHARED_P

#define ARY_SHARED_P (   ary)

◆ ARY_SHARED_ROOT_P

#define ARY_SHARED_ROOT_P (   ary)    (FL_TEST((ary), RARRAY_SHARED_ROOT_FLAG))

Definition at line 185 of file array.c.

Referenced by ary_make_shared().

◆ FL_SET_EMBED

#define FL_SET_EMBED (   a)
Value:
do { \
assert(!ARY_SHARED_P(a)); \
FL_SET((a), RARRAY_EMBED_FLAG); \
} while (0)
#define ARY_SHARED_P(ary)
Definition: array.c:98
#define RARRAY_EMBED_FLAG
Definition: ruby.h:874

Definition at line 115 of file array.c.

Referenced by ary_resize_capa(), rb_ary_clear(), rb_ary_initialize(), rb_ary_modify(), rb_ary_replace(), rb_ary_sort_bang(), and rb_ary_uniq_bang().

◆ FL_SET_SHARED

#define FL_SET_SHARED (   ary)
Value:
do { \
assert(!ARY_EMBED_P(ary)); \
FL_SET((ary), ELTS_SHARED); \
} while (0)
#define ELTS_SHARED
Definition: ruby.h:817
#define ARY_EMBED_P(ary)
Definition: array.c:101

Definition at line 120 of file array.c.

Referenced by ary_make_shared(), and rb_ary_set_shared().

◆ FL_SET_SHARED_ROOT

#define FL_SET_SHARED_ROOT (   ary)
Value:
do { \
assert(!ARY_EMBED_P(ary)); \
FL_SET((ary), RARRAY_SHARED_ROOT_FLAG); \
} while (0)
#define ARY_EMBED_P(ary)
Definition: array.c:101
#define RARRAY_SHARED_ROOT_FLAG
Definition: array.c:184

Definition at line 193 of file array.c.

Referenced by ary_make_shared().

◆ FL_UNSET_EMBED

#define FL_UNSET_EMBED (   ary)    FL_UNSET((ary), RARRAY_EMBED_FLAG|RARRAY_EMBED_LEN_MASK)

◆ FL_UNSET_SHARED

#define FL_UNSET_SHARED (   ary)    FL_UNSET((ary), ELTS_SHARED)

Definition at line 124 of file array.c.

Referenced by rb_ary_modify(), rb_ary_replace(), rb_ary_sort_bang(), and rb_ary_unshare().

◆ NDEBUG

#define NDEBUG

Definition at line 23 of file array.c.

◆ OPTHASH_GIVEN_P

#define OPTHASH_GIVEN_P (   opts)    (argc > 0 && !NIL_P((opts) = rb_check_hash_type(argv[argc-1])) && (--argc, 1))

Definition at line 4429 of file array.c.

Referenced by rb_ary_sample(), and rb_ary_shuffle_bang().

◆ RAND_UPTO

#define RAND_UPTO (   max)    (long)rb_random_ulong_limited((randgen), (max)-1)

Definition at line 4433 of file array.c.

Referenced by rb_ary_sample(), and rb_ary_shuffle_bang().

◆ RARRAY_SHARED_ROOT_FLAG

#define RARRAY_SHARED_ROOT_FLAG   FL_USER5

Definition at line 184 of file array.c.

◆ rb_intern

#define rb_intern (   str)    rb_intern_const(str)

Referenced by argument_error(), asn1time_to_time(), big_op(), BigDecimal_div2(), BigDecimal_divmod(), BigDecimal_divremain(), BigDecimal_to_i(), BigDecimal_to_r(), BigDecimalCmp(), boot_defclass(), bsock_setsockopt(), callback(), cbsubst_def_attr_aliases(), cleanup_iseq_build(), const_missing(), count_objects(), count_objects_size(), cto_i(), default_inspect(), dir_initialize(), dir_inspect(), dir_open_dir(), dump_output(), ecerr_destination_encoding(), ecerr_destination_encoding_name(), ecerr_error_bytes(), ecerr_error_char(), ecerr_incomplete_input(), ecerr_readagain_bytes(), ecerr_source_encoding(), ecerr_source_encoding_name(), echild_status(), error_print(), EVENTSINK_Invoke(), evs_length(), exc_message(), exc_to_s(), exit_status(), exit_success_p(), fdbm_replace(), fdbm_update(), fev_get_handler(), fev_set_handler(), fgdbm_replace(), fgdbm_update(), fole_s_show_help(), folemethod_event(), folemethod_name(), foleparam_inspect(), foleparam_name(), foletype_name(), foletype_s_ole_classes(), foletypelib_s_typelibs(), folevariable_inspect(), folevariable_name(), folevariant_value(), fsdbm_replace(), fsdbm_update(), function_call(), gc_profile_record_get(), gc_start_internal(), generic_to_value(), get_backtrace(), GetConfigPtr(), global_id(), hidden_identity_hash_new(), Init_Array(), Init_bubblebabble(), Init_class_hierarchy(), Init_console(), Init_cparse(), Init_digest(), Init_dlcfunc(), Init_dlptr(), Init_Enumerator(), Init_Exception(), Init_fiddle_pointer(), Init_GC(), Init_generator(), Init_md5(), Init_objspace(), Init_objspace_dump(), Init_openssl(), Init_ossl_asn1(), Init_ossl_pkcs12(), Init_ossl_pkcs7(), Init_ossl_pkey(), Init_ossl_ssl(), Init_ossl_x509ext(), Init_ossl_x509name(), Init_ossl_x509store(), Init_parser(), Init_pathname(), Init_Proc(), Init_psych_emitter(), Init_psych_parser(), Init_Random(), Init_readline(), Init_rmd160(), Init_sha1(), Init_sha2(), Init_signal(), Init_stringio(), Init_strscan(), Init_Struct(), Init_syslog(), Init_tcltklib(), Init_tkutil(), Init_transcode(), Init_vm_eval(), Init_win32ole(), Init_zlib(), io_getch(), ip_ruby_cmd(), ip_ruby_cmd_receiver_const_get(), iseq_data_to_ary(), iseq_load(), join_der(), make_econv_exception(), make_exception(), make_no_method_exception(), mark(), name_err_name(), nometh_err_args(), ole_const_load(), ole_invoke(), ole_method_params(), ole_search_handler_method(), ole_typelib_from_itypeinfo(), ole_variables(), olemethod_set_member(), oleparam_ole_param_from_index(), oletype_set_member(), ossl_call_client_cert_cb(), ossl_call_session_get_cb(), ossl_call_session_new_cb(), ossl_call_session_remove_cb(), ossl_call_tmp_dh_callback(), ossl_call_verify_cb_proc(), ossl_pkcs7_get_type(), ossl_pkcs7_set_certificates(), ossl_pkcs7_set_crls(), ossl_ssl_close(), ossl_ssl_initialize(), ossl_ssl_read_internal(), ossl_ssl_session_get_time(), ossl_ssl_session_set_time(), ossl_ssl_write_internal(), ossl_sslctx_flush_sessions(), ossl_sslctx_get_session_cache_stats(), ossl_sslctx_setup(), ossl_x509attr_get_value(), ossl_x509attr_initialize(), ossl_x509ext_initialize(), ossl_x509name_initialize(), ossl_x509store_verify(), parse_keyword_arg_i(), path_atime(), path_basename(), path_binread(), path_binwrite(), path_blockdev_p(), path_chardev_p(), path_chmod(), path_chown(), path_ctime(), path_directory_p(), path_dirname(), path_each_entry(), path_each_line(), path_entries(), path_executable_p(), path_executable_real_p(), path_exist_p(), path_expand_path(), path_extname(), path_file_p(), path_fnmatch(), path_ftype(), path_grpowned_p(), path_lchmod(), path_lchown(), path_lstat(), path_make_link(), path_make_symlink(), path_mkdir(), path_mtime(), path_open(), path_opendir(), path_owned_p(), path_pipe_p(), path_read(), path_readable_p(), path_readable_real_p(), path_readlines(), path_readlink(), path_realdirpath(), path_realpath(), path_rename(), path_rmdir(), path_s_getwd(), path_s_glob(), path_setgid_p(), path_setuid_p(), path_size(), path_size_p(), path_socket_p(), path_split(), path_stat(), path_sticky_p(), path_sub(), path_symlink_p(), path_sysopen(), path_truncate(), path_unlink(), path_utime(), path_world_readable_p(), path_world_writable_p(), path_writable_p(), path_writable_real_p(), path_write(), path_zero_p(), private_iv_get(), process_options(), raise_loaderror(), random_equal(), rawmode_opt(), rb_ary_equal(), rb_ary_sort_by_bang(), rb_big_cmp(), rb_big_divmod(), rb_big_fdiv(), rb_big_idiv(), rb_big_pow(), rb_big_remainder(), rb_catch(), rb_cv_get(), rb_cv_set(), rb_define_alias(), rb_define_attr(), rb_define_class(), rb_define_class_under(), rb_define_class_variable(), rb_define_const(), rb_define_method(), rb_define_module(), rb_define_module_under(), rb_define_private_method(), rb_define_protected_method(), rb_eval_cmd(), rb_exc_new(), rb_exc_new_str(), rb_f_chomp(), rb_f_chop(), rb_f_gsub(), rb_f_sub(), rb_gzreader_bytes(), rb_gzreader_lines(), rb_iv_get(), rb_iv_set(), rb_obj_basic_to_s_p(), rb_set_class_path(), rb_strftime_with_timespec(), rb_struct_define(), rb_struct_define_under(), rb_struct_define_without_accessor(), rb_struct_define_without_accessor_under(), rb_struct_iv_get(), rb_throw(), rb_undef_method(), rbtime2vtdate(), reachable_object_from_root_i(), reachable_objects_from_root(), readline_attempted_completion_function(), readline_s_set_completion_proc(), register_label(), rescue_callback(), ruby_thread_init(), set_argv(), set_backtrace(), set_max_block_time(), set_option_encoding_once(), should_be_callable(), sockopt_data(), sockopt_family_m(), sockopt_initialize(), sockopt_level(), sockopt_optname(), sockopt_unpack(), ssl_renegotiation_cb(), strio_bytes(), strio_chars(), strio_codepoints(), strio_lines(), strio_readbyte(), strio_readchar(), strio_readline(), strio_sysread(), syserr_eqq(), syserr_errno(), syserr_initialize(), transcode_io(), unknown_keyword_error(), unlink_body(), unlink_rescue(), vm_set_main_stack(), vtdate2rbtime(), and wmap_allocate().

◆ SORT_OPTIMIZABLE

#define SORT_OPTIMIZABLE (   data,
  type 
)
Value:
(((data)->opt_inited & SORT_OPTIMIZABLE_BIT(type)) ? \
((data)->opt_methods & SORT_OPTIMIZABLE_BIT(type)) : \
(((data)->opt_inited |= SORT_OPTIMIZABLE_BIT(type)), \
rb_method_basic_definition_p(TOKEN_PASTE(rb_c,type), id_cmp) && \
((data)->opt_methods |= SORT_OPTIMIZABLE_BIT(type))))
static ID id_cmp
Definition: array.c:29
int type
Definition: tcltklib.c:112
#define SORT_OPTIMIZABLE_BIT(type)
Definition: array.c:2359

Definition at line 2360 of file array.c.

Referenced by sort_2().

◆ SORT_OPTIMIZABLE_BIT

#define SORT_OPTIMIZABLE_BIT (   type)    (1U << TOKEN_PASTE(sort_opt_,type))

Definition at line 2359 of file array.c.

◆ STRING_P

#define STRING_P (   s)    (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)

Definition at line 2357 of file array.c.

Referenced by sort_2().

◆ tmpary

#define tmpary (   n)    rb_ary_tmp_new(n)

Definition at line 4695 of file array.c.

Referenced by rb_ary_product().

◆ tmpary_discard

#define tmpary_discard (   a)    (ary_discard(a), RBASIC_SET_CLASS_RAW(a, rb_cArray))

Definition at line 4696 of file array.c.

Referenced by rb_ary_product().

◆ tmpbuf

#define tmpbuf (   n,
  size 
)    rb_str_tmp_new((n)*(size))

◆ tmpbuf_discard

#define tmpbuf_discard (   s)    (rb_str_resize((s), 0L), RBASIC_SET_CLASS_RAW(s, rb_cString))

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
sort_opt_Fixnum 
sort_opt_String 
sort_optimizable_count 

Definition at line 2351 of file array.c.

◆ ary_take_pos_flags

Enumerator
ARY_TAKE_FIRST 
ARY_TAKE_LAST 

Definition at line 857 of file array.c.

Function Documentation

◆ ary_add_hash()

static VALUE ary_add_hash ( VALUE  hash,
VALUE  ary 
)
static

Definition at line 3905 of file array.c.

References ary_sort_data::ary, hash(), Qundef, RARRAY_AREF, RARRAY_LEN, rb_hash_aset(), and rb_hash_lookup2().

Referenced by ary_make_hash().

◆ ary_add_hash_by()

static VALUE ary_add_hash_by ( VALUE  hash,
VALUE  ary 
)
static

◆ ary_alloc()

static VALUE ary_alloc ( VALUE  klass)
static

◆ ary_discard()

static void ary_discard ( VALUE  ary)
inlinestatic

Definition at line 563 of file array.c.

References RARRAY_EMBED_FLAG, RARRAY_EMBED_LEN_MASK, rb_ary_free(), and RBASIC.

Referenced by rb_ary_flatten_bang(), and rb_ary_resize().

◆ ary_double_capa()

static void ary_double_capa ( VALUE  ary,
long  min 
)
static

◆ ary_ensure_room_for_push()

static void ary_ensure_room_for_push ( VALUE  ary,
long  add_len 
)
static

◆ ary_ensure_room_for_unshift()

static void ary_ensure_room_for_unshift ( VALUE  ary,
int  argc 
)
static

◆ ary_enum_length()

static VALUE ary_enum_length ( VALUE  ary,
VALUE  args,
VALUE  eobj 
)
static

◆ ary_hash_orset()

static int ary_hash_orset ( st_data_t key,
st_data_t value,
st_data_t  arg,
int  existing 
)
static

Definition at line 4045 of file array.c.

References key, ST_CONTINUE, and ST_STOP.

Referenced by rb_ary_or().

◆ ary_join_0()

static void ary_join_0 ( VALUE  ary,
VALUE  sep,
long  max,
VALUE  result 
)
static

Definition at line 1937 of file array.c.

References max(), NIL_P, OBJ_TAINT, OBJ_TAINTED, RARRAY_AREF, rb_enc_copy(), rb_str_buf_append(), result, and val.

Referenced by rb_ary_join().

◆ ary_join_1()

static void ary_join_1 ( VALUE  obj,
VALUE  ary,
VALUE  sep,
long  i,
VALUE  result,
int *  first 
)
static

◆ ary_make_hash()

static VALUE ary_make_hash ( VALUE  ary)
static

◆ ary_make_hash_by()

static VALUE ary_make_hash_by ( VALUE  ary)
static

Definition at line 3949 of file array.c.

References ary_sort_data::ary, ary_add_hash_by(), ary_tmp_hash_new(), and hash().

Referenced by rb_ary_uniq(), and rb_ary_uniq_bang().

◆ ary_make_partial()

static VALUE ary_make_partial ( VALUE  ary,
VALUE  klass,
long  offset,
long  len 
)
static

◆ ary_make_shared()

static VALUE ary_make_shared ( VALUE  ary)
static

◆ ary_make_shared_copy()

static VALUE ary_make_shared_copy ( VALUE  ary)
static

◆ ary_make_substitution()

static VALUE ary_make_substitution ( VALUE  ary)
static

◆ ary_mem_clear()

static void ary_mem_clear ( VALUE  ary,
long  beg,
long  size 
)
static

◆ ary_memcpy()

static void ary_memcpy ( VALUE  ary,
long  beg,
long  argc,
const VALUE argv 
)
static

◆ ary_memfill()

static void ary_memfill ( VALUE  ary,
long  beg,
long  size,
VALUE  val 
)
static

Definition at line 59 of file array.c.

References memfill(), Qundef, RARRAY_PTR_USE, RB_OBJ_WRITTEN, size, and val.

Referenced by rb_ary_fill(), and rb_ary_initialize().

◆ ary_new()

static VALUE ary_new ( VALUE  klass,
long  capa 
)
static

◆ ary_recycle_hash()

static void ary_recycle_hash ( VALUE  hash)
inlinestatic

Definition at line 3956 of file array.c.

References hash(), RB_GC_GUARD, RHASH, and st_free_table().

Referenced by rb_ary_and(), rb_ary_diff(), rb_ary_or(), rb_ary_uniq(), and rb_ary_uniq_bang().

◆ ary_reject()

static VALUE ary_reject ( VALUE  orig,
VALUE  result 
)
static

Definition at line 3077 of file array.c.

References RARRAY_AREF, RARRAY_LEN, rb_ary_push(), rb_yield(), result, and RTEST.

Referenced by rb_ary_reject().

◆ ary_reject_bang()

static VALUE ary_reject_bang ( VALUE  ary)
static

◆ ary_resize_capa()

static void ary_resize_capa ( VALUE  ary,
long  capacity 
)
static

◆ ary_resize_smaller()

static void ary_resize_smaller ( VALUE  ary,
long  len 
)
static

◆ ary_reverse()

static void ary_reverse ( VALUE p1,
VALUE p2 
)
static

Definition at line 2177 of file array.c.

Referenced by rb_ary_reverse(), and rb_ary_rotate().

◆ ary_shrink_capa()

static void ary_shrink_capa ( VALUE  ary)
inlinestatic

Definition at line 233 of file array.c.

References ARY_HEAP_LEN, ARY_SHARED_P, assert, RARRAY, and REALLOC_N.

Referenced by ary_make_shared().

◆ ary_take_first_or_last()

static VALUE ary_take_first_or_last ( int  argc,
VALUE argv,
VALUE  ary,
enum ary_take_pos_flags  last 
)
static

◆ ary_tmp_hash_new()

static VALUE ary_tmp_hash_new ( void  )
inlinestatic

Definition at line 3919 of file array.c.

References hash(), rb_hash_new(), and RBASIC_CLEAR_CLASS.

Referenced by ary_make_hash(), and ary_make_hash_by().

◆ binomial_coefficient()

static VALUE binomial_coefficient ( long  comb,
long  size 
)
static

◆ descending_factorial()

static VALUE descending_factorial ( long  from,
long  how_many 
)
static

Definition at line 4758 of file array.c.

References cnt, LONG2FIX, and rb_funcallv().

Referenced by binomial_coefficient(), and rb_ary_permutation_size().

◆ empty_ary_alloc()

static VALUE empty_ary_alloc ( VALUE  klass)
static

◆ flatten()

static VALUE flatten ( VALUE  ary,
int  level,
int *  modified 
)
static

◆ Init_Array()

void Init_Array ( void  )

Definition at line 5593 of file array.c.

References empty_ary_alloc(), id_cmp, id_div, id_power, id_random, rb_ary_and(), rb_ary_aref(), rb_ary_aset(), rb_ary_assoc(), rb_ary_at(), rb_ary_bsearch(), rb_ary_clear(), rb_ary_cmp(), rb_ary_collect(), rb_ary_collect_bang(), rb_ary_combination(), rb_ary_compact(), rb_ary_compact_bang(), rb_ary_concat(), rb_ary_count(), rb_ary_cycle(), rb_ary_delete(), rb_ary_delete_at_m(), rb_ary_delete_if(), rb_ary_diff(), rb_ary_drop(), rb_ary_drop_while(), rb_ary_each(), rb_ary_each_index(), rb_ary_empty_p(), rb_ary_eql(), rb_ary_equal(), rb_ary_fetch(), rb_ary_fill(), rb_ary_first(), rb_ary_flatten(), rb_ary_flatten_bang(), rb_ary_frozen_p(), rb_ary_hash(), rb_ary_includes(), rb_ary_index(), rb_ary_initialize(), rb_ary_insert(), rb_ary_inspect(), rb_ary_join_m(), rb_ary_keep_if(), rb_ary_last(), rb_ary_length(), rb_ary_or(), rb_ary_permutation(), rb_ary_plus(), rb_ary_pop_m(), rb_ary_product(), rb_ary_push(), rb_ary_push_m(), rb_ary_rassoc(), rb_ary_reject(), rb_ary_reject_bang(), rb_ary_repeated_combination(), rb_ary_repeated_permutation(), rb_ary_replace(), rb_ary_reverse_bang(), rb_ary_reverse_each(), rb_ary_reverse_m(), rb_ary_rindex(), rb_ary_rotate_bang(), rb_ary_rotate_m(), rb_ary_s_create(), rb_ary_s_try_convert(), rb_ary_sample(), rb_ary_select(), rb_ary_select_bang(), rb_ary_shift_m(), rb_ary_shuffle(), rb_ary_shuffle_bang(), rb_ary_slice_bang(), rb_ary_sort(), rb_ary_sort_bang(), rb_ary_sort_by_bang(), rb_ary_take(), rb_ary_take_while(), rb_ary_times(), rb_ary_to_a(), rb_ary_to_ary_m(), rb_ary_to_h(), rb_ary_transpose(), rb_ary_uniq(), rb_ary_uniq_bang(), rb_ary_unshift_m(), rb_ary_values_at(), rb_ary_zip(), rb_cArray, rb_cObject, rb_define_alias(), rb_define_alloc_func(), rb_define_class(), rb_define_method(), rb_define_singleton_method(), rb_include_module(), rb_intern, and rb_mEnumerable.

◆ inspect_ary()

static VALUE inspect_ary ( VALUE  ary,
VALUE  dummy,
int  recur 
)
static

◆ memfill()

static void memfill ( register VALUE mem,
register long  size,
register VALUE  val 
)
inlinestatic

Definition at line 51 of file array.c.

References size, and val.

Referenced by ary_memfill().

◆ permute0()

static void permute0 ( long  n,
long  r,
long *  p,
long  index,
char *  used,
VALUE  values 
)
static

Definition at line 4732 of file array.c.

References rb_eRuntimeError, rb_raise(), and yield_indexed_values().

Referenced by rb_ary_permutation().

◆ push_value()

static int push_value ( st_data_t  key,
st_data_t  val,
st_data_t  ary 
)
static

Definition at line 4087 of file array.c.

References ary_sort_data::ary, rb_ary_push(), ST_CONTINUE, and val.

Referenced by rb_ary_uniq_bang().

◆ rb_ary_and()

static VALUE rb_ary_and ( VALUE  ary1,
VALUE  ary2 
)
static

◆ rb_ary_aref()

VALUE rb_ary_aref ( int  argc,
VALUE argv,
VALUE  ary 
)

◆ rb_ary_aset()

static VALUE rb_ary_aset ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_assoc()

VALUE rb_ary_assoc ( VALUE  ary,
VALUE  key 
)

Definition at line 3648 of file array.c.

References ary_sort_data::ary, key, NIL_P, Qnil, RARRAY_AREF, RARRAY_LEN, rb_check_array_type(), and rb_equal().

Referenced by Init_Array().

◆ rb_ary_at()

static VALUE rb_ary_at ( VALUE  ary,
VALUE  pos 
)
static

Definition at line 1289 of file array.c.

References NUM2LONG, and rb_ary_entry().

Referenced by Init_Array().

◆ rb_ary_bsearch()

static VALUE rb_ary_bsearch ( VALUE  ary)
static

◆ rb_ary_cat()

VALUE rb_ary_cat ( VALUE  ary,
const VALUE ptr,
long  len 
)

◆ rb_ary_clear()

VALUE rb_ary_clear ( VALUE  ary)

◆ rb_ary_cmp()

VALUE rb_ary_cmp ( VALUE  ary1,
VALUE  ary2 
)

Definition at line 3888 of file array.c.

References INT2FIX, NIL_P, Qnil, Qundef, RARRAY_LEN, rb_check_array_type(), rb_exec_recursive_paired(), and recursive_cmp().

Referenced by Init_Array().

◆ rb_ary_collect()

static VALUE rb_ary_collect ( VALUE  ary)
static

◆ rb_ary_collect_bang()

static VALUE rb_ary_collect_bang ( VALUE  ary)
static

◆ rb_ary_combination()

static VALUE rb_ary_combination ( VALUE  ary,
VALUE  num 
)
static

◆ rb_ary_combination_size()

static VALUE rb_ary_combination_size ( VALUE  ary,
VALUE  args,
VALUE  eobj 
)
static

Definition at line 4861 of file array.c.

References ary_sort_data::ary, binomial_coefficient(), NUM2LONG, RARRAY_AREF, and RARRAY_LEN.

Referenced by rb_ary_combination().

◆ rb_ary_compact()

static VALUE rb_ary_compact ( VALUE  ary)
static

Definition at line 4235 of file array.c.

References ary_sort_data::ary, rb_ary_compact_bang(), and rb_ary_dup().

Referenced by Init_Array().

◆ rb_ary_compact_bang()

static VALUE rb_ary_compact_bang ( VALUE  ary)
static

◆ rb_ary_concat()

VALUE rb_ary_concat ( VALUE  x,
VALUE  y 
)

◆ rb_ary_count()

static VALUE rb_ary_count ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_cycle()

static VALUE rb_ary_cycle ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_cycle_size()

static VALUE rb_ary_cycle_size ( VALUE  self,
VALUE  args,
VALUE  eobj 
)
static

Definition at line 4633 of file array.c.

References DBL2NUM, INFINITY, INT2FIX, LONG2FIX, mul, NUM2LONG, Qnil, RARRAY_AREF, RARRAY_LEN, rb_ary_length(), and rb_funcallv().

Referenced by rb_ary_cycle().

◆ rb_ary_decrement_share()

static void rb_ary_decrement_share ( VALUE  shared)
static

◆ rb_ary_delete()

VALUE rb_ary_delete ( VALUE  ary,
VALUE  item 
)

◆ rb_ary_delete_at()

VALUE rb_ary_delete_at ( VALUE  ary,
long  pos 
)

◆ rb_ary_delete_at_m()

static VALUE rb_ary_delete_at_m ( VALUE  ary,
VALUE  pos 
)
static

Definition at line 2999 of file array.c.

References ary_sort_data::ary, NUM2LONG, and rb_ary_delete_at().

Referenced by Init_Array().

◆ rb_ary_delete_if()

static VALUE rb_ary_delete_if ( VALUE  ary)
static

Definition at line 3176 of file array.c.

References ary_sort_data::ary, ary_enum_length(), ary_reject_bang(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Array().

◆ rb_ary_delete_same()

void rb_ary_delete_same ( VALUE  ary,
VALUE  item 
)

Definition at line 2939 of file array.c.

References ary_sort_data::ary, ary_resize_smaller(), RARRAY_AREF, RARRAY_LEN, and rb_ary_store().

◆ rb_ary_diff()

static VALUE rb_ary_diff ( VALUE  ary1,
VALUE  ary2 
)
static

◆ rb_ary_drop()

static VALUE rb_ary_drop ( VALUE  ary,
VALUE  n 
)
static

◆ rb_ary_drop_while()

static VALUE rb_ary_drop_while ( VALUE  ary)
static

Definition at line 5344 of file array.c.

References ary_sort_data::ary, LONG2FIX, RARRAY_AREF, RARRAY_LEN, rb_ary_drop(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Array().

◆ rb_ary_dup()

VALUE rb_ary_dup ( VALUE  ary)

◆ rb_ary_each()

VALUE rb_ary_each ( VALUE  array)

◆ rb_ary_each_index()

static VALUE rb_ary_each_index ( VALUE  ary)
static

Definition at line 1820 of file array.c.

References ary_enum_length(), LONG2NUM, RARRAY_LEN, rb_yield(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Array().

◆ rb_ary_elt()

static VALUE rb_ary_elt ( VALUE  ary,
long  offset 
)
inlinestatic

◆ rb_ary_empty_p()

static VALUE rb_ary_empty_p ( VALUE  ary)
static

Definition at line 1891 of file array.c.

References Qfalse, Qtrue, and RARRAY_LEN.

Referenced by Init_Array().

◆ rb_ary_entry()

VALUE rb_ary_entry ( VALUE  ary,
long  offset 
)

Definition at line 1179 of file array.c.

References RARRAY_LEN, and rb_ary_elt().

Referenced by addrinfo_initialize(), addrinfo_ip_address(), addrinfo_ip_unpack(), addrinfo_mload(), ary2ptr_dispparams(), ary_len_of_dim(), ary_new_dim(), check_exec_redirect(), check_type_val2variant(), collect_caller_bindings(), dimension(), divmodv(), enc_register_at(), EVENTSINK_Invoke(), evs_entry(), foletypelib_initialize(), folevariant_initialize(), folevariant_s_array(), frame_get(), generate_json_array(), generate_json_object(), get_loaded_features_index(), hash2named_arg(), initialize_params(), iseq_build_from_ary_body(), iseq_data_to_ary(), iseq_load(), JSON_parse_string(), lazy_zip_arrays_func(), lep_svar_get(), match_i(), ole_ary_m_entry(), ole_invoke(), ole_invoke2(), ole_search_event(), ole_search_event_at(), oletypelib_search_registry2(), ossl_asn1cons_to_der(), ossl_call_client_cert_cb(), ossl_call_session_get_cb(), ossl_call_session_new_cb(), ossl_call_session_remove_cb(), ossl_sslctx_set_ciphers(), ossl_x509name_init_i(), parse_main(), path_split(), pty_close_pty(), rb_ary_aref(), rb_ary_at(), rb_ary_bsearch(), rb_ary_product(), rb_ary_values_at(), rb_debug_inspector_frame_binding_get(), rb_debug_inspector_frame_class_get(), rb_debug_inspector_frame_iseq_get(), rb_debug_inspector_frame_self_get(), rb_econv_init_by_convpath(), rb_enc_aliases_enc_i(), rb_enc_from_encoding_index(), rb_execarg_addopt(), rb_iseq_build_from_ary(), rb_iseq_disasm(), rb_reg_s_union(), rb_reg_s_union_m(), rb_struct_each_pair(), rb_struct_to_h(), reduce0(), rescue_callback(), select_internal(), set_state_ivars(), start_document(), time_timespec(), and wdivmod().

◆ rb_ary_eql()

static VALUE rb_ary_eql ( VALUE  ary1,
VALUE  ary2 
)
static

Definition at line 3780 of file array.c.

References Qfalse, Qtrue, RARRAY_CONST_PTR, RARRAY_LEN, rb_exec_recursive_paired(), RB_TYPE_P, recursive_eql(), and T_ARRAY.

Referenced by Init_Array().

◆ rb_ary_equal()

static VALUE rb_ary_equal ( VALUE  ary1,
VALUE  ary2 
)
static

◆ rb_ary_fetch()

static VALUE rb_ary_fetch ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_fill()

static VALUE rb_ary_fill ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_first()

static VALUE rb_ary_first ( int  argc,
VALUE argv,
VALUE  ary 
)
static

Definition at line 1310 of file array.c.

References argc, argv, ARY_TAKE_FIRST, ary_take_first_or_last(), Qnil, RARRAY_AREF, and RARRAY_LEN.

Referenced by Init_Array().

◆ rb_ary_flatten()

static VALUE rb_ary_flatten ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_flatten_bang()

static VALUE rb_ary_flatten_bang ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_free()

void rb_ary_free ( VALUE  ary)

◆ rb_ary_freeze()

VALUE rb_ary_freeze ( VALUE  ary)

Definition at line 401 of file array.c.

References rb_obj_freeze().

Referenced by coverage_result_i(), curry(), make_curry_proc(), and rb_add_method().

◆ rb_ary_frozen_p()

static VALUE rb_ary_frozen_p ( VALUE  ary)
static

Definition at line 415 of file array.c.

References OBJ_FROZEN, Qfalse, and Qtrue.

Referenced by Init_Array().

◆ rb_ary_hash()

static VALUE rb_ary_hash ( VALUE  ary)
static

◆ rb_ary_includes()

VALUE rb_ary_includes ( VALUE  ary,
VALUE  item 
)

Definition at line 3829 of file array.c.

References ary_sort_data::ary, Qfalse, Qtrue, RARRAY_AREF, RARRAY_LEN, and rb_equal().

Referenced by env_replace_i(), and Init_Array().

◆ rb_ary_increment_share()

static VALUE rb_ary_increment_share ( VALUE  shared)
static

Definition at line 290 of file array.c.

References ARY_SET_SHARED_NUM, and ARY_SHARED_NUM.

Referenced by ary_make_substitution(), and rb_ary_set_shared().

◆ rb_ary_index()

static VALUE rb_ary_index ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_initialize()

static VALUE rb_ary_initialize ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_insert()

static VALUE rb_ary_insert ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_inspect()

static VALUE rb_ary_inspect ( VALUE  ary)
static

Definition at line 2100 of file array.c.

References inspect_ary(), RARRAY_LEN, rb_exec_recursive(), and rb_usascii_str_new2.

Referenced by Init_Array(), and rb_ary_to_s().

◆ rb_ary_join()

VALUE rb_ary_join ( VALUE  ary,
VALUE  sep 
)

◆ rb_ary_join_m()

static VALUE rb_ary_join_m ( int  argc,
VALUE argv,
VALUE  ary 
)
static

Definition at line 2058 of file array.c.

References argc, argv, NIL_P, rb_ary_join(), rb_output_fs, and rb_scan_args().

Referenced by Init_Array().

◆ rb_ary_keep_if()

static VALUE rb_ary_keep_if ( VALUE  ary)
static

Definition at line 2868 of file array.c.

References ary_sort_data::ary, ary_enum_length(), rb_ary_select_bang(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Array().

◆ rb_ary_last()

VALUE rb_ary_last ( int  argc,
VALUE argv,
VALUE  ary 
)

Definition at line 1337 of file array.c.

References argc, argv, ary_take_first_or_last(), ARY_TAKE_LAST, Qnil, RARRAY_AREF, and RARRAY_LEN.

Referenced by Init_Array(), and range_last().

◆ rb_ary_length()

static VALUE rb_ary_length ( VALUE  ary)
static

Definition at line 1875 of file array.c.

References LONG2NUM, and RARRAY_LEN.

Referenced by ary_enum_length(), Init_Array(), and rb_ary_cycle_size().

◆ rb_ary_memsize()

RUBY_FUNC_EXPORTED size_t rb_ary_memsize ( VALUE  ary)

Definition at line 552 of file array.c.

References ARY_OWNS_HEAP_P, and RARRAY.

Referenced by obj_memsize_of().

◆ rb_ary_modify()

void rb_ary_modify ( VALUE  ary)

◆ rb_ary_modify_check()

static void rb_ary_modify_check ( VALUE  ary)
inlinestatic

◆ rb_ary_new()

VALUE rb_ary_new ( void  )

Definition at line 499 of file array.c.

References RARRAY_EMBED_LEN_MAX, and rb_ary_new2.

Referenced by add_event_call_back(), add_modules(), addrinfo_list_new(), argf_readlines(), ary_new_dim(), backtrace_collect(), cbsubst_get_extra_args_tbl(), cbsubst_table_setup(), check_exec_redirect1(), class_instance_method_list(), collect_caller_bindings(), collect_values_of_values(), debug_lines(), dir_globs(), econv_convpath(), enum_collect(), enum_cycle(), enum_drop(), enum_drop_while(), enum_find_all(), enum_flat_map(), enum_grep(), enum_partition(), enum_reject(), enum_sort_by(), enum_take_while(), enum_to_a(), enum_zip(), env_each_pair(), env_keys(), env_to_a(), env_values(), env_values_at(), EVENTSINK_Invoke(), fdbm_keys(), fdbm_select(), fdbm_to_a(), fdbm_values(), fev_initialize(), fgdbm_keys(), fgdbm_select(), fgdbm_to_a(), fgdbm_values(), filename_completion_proc_call(), foletype_s_progids(), foletypelib_ole_types(), foletypelib_s_typelibs(), fsdbm_delete_if(), fsdbm_keys(), fsdbm_select(), fsdbm_to_a(), fsdbm_values(), gc_profile_record_get(), Init_GC(), Init_load(), Init_ossl_asn1(), Init_VM(), Init_win32ole(), int_ossl_asn1_decode0_cons(), iseq_data_to_ary(), JSON_parse_array(), lep_svar_set(), make_addrinfo(), make_hostent_internal(), nsdr(), ole_method_params(), ole_method_return_type_detail(), ole_methods(), ole_methods_from_typeinfo(), ole_param_ole_type_detail(), ole_type_impl_ole_types(), ole_variable_ole_type_detail(), ole_variables(), ole_variant2val(), ossl_asn1_decode0(), ossl_asn1_decode_all(), ossl_get_errors(), ossl_pkcs7_get_recipient(), ossl_pkcs7_get_signer(), ossl_sslctx_get_ciphers(), ossl_x509_get_extensions(), ossl_x509crl_get_extensions(), ossl_x509crl_get_revoked(), ossl_x509name_to_a(), ossl_x509req_get_attributes(), ossl_x509revoked_get_extensions(), ossl_x509stctx_get_chain(), pack_unpack(), parse(), prepare_iseq_build(), proc_curry(), proc_waitall(), rb_ary_and(), rb_ary_diff(), rb_ary_drop(), rb_ary_reject(), rb_call_end_proc(), rb_check_exec_env(), rb_enc_aliases(), rb_execarg_addopt(), rb_f_global_variables(), rb_f_local_variables(), rb_f_untrace_var(), rb_fiddle_ptr_free_get(), rb_gzreader_readlines(), rb_insn_operand_intern(), rb_insns_name_array(), rb_io_readlines(), rb_iseq_disasm(), rb_iseq_line_trace_all(), rb_mod_ancestors(), rb_mod_included_modules(), rb_mod_nesting(), rb_obj_instance_variables(), rb_obj_singleton_methods(), rb_push_glob(), rb_reg_names(), rb_scan_args(), rb_str_enumerate_bytes(), rb_str_enumerate_lines(), rb_str_scan(), rb_str_split_m(), rb_struct_select(), rb_thread_keys(), rb_thread_list(), rb_thread_variables(), reachable_objects_from(), reduce0(), save_env(), save_redirect_fd(), search_convpath_i(), select_internal(), sock_s_gethostbyaddr(), strio_readlines(), thgroup_list(), tk_hash_kv(), username_completion_proc_call(), vm_backtrace_to_ary(), vm_expandarray(), vm_yield_setup_block_args(), wmap_keys(), and wmap_values().

◆ rb_ary_new_capa()

VALUE rb_ary_new_capa ( long  capa)

◆ rb_ary_new_from_args()

VALUE rb_ary_new_from_args ( long  n,
  ... 
)

Definition at line 505 of file array.c.

References ARY_SET_LEN, RARRAY_ASET, and rb_ary_new2.

Referenced by rb_ary_sample().

◆ rb_ary_new_from_values()

VALUE rb_ary_new_from_values ( long  n,
const VALUE elts 
)

Definition at line 524 of file array.c.

References ary_memcpy(), ARY_SET_LEN, and rb_ary_new2.

Referenced by lazy_zip_func(), and rb_ary_sample().

◆ rb_ary_or()

static VALUE rb_ary_or ( VALUE  ary1,
VALUE  ary2 
)
static

◆ rb_ary_permutation()

static VALUE rb_ary_permutation ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_permutation_size()

static VALUE rb_ary_permutation_size ( VALUE  ary,
VALUE  args,
VALUE  eobj 
)
static

Definition at line 4784 of file array.c.

References ary_sort_data::ary, descending_factorial(), NUM2LONG, RARRAY_AREF, and RARRAY_LEN.

Referenced by rb_ary_permutation().

◆ rb_ary_plus()

VALUE rb_ary_plus ( VALUE  x,
VALUE  y 
)

◆ rb_ary_pop()

VALUE rb_ary_pop ( VALUE  ary)

◆ rb_ary_pop_m()

static VALUE rb_ary_pop_m ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_product()

static VALUE rb_ary_product ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_push()

VALUE rb_ary_push ( VALUE  ary,
VALUE  item 
)

Definition at line 900 of file array.c.

References ary_ensure_room_for_push(), ARY_SET_LEN, RARRAY_ASET, and RARRAY_LEN.

Referenced by add_event_call_back(), add_modules(), addrinfo_list_new(), ary2list(), ary2list2(), ary_reject(), assoc2kv(), assoc2kv_enc(), backtrace_collect(), BigDecimal_split(), callback(), cbsubst_scan_args(), cdhash_each(), check_exec_env_i(), check_exec_redirect1(), chunk_ii(), collect_all(), collect_caller_bindings_cfunc(), collect_caller_bindings_iseq(), collect_i(), collect_local_variables_in_iseq(), collect_trace(), collect_values(), compile_array_(), cv_list_i(), cycle_i(), define_final0(), drop_i(), drop_while_i(), each_cons_i(), each_slice_i(), econv_convpath(), enc_names_i(), env_each_pair(), env_keys(), env_to_a(), env_values(), env_values_at(), EVENTSINK_Invoke(), evs_push(), fdbm_delete_if(), fdbm_keys(), fdbm_select(), fdbm_to_a(), fdbm_values(), fdbm_values_at(), features_index_add_single(), fgdbm_delete_if(), fgdbm_keys(), fgdbm_select(), fgdbm_to_a(), fgdbm_values(), fgdbm_values_at(), filename_completion_proc_call(), find_all_i(), first_i(), flat_map_i(), flatten(), foletype_s_progids(), foletypelib_s_typelibs(), fsdbm_delete_if(), fsdbm_keys(), fsdbm_select(), fsdbm_to_a(), fsdbm_values(), fsdbm_values_at(), gc_profile_record_get(), generator_each(), grep_i(), grep_iter_i(), group_by_i(), gvar_i(), Init_Array(), Init_Encoding(), Init_ossl_ssl(), Init_VM(), ins_methods_push(), int_ossl_asn1_decode0_cons(), ip_ruby_cmd(), iseq_add_mark_object_compile_time(), iseq_data_to_ary(), iseq_set_arguments(), ivar_i(), JSON_parse_array(), JSON_parse_string(), keys_i(), lazy_init_iterator(), lazy_zip(), lazy_zip_arrays_func(), lazy_zip_func(), lex_getline(), lib_eventloop_launcher(), lib_split_tklist_core(), list_i(), make_addrinfo(), make_hostent_internal(), match_array(), match_i(), mk_ary_of_str(), nsdr(), ole_method_params(), ole_methods_sub(), ole_type_impl_ole_types(), ole_typedesc2val(), ole_types_from_typelib(), ole_usertype2val(), ole_variables(), open_key_args(), ossl_asn1_decode0(), ossl_asn1_decode_all(), ossl_get_errors(), ossl_pkcs7_get_recipient(), ossl_pkcs7_get_signer(), ossl_ssl_cipher_to_ary(), ossl_ssl_get_peer_cert_chain(), ossl_sslctx_get_ciphers(), ossl_sslctx_session_get_cb(), ossl_sslctx_session_new_cb(), ossl_sslctx_session_remove_cb(), ossl_x509_get_extensions(), ossl_x509crl_get_extensions(), ossl_x509crl_get_revoked(), ossl_x509name_to_a(), ossl_x509req_get_attributes(), ossl_x509revoked_get_extensions(), ossl_x509stctx_get_chain(), parse(), partition_i(), proc_waitall(), push_include(), push_kv(), push_kv_enc(), push_pattern(), push_value(), queue_do_pop(), queue_do_push(), r_object0(), random_dump(), rb_ary_and(), rb_ary_collect(), rb_ary_diff(), rb_ary_product(), rb_ary_select(), rb_ary_zip(), rb_condvar_wait(), rb_construct_expanded_load_path(), rb_enc_name_list_i(), rb_execarg_addopt(), rb_f_global_variables(), rb_f_local_variables(), rb_f_untrace_var(), rb_fiddle_ptr_free_get(), rb_gc_register_mark_object(), rb_get_kwargs(), rb_get_values_at(), rb_gzreader_readlines(), rb_hash_values_at(), rb_insn_operand_intern(), rb_insns_name_array(), rb_io_readlines(), rb_iseq_add_mark_object(), rb_iseq_parameters(), rb_local_constants_i(), rb_mod_ancestors(), rb_mod_included_modules(), rb_mod_nesting(), rb_provide_feature(), rb_require_safe(), rb_str_enumerate_bytes(), rb_str_enumerate_chars(), rb_str_enumerate_codepoints(), rb_str_enumerate_lines(), rb_str_scan(), rb_str_split_m(), rb_struct_define(), rb_struct_define_under(), rb_struct_define_without_accessor(), rb_struct_define_without_accessor_under(), rb_struct_select(), rb_szqueue_push(), rb_thread_s_handle_interrupt(), rb_threadptr_pending_interrupt_enque(), rb_uninterruptible(), rb_zlib_crc_table(), reachable_object_from_i(), reg_names_iter(), reject_i(), ruby_init_loadpath_safe(), ruby_set_argv(), ruby_vm_at_exit(), save_env_i(), save_redirect_fd(), scan_once(), select_internal(), set_argv(), slicebefore_ii(), sock_s_gethostbyaddr(), strio_readlines(), symbols_i(), take_i(), take_while_i(), thgroup_list_i(), thread_keys_i(), thread_list_i(), tk_conv_args(), to_a_i(), unnamed_parameters(), username_completion_proc_call(), values_i(), waitall_each(), wmap_keys_i(), wmap_values_i(), yycompile0(), yyparse(), zip_ary(), and zip_i().

◆ rb_ary_push_m()

static VALUE rb_ary_push_m ( int  argc,
VALUE argv,
VALUE  ary 
)
static

Definition at line 938 of file array.c.

References argc, argv, and rb_ary_cat().

Referenced by Init_Array().

◆ rb_ary_rassoc()

VALUE rb_ary_rassoc ( VALUE  ary,
VALUE  value 
)

Definition at line 3681 of file array.c.

References ary_sort_data::ary, Qnil, RARRAY_AREF, RARRAY_LEN, rb_equal(), RB_TYPE_P, and T_ARRAY.

Referenced by Init_Array().

◆ rb_ary_reject()

static VALUE rb_ary_reject ( VALUE  ary)
static

Definition at line 3147 of file array.c.

References ary_sort_data::ary, ary_enum_length(), ary_reject(), rb_ary_new(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Array().

◆ rb_ary_reject_bang()

static VALUE rb_ary_reject_bang ( VALUE  ary)
static

Definition at line 3127 of file array.c.

References ary_sort_data::ary, ary_enum_length(), ary_reject_bang(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Array().

◆ rb_ary_repeated_combination()

static VALUE rb_ary_repeated_combination ( VALUE  ary,
VALUE  num 
)
static

◆ rb_ary_repeated_combination_size()

static VALUE rb_ary_repeated_combination_size ( VALUE  ary,
VALUE  args,
VALUE  eobj 
)
static

◆ rb_ary_repeated_permutation()

static VALUE rb_ary_repeated_permutation ( VALUE  ary,
VALUE  num 
)
static

◆ rb_ary_repeated_permutation_size()

static VALUE rb_ary_repeated_permutation_size ( VALUE  ary,
VALUE  args,
VALUE  eobj 
)
static

◆ rb_ary_replace()

VALUE rb_ary_replace ( VALUE  copy,
VALUE  orig 
)

◆ rb_ary_resize()

VALUE rb_ary_resize ( VALUE  ary,
long  len 
)

expands or shrinks ary to len elements.

expanded region will be filled with Qnil.

Parameters
aryan array
lennew size
Returns
ary
Postcondition
the size of ary is len.

Definition at line 1626 of file array.c.

References ARY_CAPA, ARY_DEFAULT_SIZE, ary_discard(), ary_double_capa(), ARY_EMBED_P, ARY_EMBED_PTR, ARY_HEAP_PTR, ARY_MAX_SIZE, ary_mem_clear(), ARY_SET_CAPA, ARY_SET_EMBED_LEN, ARY_SET_HEAP_LEN, ARY_SET_LEN, MEMCPY, RARRAY, RARRAY_EMBED_LEN_MAX, RARRAY_LEN, rb_ary_modify(), rb_eIndexError, rb_raise(), and SIZED_REALLOC_N.

Referenced by enum_sort_by(), and rb_get_values_at().

◆ rb_ary_resurrect()

VALUE rb_ary_resurrect ( VALUE  ary)

Definition at line 1909 of file array.c.

References RARRAY_CONST_PTR, RARRAY_LEN, and rb_ary_new4.

Referenced by obj_resurrect().

◆ rb_ary_reverse()

VALUE rb_ary_reverse ( VALUE  ary)

Definition at line 2187 of file array.c.

References ary_reverse(), RARRAY_LEN, RARRAY_PTR_USE, and rb_ary_modify().

Referenced by collect_caller_bindings(), and rb_ary_reverse_bang().

◆ rb_ary_reverse_bang()

static VALUE rb_ary_reverse_bang ( VALUE  ary)
static

Definition at line 2214 of file array.c.

References rb_ary_reverse().

Referenced by Init_Array().

◆ rb_ary_reverse_each()

static VALUE rb_ary_reverse_each ( VALUE  ary)
static

Definition at line 1847 of file array.c.

References ary_enum_length(), RARRAY_AREF, RARRAY_LEN, rb_yield(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Array().

◆ rb_ary_reverse_m()

static VALUE rb_ary_reverse_m ( VALUE  ary)
static

Definition at line 2230 of file array.c.

References ARY_SET_LEN, RARRAY_CONST_PTR, RARRAY_LEN, and rb_ary_new2.

Referenced by Init_Array().

◆ rb_ary_rindex()

static VALUE rb_ary_rindex ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_rotate()

VALUE rb_ary_rotate ( VALUE  ary,
long  cnt 
)

Definition at line 2251 of file array.c.

References ary_reverse(), cnt, Qnil, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), and rotate_count().

Referenced by rb_ary_rotate_bang().

◆ rb_ary_rotate_bang()

static VALUE rb_ary_rotate_bang ( int  argc,
VALUE argv,
VALUE  ary 
)
static

Definition at line 2289 of file array.c.

References argc, argv, NULL, NUM2LONG, rb_ary_rotate(), and rb_scan_args().

Referenced by Init_Array().

◆ rb_ary_rotate_m()

static VALUE rb_ary_rotate_m ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_s_create()

static VALUE rb_ary_s_create ( int  argc,
VALUE argv,
VALUE  klass 
)
static

Definition at line 782 of file array.c.

References argc, argv, ary_memcpy(), ary_new(), and ARY_SET_LEN.

Referenced by Init_Array().

◆ rb_ary_s_try_convert()

static VALUE rb_ary_s_try_convert ( VALUE  dummy,
VALUE  ary 
)
static

Definition at line 657 of file array.c.

References rb_check_array_type().

Referenced by Init_Array().

◆ rb_ary_sample()

static VALUE rb_ary_sample ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_select()

static VALUE rb_ary_select ( VALUE  ary)
static

◆ rb_ary_select_bang()

static VALUE rb_ary_select_bang ( VALUE  ary)
static

◆ rb_ary_set_len()

void rb_ary_set_len ( VALUE  ary,
long  len 
)

◆ rb_ary_set_shared()

static void rb_ary_set_shared ( VALUE  ary,
VALUE  shared 
)
static

Definition at line 300 of file array.c.

References ARY_SET_SHARED, FL_SET_SHARED, and rb_ary_increment_share().

Referenced by ary_make_partial(), and rb_ary_replace().

◆ rb_ary_shared_with_p()

VALUE rb_ary_shared_with_p ( VALUE  ary1,
VALUE  ary2 
)

Definition at line 429 of file array.c.

References ARY_EMBED_P, ARY_SHARED_P, Qfalse, Qtrue, and RARRAY.

Referenced by get_loaded_features_index(), and rb_get_expanded_load_path().

◆ rb_ary_shift()

VALUE rb_ary_shift ( VALUE  ary)

◆ rb_ary_shift_m()

static VALUE rb_ary_shift_m ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_shuffle()

static VALUE rb_ary_shuffle ( int  argc,
VALUE argv,
VALUE  ary 
)
static

Definition at line 4496 of file array.c.

References argc, argv, ary_sort_data::ary, rb_ary_dup(), and rb_ary_shuffle_bang().

Referenced by Init_Array().

◆ rb_ary_shuffle_bang()

static VALUE rb_ary_shuffle_bang ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_slice_bang()

static VALUE rb_ary_slice_bang ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_sort()

VALUE rb_ary_sort ( VALUE  ary)

Definition at line 2518 of file array.c.

References ary_sort_data::ary, rb_ary_dup(), and rb_ary_sort_bang().

Referenced by enum_sort(), and Init_Array().

◆ rb_ary_sort_bang()

VALUE rb_ary_sort_bang ( VALUE  ary)

◆ rb_ary_sort_by_bang()

static VALUE rb_ary_sort_by_bang ( VALUE  ary)
static

◆ rb_ary_splice()

static void rb_ary_splice ( VALUE  ary,
long  beg,
long  len,
VALUE  rpl 
)
static

◆ rb_ary_store()

void rb_ary_store ( VALUE  ary,
long  idx,
VALUE  val 
)

◆ rb_ary_subseq()

VALUE rb_ary_subseq ( VALUE  ary,
long  beg,
long  len 
)

◆ rb_ary_take()

static VALUE rb_ary_take ( VALUE  obj,
VALUE  n 
)
static

Definition at line 5257 of file array.c.

References NUM2LONG, rb_ary_subseq(), rb_eArgError, and rb_raise().

Referenced by Init_Array(), and rb_ary_take_while().

◆ rb_ary_take_while()

static VALUE rb_ary_take_while ( VALUE  ary)
static

Definition at line 5284 of file array.c.

References ary_sort_data::ary, LONG2FIX, RARRAY_AREF, RARRAY_LEN, rb_ary_take(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Array().

◆ rb_ary_times()

static VALUE rb_ary_times ( VALUE  ary,
VALUE  times 
)
static

◆ rb_ary_tmp_new()

VALUE rb_ary_tmp_new ( long  capa)

◆ rb_ary_to_a()

static VALUE rb_ary_to_a ( VALUE  ary)
static

Definition at line 2122 of file array.c.

References RARRAY_LEN, rb_ary_new2, rb_ary_replace(), rb_cArray, and rb_obj_class().

Referenced by Init_Array().

◆ rb_ary_to_ary()

VALUE rb_ary_to_ary ( VALUE  obj)

Definition at line 1530 of file array.c.

References NIL_P, rb_ary_new3, and rb_check_array_type().

Referenced by rb_ary_splice(), and vm_expandarray().

◆ rb_ary_to_ary_m()

static VALUE rb_ary_to_ary_m ( VALUE  ary)
static

Definition at line 2171 of file array.c.

Referenced by Init_Array().

◆ rb_ary_to_h()

static VALUE rb_ary_to_h ( VALUE  ary)
static

◆ rb_ary_to_s()

VALUE rb_ary_to_s ( VALUE  ary)

Definition at line 2107 of file array.c.

References rb_ary_inspect().

◆ rb_ary_transpose()

static VALUE rb_ary_transpose ( VALUE  ary)
static

◆ rb_ary_uniq()

static VALUE rb_ary_uniq ( VALUE  ary)
static

◆ rb_ary_uniq_bang()

static VALUE rb_ary_uniq_bang ( VALUE  ary)
static

◆ rb_ary_unshare()

static void rb_ary_unshare ( VALUE  ary)
static

◆ rb_ary_unshare_safe()

static void rb_ary_unshare_safe ( VALUE  ary)
inlinestatic

Definition at line 282 of file array.c.

References ARY_EMBED_P, ARY_SHARED_P, and rb_ary_unshare().

Referenced by rb_ary_initialize(), and rb_ary_replace().

◆ rb_ary_unshift()

VALUE rb_ary_unshift ( VALUE  ary,
VALUE  item 
)

Definition at line 1161 of file array.c.

References rb_ary_unshift_m().

Referenced by check_funcall_exec(), ole_invoke(), parser_set_encode(), and vm_call0_body().

◆ rb_ary_unshift_m()

static VALUE rb_ary_unshift_m ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_ary_values_at()

static VALUE rb_ary_values_at ( int  argc,
VALUE argv,
VALUE  ary 
)
static

Definition at line 2773 of file array.c.

References argc, argv, ary_sort_data::ary, RARRAY_LEN, rb_ary_entry(), and rb_get_values_at().

Referenced by Init_Array().

◆ rb_ary_zip()

static VALUE rb_ary_zip ( int  argc,
VALUE argv,
VALUE  ary 
)
static

◆ rb_assoc_new()

VALUE rb_assoc_new ( VALUE  car,
VALUE  cdr 
)

◆ rb_check_array_type()

VALUE rb_check_array_type ( VALUE  ary)

◆ rb_get_values_at()

VALUE rb_get_values_at ( VALUE  obj,
long  olen,
int  argc,
VALUE argv,
VALUE(*)(VALUE, long)  func 
)

◆ rb_mem_clear()

void rb_mem_clear ( register VALUE mem,
register long  size 
)

Definition at line 35 of file array.c.

References Qnil, and size.

Referenced by ary_mem_clear(), rb_struct_initialize_m(), and struct_alloc().

◆ rcombinate0()

static void rcombinate0 ( long  n,
long  r,
long *  p,
long  index,
long  rest,
VALUE  values 
)
static

Definition at line 5043 of file array.c.

References rb_eRuntimeError, rb_raise(), and yield_indexed_values().

Referenced by rb_ary_repeated_combination().

◆ recursive_cmp()

static VALUE recursive_cmp ( VALUE  ary1,
VALUE  ary2,
int  recur 
)
static

Definition at line 3843 of file array.c.

References id_cmp, INT2FIX, Qundef, RARRAY_LEN, rb_ary_elt(), rb_funcallv(), and recur.

Referenced by rb_ary_cmp().

◆ recursive_eql()

static VALUE recursive_eql ( VALUE  ary1,
VALUE  ary2,
int  recur 
)
static

Definition at line 3759 of file array.c.

References Qfalse, Qtrue, RARRAY_LEN, rb_ary_elt(), rb_eql(), and recur.

Referenced by rb_ary_eql().

◆ recursive_equal()

static VALUE recursive_equal ( VALUE  ary1,
VALUE  ary2,
int  recur 
)
static

Definition at line 3697 of file array.c.

References Qfalse, Qtrue, RARRAY_CONST_PTR, RARRAY_LEN, rb_equal(), and recur.

Referenced by rb_ary_equal().

◆ recursive_join()

static VALUE recursive_join ( VALUE  obj,
VALUE  argp,
int  recur 
)
static

Definition at line 1919 of file array.c.

References ary_join_1(), Qnil, rb_eArgError, rb_raise(), recur, and result.

Referenced by ary_join_1().

◆ rotate_count()

static long rotate_count ( long  cnt,
long  len 
)
inlinestatic

Definition at line 2245 of file array.c.

References cnt.

Referenced by rb_ary_rotate(), and rb_ary_rotate_m().

◆ rpermute0()

static void rpermute0 ( long  n,
long  r,
long *  p,
long  index,
VALUE  values 
)
static

Definition at line 4955 of file array.c.

References rb_eRuntimeError, rb_raise(), and yield_indexed_values().

Referenced by rb_ary_repeated_permutation().

◆ sort_1()

static int sort_1 ( const void *  ap,
const void *  bp,
void *  dummy 
)
static

Definition at line 2377 of file array.c.

References ary_sort_data::ary, bp, rb_cmpint(), rb_yield_values(), and sort_reentered().

Referenced by rb_ary_sort_bang().

◆ sort_2()

static int sort_2 ( const void *  ap,
const void *  bp,
void *  dummy 
)
static

◆ sort_by_i()

static VALUE sort_by_i ( RB_BLOCK_CALL_FUNC_ARGLIST(i, dummy)  )
static

Definition at line 2628 of file array.c.

References rb_yield().

Referenced by rb_ary_sort_by_bang().

◆ sort_reentered()

static VALUE sort_reentered ( VALUE  ary)
static

Definition at line 2368 of file array.c.

References Qnil, rb_eRuntimeError, rb_raise(), and RBASIC.

Referenced by sort_1(), and sort_2().

◆ take_i()

static VALUE take_i ( RB_BLOCK_CALL_FUNC_ARGLIST(val, cbarg)  )
static

Definition at line 3184 of file array.c.

References argc, argv, Qnil, rb_ary_new4, rb_ary_push(), rb_iter_break(), and val.

Referenced by take_items().

◆ take_items()

static VALUE take_items ( VALUE  obj,
long  n 
)
static

◆ to_ary()

static VALUE to_ary ( VALUE  ary)
static

◆ yield_indexed_values()

static int yield_indexed_values ( const VALUE  values,
const long  r,
const long *const  p 
)
static

Variable Documentation

◆ id_cmp

ID id_cmp
static

Definition at line 29 of file array.c.

Referenced by Init_Array(), rb_ary_bsearch(), recursive_cmp(), and sort_2().

◆ id_div

ID id_div
static

Definition at line 29 of file array.c.

Referenced by binomial_coefficient(), and Init_Array().

◆ id_power

ID id_power
static

Definition at line 29 of file array.c.

Referenced by Init_Array(), and rb_ary_repeated_permutation_size().

◆ id_random

ID id_random
static

Definition at line 4431 of file array.c.

Referenced by Init_Array(), rb_ary_sample(), and rb_ary_shuffle_bang().

◆ rb_cArray

VALUE rb_cArray

◆ rb_output_fs

VALUE rb_output_fs

Definition at line 517 of file intern.h.

Referenced by Init_IO(), rb_ary_join_m(), and rb_io_print().