array.c File Reference
`#include "ruby/ruby.h"`
`#include "ruby/util.h"`
`#include "ruby/st.h"`
`#include "ruby/encoding.h"`
`#include "internal.h"`
`#include <assert.h>`
`#include <stdarg.h>`

Go to the source code of this file.

## Data Structures

struct | ary_sort_data

## Macros

#define | NDEBUG
#define | numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
#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_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_SET_SHARED_NUM(ary, value)
#define | FL_SET_SHARED_ROOT(ary)
#define | STRING_P(s) (TYPE(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_real(randgen)*(max))
#define | tmpbuf(n, size) rb_str_tmp_new((n)*(size))
#define | tmpbuf_discard(s) (rb_str_resize((s), 0L), RBASIC(s)->klass = rb_cString)
#define | tmpary(n) rb_ary_tmp_new(n)
#define | tmpary_discard(a) (ary_discard(a), RBASIC(a)->klass = 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 | memfill (register VALUE *mem, register long size, register VALUE val)
static void | ary_resize_capa (VALUE ary, long capacity)
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)
VALUE | rb_ary_freeze (VALUE ary)
static VALUE | rb_ary_frozen_p (VALUE ary)
static VALUE | ary_alloc (VALUE klass)
static VALUE | ary_new (VALUE klass, long capa)
VALUE | rb_ary_new2 (long capa)
VALUE | rb_ary_new (void)
VALUE | rb_ary_new3 (long n,...)
VALUE | rb_ary_new4 (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)
static VALUE | rb_ary_push_1 (VALUE ary, VALUE item)
VALUE | rb_ary_push (VALUE ary, VALUE item)
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 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)
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)
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_length (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_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 | sort_by_i (VALUE i)
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)
VALUE | rb_ary_delete (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 (VALUE val, VALUE *args, int argc, VALUE *argv)
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 | recursive_hash (VALUE ary, VALUE dummy, int recur)
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 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 (int argc, VALUE *argv, VALUE ary)
static void | permute0 (long n, long r, long *p, long index, char *used, VALUE values)
static VALUE | rb_ary_permutation (int argc, VALUE *argv, VALUE ary)
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 (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 (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
VALUE | rb_output_fs
static VALUE | sym_random

## Macro Definition Documentation

#define ARY_CAPA | ( |  | ary | ) |

Value:
(ARY_EMBED_P(ary) ? RARRAY_EMBED_LEN_MAX : \
ARY_SHARED_ROOT_P(ary) ? RARRAY_LEN(ary) : RARRAY(ary)->as.heap.aux.capa)

Definition at line 118 of file array.c.

Referenced by ary_double_capa(), rb_ary_clear(), rb_ary_compact_bang(), rb_ary_delete(), rb_ary_fill(), rb_ary_pop(), rb_ary_push_1(), rb_ary_resize(), rb_ary_sort_bang(), rb_ary_splice(), rb_ary_store(), and rb_ary_unshift_m().

#define ARY_DEFAULT_SIZE 16

Definition at line 31 of file array.c.

Referenced by ary_double_capa(), flatten(), rb_ary_clear(), rb_ary_compact_bang(), rb_ary_delete(), rb_ary_pop(), rb_ary_resize(), and rb_ary_shift().

#define ARY_EMBED_LEN | ( |  | a | ) |

Value:
(assert(ARY_EMBED_P(a)), \
(long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \
(RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)))

Definition at line 60 of file array.c.

Referenced by ary_resize_capa(), and rb_ary_sort_bang().

#define ARY_EMBED_P | ( |  | ary | ) |

Value:
(assert(!FL_TEST((ary), ELTS_SHARED) || !FL_TEST((ary), RARRAY_EMBED_FLAG)), \
FL_TEST((ary), RARRAY_EMBED_FLAG)!=0)

Definition at line 53 of file array.c.

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

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

Definition at line 59 of file array.c.

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

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

Definition at line 58 of file array.c.

Referenced by ary_make_shared().

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

Definition at line 57 of file array.c.

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

#define ARY_INCREASE_LEN | ( |  | ary,
|  |  | n
| ) |  |

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)

Definition at line 108 of file array.c.

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

#define ARY_INCREASE_PTR | ( |  | ary,
|  |  | n
| ) |  |

Value:
do { \
assert(!ARY_EMBED_P(ary)); \
assert(!OBJ_FROZEN(ary)); \
RARRAY(ary)->as.heap.ptr += (n); \
} while (0)

Definition at line 103 of file array.c.

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

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

Definition at line 32 of file array.c.

Referenced by ary_double_capa(), ary_new(), rb_ary_fill(), rb_ary_initialize(), rb_ary_resize(), rb_ary_splice(), rb_ary_store(), and rb_ary_times().

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

Definition at line 65 of file array.c.

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

#define ARY_SET_CAPA | ( |  | ary,
|  |  | n
| ) |  |

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)

Definition at line 120 of file array.c.

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

#define ARY_SET_EMBED_LEN | ( |  | ary,
|  |  | n
| ) |  |

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)

Definition at line 83 of file array.c.

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

#define ARY_SET_HEAP_LEN | ( |  | ary,
|  |  | n
| ) |  |

Value:
do { \
assert(!ARY_EMBED_P(ary)); \
RARRAY(ary)->as.heap.len = (n); \
} while (0)

Definition at line 90 of file array.c.

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

#define ARY_SET_LEN | ( |  | ary,
|  |  | n
| ) |  |

Value:
do { \
if (ARY_EMBED_P(ary)) { \
ARY_SET_EMBED_LEN((ary), (n)); \
} \
else { \
ARY_SET_HEAP_LEN((ary), (n)); \
} \
assert(RARRAY_LEN(ary) == (n)); \
} while (0)

Definition at line 94 of file array.c.

Referenced by ary_make_partial(), ary_make_shared(), ary_resize_capa(), permute0(), rb_ary_clear(), rb_ary_compact_bang(), rb_ary_delete(), rb_ary_dup(), rb_ary_fill(), rb_ary_initialize(), rb_ary_new3(), rb_ary_new4(), rb_ary_plus(), rb_ary_pop(), rb_ary_product(), rb_ary_push_1(), rb_ary_replace(), rb_ary_resize(), rb_ary_reverse_m(), rb_ary_rotate_m(), rb_ary_s_create(), rb_ary_sample(), rb_ary_select_bang(), rb_ary_sort_bang(), rb_ary_splice(), rb_ary_store(), rb_ary_times(), rb_ary_uniq_bang(), rcombinate0(), and rpermute0().

#define ARY_SET_PTR | ( |  | ary,
|  |  | p
| ) |  |

Value:
do { \
assert(!ARY_EMBED_P(ary)); \
assert(!OBJ_FROZEN(ary)); \
RARRAY(ary)->as.heap.ptr = (p); \
} while (0)

Definition at line 78 of file array.c.

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

#define ARY_SET_SHARED | ( |  | ary,
|  |  | value
| ) |  |

Value:
do { \
assert(!ARY_EMBED_P(ary)); \
assert(ARY_SHARED_P(ary)); \
assert(ARY_SHARED_ROOT_P(value)); \
RARRAY(ary)->as.heap.aux.shared = (value); \
} while (0)

Definition at line 128 of file array.c.

Referenced by ary_make_shared(), and rb_ary_set_shared().

#define ARY_SET_SHARED_NUM | ( |  | ary,
|  |  | value
| ) |  |

Value:
do { \
assert(ARY_SHARED_ROOT_P(ary)); \
RARRAY(ary)->as.heap.aux.capa = (value); \
} while (0)

Definition at line 138 of file array.c.

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

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

Definition at line 127 of file array.c.

Referenced by ary_make_shared(), rb_ary_modify(), rb_ary_replace(), rb_ary_shift(), and rb_ary_shift_m().

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

Definition at line 136 of file array.c.

Referenced by rb_ary_decrement_share(), rb_ary_increment_share(), rb_ary_shift(), and rb_ary_shift_m().

#define ARY_SHARED_P | ( |  | ary | ) |

Value:
(assert(!FL_TEST((ary), ELTS_SHARED) || !FL_TEST((ary), RARRAY_EMBED_FLAG)), \
FL_TEST((ary),ELTS_SHARED)!=0)

Definition at line 50 of file array.c.

Referenced by ary_make_shared(), ary_resize_capa(), rb_ary_clear(), rb_ary_modify(), rb_ary_replace(), rb_ary_shift(), rb_ary_shift_m(), rb_ary_sort_bang(), rb_ary_uniq_bang(), and rb_ary_unshare_safe().

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

Definition at line 135 of file array.c.

Referenced by ary_make_shared().

#define FL_SET_EMBED | ( |  | a | ) |

Value:
do { \
assert(!ARY_SHARED_P(a)); \
assert(!OBJ_FROZEN(a)); \
FL_SET((a), RARRAY_EMBED_FLAG); \
} while (0)

Definition at line 66 of file array.c.

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

#define FL_SET_SHARED | ( |  | ary | ) |

Value:
do { \
assert(!ARY_EMBED_P(ary)); \
FL_SET((ary), ELTS_SHARED); \
} while (0)

Definition at line 72 of file array.c.

Referenced by ary_make_shared(), and rb_ary_set_shared().

#define FL_SET_SHARED_ROOT | ( |  | ary | ) |

Value:
do { \
assert(!ARY_EMBED_P(ary)); \
FL_SET((ary), RARRAY_SHARED_ROOT_FLAG); \
} while (0)

Definition at line 142 of file array.c.

Referenced by ary_make_shared().

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

Definition at line 71 of file array.c.

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

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

Definition at line 76 of file array.c.

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

#define NDEBUG

Definition at line 21 of file array.c.

#define numberof | ( |  | array | ) | (int)(sizeof(array) / sizeof((array)[0]))

Definition at line 25 of file array.c.

Referenced by rb_ary_sample().

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

Definition at line 3825 of file array.c.

Referenced by rb_ary_sample(), and rb_ary_shuffle_bang().

#define RAND_UPTO | ( |  | max | ) | (long)(rb_random_real(randgen)*(max))

Definition at line 3829 of file array.c.

Referenced by rb_ary_sample(), and rb_ary_shuffle_bang().

#define RARRAY_SHARED_ROOT_FLAG FL_USER5

Definition at line 134 of file array.c.

#define rb_intern | ( |  | str | ) | rb_intern_const(str)

Referenced by argf_close(), argf_each_byte(), argf_each_char(), argf_each_line(), argf_getbyte(), argf_getc(), argf_getline(), argf_readchar(), argf_readlines(), argument_error(), asn1time_to_time(), big_op(), BigDecimal_div2(), BigDecimal_divmod(), BigDecimal_divremain(), BigDecimal_to_i(), BigDecimal_to_r(), BigDecimalCmp(), boot_defclass(), bsock_setsockopt(), bug_start(), callback(), cbsubst_def_attr_aliases(), cbsubst_get_subst_arg(), cbsubst_sym_to_subst(), cbsubst_table_setup(), check_exec_redirect(), check_exec_redirect_fd(), chunk_i(), chunk_ii(), cleanup_iseq_build(), cmp_gen(), cond0(), const_missing(), convert_type(), copy_stream_body(), count_objects(), count_objects_size(), cto_i(), date_strftime_with_tmx(), default_inspect(), define_final(), dir_initialize(), dir_inspect(), dir_open_dir(), each_attr_def(), 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(), enum_chunk(), enum_find(), enum_slice_before(), equal_gen(), error_print(), EVENTSINK_Invoke(), evs_length(), exc_message(), exc_to_s(), exit_status(), exit_success_p(), f_eqeq_p(), f_ge_p(), fdbm_replace(), fdbm_update(), fev_get_handler(), fev_set_handler(), fgdbm_replace(), fgdbm_update(), fix_cmp(), fix_divmod(), fix_fdiv(), fix_ge(), fix_idiv(), fix_le(), fix_pow(), flo_cmp(), flo_divmod(), flo_ge(), flo_le(), flo_pow(), 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(), frame_func_id(), fsdbm_replace(), fsdbm_update(), function_call(), gc_profile_record_get(), gc_profile_result(), gc_stat(), generic_to_value(), get_backtrace(), get_eval_string_core(), get_exception_sym2type(), get_iconv_opt(), GetConfigPtr(), global_id(), hash_equal(), iconv_s_ctlmethods(), id2encidx(), id_hash_new(), if(), Init_Array(), Init_bubblebabble(), Init_class_hierarchy(), Init_Comparable(), Init_Complex(), Init_console(), Init_cparse(), Init_date_core(), Init_digest(), Init_dlcfunc(), Init_dlptr(), Init_Enumerable(), Init_Enumerator(), Init_eval_method(), Init_Hash(), Init_iconv(), Init_IO(), Init_load(), Init_marshal(), Init_md5(), Init_Numeric(), Init_Object(), Init_objspace(), 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_Range(), Init_Rational(), Init_readline(), Init_rmd160(), Init_sha1(), Init_sha2(), Init_signal(), Init_String(), Init_strscan(), Init_Struct(), Init_syck(), Init_tcltklib(), Init_Thread(), Init_Time(), Init_tkutil(), Init_transcode(), Init_vm_eval(), Init_win32ole(), Init_zlib(), insn_make_insn_table(), int_round_0(), io_call_close(), io_getch(), ip_ruby_cmd(), ip_ruby_cmd_receiver_const_get(), iseq_data_to_ary(), iseq_load(), join_der(), make_econv_exception(), make_exception(), map_charset(), mark(), mktime_r(), mlambda(), mnew(), mproc(), name_err_name(), name_err_to_s(), next_i(), nometh_err_args(), nucomp_rationalize(), num_abs(), num_div(), num_exact(), num_modulo(), num_nonzero_p(), 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(), parser_yylex(), path_atime(), path_basename(), path_binread(), 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_zero_p(), pipe_open(), private_iv_get(), process_options(), pst_pid(), raise_method_missing(), random_equal(), range_each(), range_eqq(), range_first(), range_initialize(), range_op(), range_step(), 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_enc_get_index(), rb_eval_cmd(), rb_exc_new(), rb_exc_new3(), rb_exec_arg_addopt(), rb_exec_arg_prepare(), rb_f_chomp(), rb_f_chop(), rb_f_exec(), rb_f_gets(), rb_f_gsub(), rb_f_putc(), rb_f_puts(), rb_f_readline(), rb_f_readlines(), rb_f_sub(), rb_hash_flatten(), rb_intern(), rb_io_init_copy(), rb_iv_get(), rb_iv_set(), rb_method_entry_make(), rb_mod_include(), rb_obj_basic_to_s_p(), rb_obj_extend(), rb_obj_inspect(), rb_parser_append_print(), rb_parser_while_loop(), rb_range_values(), rb_remove_method(), rb_str_cmp_m(), rb_str_equal(), rb_str_match(), rb_str_match_m(), rb_str_sum(), rb_str_upto(), rb_strftime_with_timespec(), rb_struct_define(), rb_struct_define_without_accessor(), rb_struct_iv_get(), rb_throw(), rb_undef_method(), rbtime2vtdate(), readline_attempted_completion_function(), readline_s_set_completion_proc(), reg_compile_gen(), reg_named_capture_assign_gen(), reg_named_capture_assign_iter(), register_label(), rescue_callback(), save_env(), set_argv(), set_backtrace(), set_max_block_time(), set_option_encoding_once(), slicebefore_i(), slicebefore_ii(), sockopt_data(), sockopt_family_m(), sockopt_initialize(), sockopt_level(), sockopt_optname(), sockopt_unpack(), stop_result(), strio_readbyte(), strio_readchar(), strio_readline(), strio_sysread(), syserr_eqq(), syserr_errno(), syserr_initialize(), take_items(), time_cmp(), time_init_1(), time_to_time(), unlink_body(), unlink_rescue(), vm_call_method(), vm_set_main_stack(), vtdate2rbtime(), w_encoding(), w_obj_each(), with_funcall2(), with_funcall_passing_block(), yaml_org_handler(), and yyparse().

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

Definition at line 2008 of file array.c.

Referenced by sort_2().

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

Definition at line 2007 of file array.c.

#define STRING_P | ( |  | s | ) | (TYPE(s) == T_STRING && CLASS_OF(s) == rb_cString)

Definition at line 2005 of file array.c.

Referenced by sort_2().

#define tmpary | ( |  | n | ) | rb_ary_tmp_new(n)

Definition at line 4056 of file array.c.

Referenced by rb_ary_combination(), and rb_ary_product().

#define tmpary_discard | ( |  | a | ) | (ary_discard(a), RBASIC(a)->klass = rb_cArray)

Definition at line 4057 of file array.c.

Referenced by rb_ary_combination(), and rb_ary_product().

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

Definition at line 4054 of file array.c.

Referenced by rb_ary_combination(), rb_ary_permutation(), rb_ary_product(), rb_ary_repeated_combination(), and rb_ary_repeated_permutation().

#define tmpbuf_discard | ( |  | s | ) | (rb_str_resize((s), 0L), RBASIC(s)->klass = rb_cString)

Definition at line 4055 of file array.c.

Referenced by rb_ary_combination(), rb_ary_permutation(), rb_ary_product(), rb_ary_repeated_combination(), and rb_ary_repeated_permutation().

## Enumeration Type Documentation

anonymous enum

Enumerator
sort_opt_Fixnum |
sort_opt_String |
sort_optimizable_count |

Definition at line 1999 of file array.c.

enum ary_take_pos_flags

Enumerator
ARY_TAKE_FIRST |
ARY_TAKE_LAST |

Definition at line 680 of file array.c.

## Function Documentation

static VALUE ary_add_hash | ( | VALUE | hash,
|  | VALUE | ary
| ) |  |

static

Definition at line 3328 of file array.c.

References hash(), i, Qtrue, RARRAY_LEN, RARRAY_PTR, and rb_hash_aset().

Referenced by ary_make_hash(), and rb_ary_or().

static VALUE ary_add_hash_by | ( | VALUE | hash,
|  | VALUE | ary
| ) |  |

static

Definition at line 3355 of file array.c.

References hash(), i, Qundef, RARRAY_LEN, rb_ary_elt(), rb_hash_aset(), rb_hash_lookup2(), rb_yield(), and v.

Referenced by ary_make_hash_by().

static VALUE ary_alloc | ( | VALUE | klass | ) |

static

Definition at line 299 of file array.c.

References ARY_SET_EMBED_LEN, FL_SET_EMBED, NEWOBJ, OBJSETUP, and T_ARRAY.

Referenced by ary_make_partial(), ary_new(), and Init_Array().

static void ary_discard | ( | VALUE | ary | ) |

inline static

Definition at line 405 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().

static void ary_double_capa | ( | VALUE | ary,
|  | long | min
| ) |  |

static

Definition at line 181 of file array.c.

References ARY_CAPA, ARY_DEFAULT_SIZE, ARY_MAX_SIZE, ary_resize_capa(), and min().

Referenced by rb_ary_push_1(), rb_ary_resize(), rb_ary_splice(), rb_ary_store(), and rb_ary_unshift_m().

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

static

Definition at line 1617 of file array.c.

References i, max(), NIL_P, OBJ_TAINT, OBJ_TAINTED, OBJ_UNTRUSTED, RARRAY_PTR, rb_enc_copy(), and rb_str_buf_append().

Referenced by rb_ary_join().

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

static

Definition at line 1634 of file array.c.

References args, FALSE, i, NIL_P, RARRAY_LEN, RARRAY_PTR, rb_check_convert_type(), rb_check_string_type(), rb_eArgError, rb_enc_copy(), rb_exec_recursive(), rb_obj_as_string(), rb_raise(), rb_str_buf_append(), recursive_join(), result, T_ARRAY, T_STRING, and TYPE.

Referenced by rb_ary_join(), and recursive_join().

static VALUE ary_make_hash | ( | VALUE | ary | ) |

static

Definition at line 3348 of file array.c.

References ary_add_hash(), ary_tmp_hash_new(), and hash().

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

static VALUE ary_make_hash_by | ( | VALUE | ary | ) |

static

Definition at line 3369 of file array.c.

References ary_add_hash_by(), ary_tmp_hash_new(), and hash().

Referenced by rb_ary_uniq(), and rb_ary_uniq_bang().

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

static

Definition at line 647 of file array.c.

References ary_alloc(), ARY_EMBED_PTR, ARY_INCREASE_PTR, ary_make_shared(), ARY_SET_EMBED_LEN, ARY_SET_LEN, ARY_SET_PTR, assert, FL_UNSET_EMBED, MEMCPY, RARRAY_EMBED_LEN_MAX, RARRAY_LEN, RARRAY_PTR, rb_ary_set_shared(), and result.

Referenced by ary_make_shared_copy(), ary_take_first_or_last(), and rb_ary_subseq().

static VALUE ary_make_shared | ( | VALUE | ary | ) |

static

Definition at line 413 of file array.c.

References ARY_EMBED_P, ARY_HEAP_LEN, ary_resize_capa(), ARY_SET_LEN, ARY_SET_PTR, ARY_SET_SHARED, ARY_SET_SHARED_NUM, ARY_SHARED, ARY_SHARED_P, ARY_SHARED_ROOT_P, assert, FL_SET_SHARED, FL_SET_SHARED_ROOT, FL_UNSET_EMBED, NEWOBJ, OBJ_FREEZE, OBJ_FROZEN, OBJSETUP, RARRAY_LEN, RARRAY_PTR, and T_ARRAY.

Referenced by ary_make_partial(), ary_make_substitution(), rb_ary_replace(), and rb_ary_shift().

static VALUE ary_make_shared_copy | ( | VALUE | ary | ) |

static

Definition at line 675 of file array.c.

References ary_make_partial(), RARRAY_LEN, and rb_obj_class().

Referenced by rb_ary_flatten(), rb_ary_permutation(), rb_ary_product(), rb_ary_repeated_combination(), and rb_ary_repeated_permutation().

static VALUE ary_make_substitution | ( | VALUE | ary | ) |

static

Definition at line 446 of file array.c.

References ARY_EMBED_PTR, ary_make_shared(), ARY_SET_EMBED_LEN, MEMCPY, RARRAY_EMBED_LEN_MAX, RARRAY_LEN, RARRAY_PTR, rb_ary_increment_share(), and rb_ary_new2().

Referenced by rb_ary_sort_bang().

static VALUE ary_new | ( | VALUE | klass,
|  | long | capa
| ) |  |

static

Definition at line 310 of file array.c.

References ALLOC_N, ary_alloc(), ARY_MAX_SIZE, ARY_SET_CAPA, ARY_SET_HEAP_LEN, ARY_SET_PTR, FL_UNSET_EMBED, RARRAY_EMBED_LEN_MAX, rb_eArgError, and rb_raise().

Referenced by flatten(), rb_ary_new2(), rb_ary_s_create(), rb_ary_subseq(), rb_ary_times(), rb_ary_tmp_new(), and rb_ary_uniq().

static void ary_recycle_hash | ( | VALUE | hash | ) |

inline static

Definition at line 3376 of file array.c.

References RHASH, and st_free_table.

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

static VALUE ary_reject | ( | VALUE | orig,
|  | VALUE | result
| ) |  |

static

Definition at line 2568 of file array.c.

References i, RARRAY_LEN, RARRAY_PTR, rb_ary_push_1(), rb_yield(), result, RTEST, and v.

Referenced by rb_ary_reject().

static VALUE ary_reject_bang | ( | VALUE | ary | ) |

static

Definition at line 2582 of file array.c.

References ary_sort_data::ary, i, Qnil, RARRAY_LEN, RARRAY_PTR, rb_ary_delete_at(), rb_ary_modify_check(), rb_yield(), result, RTEST, and v.

Referenced by rb_ary_delete_if(), and rb_ary_reject_bang().

static void ary_resize_capa | ( | VALUE | ary,
|  | long | capacity
| ) |  |

static

Definition at line 148 of file array.c.

References ALLOC_N, ARY_EMBED_LEN, ARY_EMBED_P, ARY_EMBED_PTR, ARY_SET_CAPA, ARY_SET_HEAP_LEN, ARY_SET_LEN, ARY_SET_PTR, ARY_SHARED_P, assert, FL_SET_EMBED, FL_UNSET_EMBED, len, MEMCPY, OBJ_FROZEN, RARRAY, RARRAY_EMBED_LEN_MAX, RARRAY_LEN, RARRAY_PTR, REALLOC_N, and xfree().

Referenced by ary_double_capa(), ary_make_shared(), rb_ary_clear(), rb_ary_compact_bang(), rb_ary_delete(), rb_ary_fill(), rb_ary_initialize(), rb_ary_pop(), and rb_ary_uniq_bang().

static void ary_reverse | ( | VALUE * | p1,
|  | VALUE * | p2
| ) |  |

static

Definition at line 1830 of file array.c.

Referenced by rb_ary_reverse(), and rb_ary_rotate().

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

static

Definition at line 687 of file array.c.

References ary_make_partial(), NUM2LONG(), RARRAY_LEN, rb_cArray, rb_eArgError, rb_raise(), and rb_scan_args().

Referenced by rb_ary_first(), rb_ary_last(), rb_ary_pop_m(), and rb_ary_shift_m().

static VALUE ary_tmp_hash_new | ( | void |  | ) |

inline static

Definition at line 3339 of file array.c.

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

Referenced by ary_make_hash(), and ary_make_hash_by().

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

static

Definition at line 3697 of file array.c.

References ARY_DEFAULT_SIZE, ary_new(), i, id, LONG2NUM, NIL_P, NUM2LONG(), Qtrue, RARRAY_LEN, RARRAY_PTR, rb_ary_pop(), rb_ary_push(), rb_check_array_type(), rb_class_of(), rb_eArgError, rb_eRuntimeError, rb_raise(), RBASIC, result, st_delete, st_free_table, st_init_numtable, st_insert, and st_lookup.

Referenced by rb_ary_flatten(), and rb_ary_flatten_bang().

void Init_Array | ( | void |  | ) |

Definition at line 4644 of file array.c.

References ary_alloc(), ID2SYM, id_cmp, rb_ary_and(), rb_ary_aref(), rb_ary_aset(), rb_ary_assoc(), rb_ary_at(), 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_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.

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

static

Definition at line 1753 of file array.c.

References i, OBJ_TAINT, OBJ_TAINTED, OBJ_UNTRUST, OBJ_UNTRUSTED, RARRAY_LEN, RARRAY_PTR, rb_enc_copy(), rb_inspect(), rb_str_buf_append(), rb_str_buf_cat2(), rb_str_buf_new2(), rb_usascii_str_new_cstr(), and TRUE.

Referenced by rb_ary_inspect().

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

inline static

Definition at line 43 of file array.c.

Referenced by rb_ary_initialize().

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

static

Definition at line 4072 of file array.c.

References ARY_SET_LEN, i, RARRAY_PTR, rb_ary_new2(), rb_eRuntimeError, rb_raise(), rb_yield(), RBASIC, and result.

Referenced by rb_ary_permutation().

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

static

Definition at line 3491 of file array.c.

References rb_ary_push(), and ST_CONTINUE.

Referenced by rb_ary_uniq(), and rb_ary_uniq_bang().

static VALUE rb_ary_and | ( | VALUE | ary1,
|  | VALUE | ary2
| ) |  |

static

Definition at line 3427 of file array.c.

References ary_make_hash(), ary_recycle_hash(), hash(), i, RARRAY_LEN, rb_ary_elt(), rb_ary_new2(), rb_ary_push(), RHASH_EMPTY_P, RHASH_TBL, st_delete, to_ary(), and v.

Referenced by Init_Array().

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

Definition at line 997 of file array.c.

References arg, FIX2LONG, FIXNUM_P, len, NUM2LONG(), Qfalse, Qnil, RARRAY_LEN, rb_ary_entry(), rb_ary_subseq(), rb_range_beg_len(), and rb_scan_args().

Referenced by Init_Array(), and match_aref().

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

static

Definition at line 1388 of file array.c.

References FIX2LONG, FIXNUM_P, len, NUM2LONG(), RARRAY_LEN, rb_ary_modify_check(), rb_ary_splice(), rb_ary_store(), rb_eArgError, rb_raise(), and rb_range_beg_len().

Referenced by Init_Array().

VALUE rb_ary_assoc | ( | VALUE | ary,
|  | VALUE | key
| ) |  |

Definition at line 3094 of file array.c.

References i, NIL_P, Qnil, RARRAY_LEN, RARRAY_PTR, rb_check_array_type(), rb_equal(), and v.

Referenced by Init_Array().

static VALUE rb_ary_at | ( | VALUE | ary,
|  | VALUE | pos
| ) |  |

static

Definition at line 1044 of file array.c.

References NUM2LONG(), and rb_ary_entry().

Referenced by Init_Array().

VALUE rb_ary_clear | ( | VALUE | ary | ) |

Definition at line 2853 of file array.c.

References ary_sort_data::ary, ARY_CAPA, ARY_DEFAULT_SIZE, ARY_EMBED_P, ary_resize_capa(), ARY_SET_LEN, ARY_SHARED_P, FL_SET_EMBED, rb_ary_modify_check(), and rb_ary_unshare().

Referenced by coverage_result_i(), fdset2array(), Init_Array(), iseq_set_arguments(), method_missing(), open_key_args(), rb_io_s_popen(), ruby_set_argv(), and set_argv().

VALUE rb_ary_cmp | ( | VALUE | ary1,
|  | VALUE | ary2
| ) |  |

Definition at line 3311 of file array.c.

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

Referenced by Init_Array().

static VALUE rb_ary_collect | ( | VALUE | ary | ) |

static

Definition at line 2213 of file array.c.

References i, RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_ary_push(), rb_yield(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static VALUE rb_ary_collect_bang | ( | VALUE | ary | ) |

static

Definition at line 2246 of file array.c.

References ary_sort_data::ary, i, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_ary_store(), rb_yield(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static VALUE rb_ary_combination | ( | VALUE | ary,
|  | VALUE | num
| ) |  |

static

Definition at line 4194 of file array.c.

References ary_sort_data::ary, i, len, MEMZERO, NUM2LONG(), RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_ary_new3(), rb_ary_new4(), rb_eRuntimeError, rb_raise(), rb_yield(), RBASIC, RETURN_ENUMERATOR, RSTRING_PTR, tmpary, tmpary_discard, tmpbuf, and tmpbuf_discard.

Referenced by Init_Array().

static VALUE rb_ary_compact | ( | VALUE | ary | ) |

static

Definition at line 3642 of file array.c.

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

Referenced by Init_Array().

static VALUE rb_ary_compact_bang | ( | VALUE | ary | ) |

static

Definition at line 3606 of file array.c.

References ary_sort_data::ary, ARY_CAPA, ARY_DEFAULT_SIZE, ary_resize_capa(), ARY_SET_LEN, NIL_P, p, Qnil, RARRAY_LEN, RARRAY_PTR, and rb_ary_modify().

Referenced by Init_Array(), and rb_ary_compact().

VALUE rb_ary_concat | ( | VALUE | x,
|  | VALUE | y
| ) |  |

Definition at line 3001 of file array.c.

References RARRAY_LEN, rb_ary_modify_check(), rb_ary_splice(), and to_ary().

Referenced by argf_readlines(), enum_sort_by(), flat_map_i(), hash2kv(), hash2kv_enc(), Init_Array(), ole_methods(), open_key_args(), rb_str_associate(), and sort_by_i().

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

static

Definition at line 3667 of file array.c.

References LONG2NUM, p, RARRAY_LEN, RARRAY_PTR, rb_block_given_p(), rb_equal(), rb_scan_args(), rb_warn(), rb_yield(), and RTEST.

Referenced by Init_Array().

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

static

Definition at line 4030 of file array.c.

References i, NIL_P, NUM2LONG(), Qnil, RARRAY_LEN, RARRAY_PTR, rb_scan_args(), rb_yield(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static void rb_ary_decrement_share | ( | VALUE | shared | ) |

static

Definition at line 196 of file array.c.

References ARY_SET_SHARED_NUM, ARY_SHARED_NUM, rb_ary_free(), and rb_gc_force_recycle().

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

VALUE rb_ary_delete | ( | VALUE | ary,
|  | VALUE | item
| ) |  |

Definition at line 2420 of file array.c.

References ARY_CAPA, ARY_DEFAULT_SIZE, ary_resize_capa(), ARY_SET_LEN, Qnil, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_ary_store(), rb_block_given_p(), rb_equal(), rb_yield(), and v.

Referenced by env_replace_i(), and Init_Array().

VALUE rb_ary_delete_at | ( | VALUE | ary,
|  | long | pos
| ) |  |

Definition at line 2457 of file array.c.

References ARY_INCREASE_LEN, len, MEMMOVE, Qnil, RARRAY_LEN, RARRAY_PTR, and rb_ary_modify().

Referenced by ary_reject_bang(), ole_delete_event(), rb_ary_delete_at_m(), and rb_ary_slice_bang().

static VALUE rb_ary_delete_at_m | ( | VALUE | ary,
|  | VALUE | pos
| ) |  |

static

Definition at line 2492 of file array.c.

References NUM2LONG(), and rb_ary_delete_at().

Referenced by Init_Array().

static VALUE rb_ary_delete_if | ( | VALUE | ary | ) |

static

Definition at line 2666 of file array.c.

References ary_sort_data::ary, ary_reject_bang(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static VALUE rb_ary_diff | ( | VALUE | ary1,
|  | VALUE | ary2
| ) |  |

static

Definition at line 3398 of file array.c.

References ary_make_hash(), ary_recycle_hash(), hash(), i, RARRAY_LEN, RARRAY_PTR, rb_ary_elt(), rb_ary_new(), rb_ary_push(), RHASH_TBL, st_lookup, and to_ary().

Referenced by Init_Array().

static VALUE rb_ary_drop | ( | VALUE | ary,
|  | VALUE | n
| ) |  |

static

Definition at line 4593 of file array.c.

References NUM2LONG(), Qnil, RARRAY_LEN, rb_ary_new(), rb_ary_subseq(), rb_eArgError, rb_raise(), and result.

Referenced by Init_Array(), and rb_ary_drop_while().

static VALUE rb_ary_drop_while | ( | VALUE | ary | ) |

static

Definition at line 4623 of file array.c.

References i, LONG2FIX, RARRAY_LEN, RARRAY_PTR, rb_ary_drop(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Array().

VALUE rb_ary_dup | ( | VALUE | ary | ) |

Definition at line 1580 of file array.c.

References ARY_SET_LEN, MEMCPY, RARRAY_LEN, RARRAY_PTR, and rb_ary_new2().

Referenced by ary2sv(), coverage_result_i(), each_cons_i(), enumerator_peek_values_m(), iseq_build_from_ary_body(), rb_ary_compact(), rb_ary_shuffle(), rb_ary_sort(), rb_ary_transpose(), rb_ary_uniq(), rb_io_s_popen(), rb_method_location(), and save_env_i().

VALUE rb_ary_each | ( | VALUE | array | ) |

Definition at line 1471 of file array.c.

References i, RARRAY_LEN, RARRAY_PTR, rb_yield(), and RETURN_ENUMERATOR.

Referenced by dir_s_glob(), Init_Array(), and ossl_asn1cons_each().

static VALUE rb_ary_each_index | ( | VALUE | ary | ) |

static

Definition at line 1503 of file array.c.

References i, LONG2NUM, RARRAY_LEN, rb_yield(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static VALUE rb_ary_elt | ( | VALUE | ary,
|  | long | offset
| ) |  |

inline static

Definition at line 929 of file array.c.

References Qnil, RARRAY_LEN, and RARRAY_PTR.

Referenced by ary_add_hash_by(), rb_ary_and(), rb_ary_diff(), rb_ary_entry(), rb_ary_or(), rb_ary_select(), rb_ary_transpose(), rb_ary_uniq(), rb_ary_uniq_bang(), rb_ary_zip(), recursive_cmp(), recursive_eql(), and recursive_equal().

static VALUE rb_ary_empty_p | ( | VALUE | ary | ) |

static

Definition at line 1572 of file array.c.

References Qfalse, Qtrue, and RARRAY_LEN.

Referenced by Init_Array().

VALUE rb_ary_entry | ( | VALUE | ary,
|  | long | offset
| ) |  |

Definition at line 939 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_fds(), check_exec_redirect(), dimension(), divmodv(), enc_register_at(), EVENTSINK_Invoke(), evs_entry(), foletypelib_initialize(), folevariant_initialize(), folevariant_s_array(), get_iconv_opt_i(), hash2named_arg(), iseq_build_from_ary_body(), iseq_data_to_ary(), iseq_load(), iseq_set_sequence(), JSON_parse_string(), 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(), path_split(), pty_close_pty(), rb_ary_aref(), rb_ary_at(), rb_ary_product(), rb_ary_values_at(), rb_econv_init_by_convpath(), rb_enc_aliases_enc_i(), rb_enc_from_encoding_index(), rb_exec_arg_addopt(), rb_exec_arg_prepare(), rb_f_exec(), rb_iseq_build_from_ary(), rb_iseq_disasm(), rb_reg_s_union(), rb_reg_s_union_m(), rb_run_exec_options_err(), rb_struct_each_pair(), rescue_callback(), save_env(), save_redirect_fd(), select_internal(), start_document(), syck_const_find(), syck_map_initialize(), syck_map_value_set(), syck_seq_value_set(), syck_set_ivars(), time_timespec(), and wdivmod().

static VALUE rb_ary_eql | ( | VALUE | ary1,
|  | VALUE | ary2
| ) |  |

static

Definition at line 3201 of file array.c.

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

Referenced by Init_Array().

static VALUE rb_ary_equal | ( | VALUE | ary1,
|  | VALUE | ary2
| ) |  |

static

Definition at line 3166 of file array.c.

References Qfalse, Qtrue, RARRAY_LEN, rb_equal(), rb_exec_recursive_paired(), rb_intern, rb_respond_to(), recursive_equal(), T_ARRAY, and TYPE.

Referenced by Init_Array().

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

static

Definition at line 1121 of file array.c.

References NUM2LONG(), RARRAY_LEN, RARRAY_PTR, rb_block_given_p(), rb_eIndexError, rb_raise(), rb_scan_args(), rb_warn(), and rb_yield().

Referenced by Init_Array().

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

static

Definition at line 2895 of file array.c.

References ary_sort_data::ary, ARY_CAPA, ARY_MAX_SIZE, ary_resize_capa(), ARY_SET_LEN, FALSE, i, len, LONG2NUM, NIL_P, NUM2LONG(), p, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_block_given_p(), rb_eArgError, rb_mem_clear(), rb_raise(), rb_range_beg_len(), rb_scan_args(), rb_yield(), TRUE, and v.

Referenced by Init_Array().

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

static

Definition at line 1064 of file array.c.

References ARY_TAKE_FIRST, ary_take_first_or_last(), Qnil, RARRAY_LEN, and RARRAY_PTR.

Referenced by Init_Array().

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

static

Definition at line 3810 of file array.c.

References ary_make_shared_copy(), flatten(), mod, NIL_P, NUM2INT, OBJ_INFECT, rb_scan_args(), and result.

Referenced by Init_Array().

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

static

Definition at line 3769 of file array.c.

References ary_sort_data::ary, ary_discard(), ARY_EMBED_P, ARY_SET_EMBED_LEN, flatten(), mod, NIL_P, NUM2INT, Qnil, rb_ary_modify_check(), rb_ary_replace(), rb_obj_freeze(), rb_scan_args(), and result.

Referenced by Init_Array().

void rb_ary_free | ( | VALUE | ary | ) |

Definition at line 386 of file array.c.

References ARY_HEAP_PTR, ARY_OWNS_HEAP_P, and xfree().

Referenced by ary_discard(), obj_free(), rb_ary_decrement_share(), and ruby_vm_run_at_exit_hooks().

VALUE rb_ary_freeze | ( | VALUE | ary | ) |

Definition at line 278 of file array.c.

References rb_obj_freeze().

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

static VALUE rb_ary_frozen_p | ( | VALUE | ary | ) |

static

Definition at line 292 of file array.c.

References OBJ_FROZEN, Qfalse, and Qtrue.

Referenced by Init_Array().

static VALUE rb_ary_hash | ( | VALUE | ary | ) |

static

Definition at line 3239 of file array.c.

References rb_exec_recursive_outer(), and recursive_hash().

Referenced by Init_Array().

VALUE rb_ary_includes | ( | VALUE | ary,
|  | VALUE | item
| ) |  |

Definition at line 3258 of file array.c.

References i, Qfalse, Qtrue, RARRAY_LEN, RARRAY_PTR, and rb_equal().

Referenced by cv_i(), env_replace_i(), and Init_Array().

static VALUE rb_ary_increment_share | ( | VALUE | shared | ) |

static

Definition at line 227 of file array.c.

References ARY_SET_SHARED_NUM, and ARY_SHARED_NUM.

Referenced by ary_make_substitution(), and rb_ary_set_shared().

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

static

Definition at line 1171 of file array.c.

References i, LONG2NUM, Qnil, RARRAY_LEN, RARRAY_PTR, rb_block_given_p(), rb_equal(), rb_scan_args(), rb_warn(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Array().

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

static

Definition at line 542 of file array.c.

References ARY_MAX_SIZE, ARY_OWNS_HEAP_P, ary_resize_capa(), ARY_SET_EMBED_LEN, ARY_SET_LEN, FIXNUM_P, FL_SET_EMBED, i, len, LONG2NUM, memfill(), NIL_P, NUM2LONG(), RARRAY_PTR, rb_ary_modify(), rb_ary_replace(), rb_ary_store(), rb_ary_unshare_safe(), rb_block_given_p(), rb_check_array_type(), rb_eArgError, rb_raise(), rb_scan_args(), rb_warn(), rb_warning(), rb_yield(), size, and xfree().

Referenced by Init_Array().

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

static

Definition at line 1432 of file array.c.

References NUM2LONG(), RARRAY_LEN, rb_ary_modify_check(), rb_ary_new4(), rb_ary_splice(), rb_eArgError, and rb_raise().

Referenced by Init_Array().

static VALUE rb_ary_inspect | ( | VALUE | ary | ) |

static

Definition at line 1785 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().

VALUE rb_ary_join | ( | VALUE | ary,
|  | VALUE | sep
| ) |  |

Definition at line 1688 of file array.c.

References ary_join_0(), ary_join_1(), FALSE, i, len, NIL_P, OBJ_TAINT, OBJ_TAINTED, OBJ_UNTRUST, OBJ_UNTRUSTED, RARRAY_LEN, RARRAY_PTR, rb_check_string_type(), rb_enc_associate(), rb_str_buf_new(), rb_usascii_encoding(), rb_usascii_str_new(), result, RSTRING_LEN, StringValue, and TRUE.

Referenced by pipe_open(), rb_ary_join_m(), rb_ary_times(), rb_spawn_process(), syck_resolver_transfer(), and tcl_protect_core().

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

static

Definition at line 1742 of file array.c.

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

Referenced by Init_Array().

static VALUE rb_ary_keep_if | ( | VALUE | ary | ) |

static

Definition at line 2393 of file array.c.

References ary_sort_data::ary, rb_ary_select_bang(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

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

Definition at line 1089 of file array.c.

References ary_take_first_or_last(), ARY_TAKE_LAST, Qnil, RARRAY_LEN, and RARRAY_PTR.

Referenced by Init_Array(), and range_last().

static VALUE rb_ary_length | ( | VALUE | ary | ) |

static

Definition at line 1556 of file array.c.

References len, LONG2NUM, and RARRAY_LEN.

Referenced by Init_Array().

RUBY_FUNC_EXPORTED size_t rb_ary_memsize | ( | VALUE | ary | ) |

Definition at line 394 of file array.c.

References ARY_OWNS_HEAP_P, and RARRAY.

Referenced by memsize_of().

void rb_ary_modify | ( | VALUE | ary | ) |

Definition at line 253 of file array.c.

References ALLOC_N, ARY_EMBED_PTR, ARY_HEAP_PTR, ARY_SET_CAPA, ARY_SET_EMBED_LEN, ARY_SET_PTR, ARY_SHARED, ARY_SHARED_P, FL_SET_EMBED, FL_UNSET_SHARED, len, MEMCPY, RARRAY_EMBED_LEN_MAX, RARRAY_LEN, RARRAY_PTR, rb_ary_decrement_share(), rb_ary_modify_check(), and rb_ary_unshare().

Referenced by rb_ary_collect_bang(), rb_ary_compact_bang(), rb_ary_delete(), rb_ary_delete_at(), rb_ary_fill(), rb_ary_initialize(), rb_ary_push(), rb_ary_push_m(), rb_ary_resize(), rb_ary_reverse(), rb_ary_rotate(), rb_ary_select_bang(), rb_ary_shuffle_bang(), rb_ary_sort_bang(), rb_ary_sort_by_bang(), rb_ary_splice(), rb_ary_store(), and rb_ary_unshift_m().

static void rb_ary_modify_check | ( | VALUE | ary | ) |

inline static

Definition at line 245 of file array.c.

References OBJ_UNTRUSTED, rb_check_frozen, rb_eSecurityError, rb_raise(), and rb_safe_level.

Referenced by ary_reject_bang(), rb_ary_aset(), rb_ary_clear(), rb_ary_concat(), rb_ary_flatten_bang(), rb_ary_insert(), rb_ary_modify(), rb_ary_pop(), rb_ary_pop_m(), rb_ary_replace(), rb_ary_shift(), rb_ary_shift_m(), rb_ary_slice_bang(), and rb_ary_uniq_bang().

VALUE rb_ary_new | ( | void |  | ) |

Definition at line 339 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(), cbsubst_get_extra_args_tbl(), cbsubst_table_setup(), check_exec_redirect(), class_instance_method_list(), 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(), enum_take_while(), enum_to_a(), enum_zip(), env_each_pair(), env_keys(), env_to_a(), env_values(), env_values_at(), EVENTSINK_Invoke(), fdbm_delete_if(), fdbm_keys(), fdbm_select(), fdbm_to_a(), fdbm_values(), fev_initialize(), fgdbm_delete_if(), 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(), iconv_s_ctlmethods(), Init_load(), Init_ossl_asn1(), Init_VM(), Init_win32ole(), int_ossl_asn1_decode0_cons(), iseq_data_to_ary(), JSON_parse_array(), 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_pack(), pack_unpack(), parse(), prepare_iseq_build(), proc_curry(), proc_waitall(), rb_ary_diff(), rb_ary_drop(), rb_ary_reject(), rb_call_end_proc(), rb_check_exec_env(), rb_enc_aliases(), rb_exec_arg_addopt(), rb_exec_fillarg(), rb_f_global_variables(), rb_f_local_variables(), rb_f_untrace_var(), rb_gzreader_readlines(), rb_hash_keys(), rb_hash_to_a(), rb_hash_values(), rb_insns_name_array(), rb_io_readlines(), rb_iseq_disasm(), rb_mod_ancestors(), rb_mod_class_variables(), rb_mod_included_modules(), rb_mod_nesting(), rb_obj_instance_variables(), rb_obj_singleton_methods(), rb_push_glob(), rb_reg_names(), rb_run_exec_options_err(), rb_scan_args(), rb_str_scan(), rb_str_split_m(), rb_struct_define(), rb_struct_select(), rb_thread_keys(), rb_thread_list(), reduce0(), save_env(), save_redirect_fd(), search_convpath_i(), select_internal(), sock_s_gethostbyaddr(), strio_readlines(), syck_out_seq(), syck_resolver_transfer(), thgroup_list(), tk_hash_kv(), username_completion_proc_call(), vm_backtrace(), vm_backtrace_alloc(), vm_expandarray(), and vm_yield_setup_block_args().

VALUE rb_ary_new2 | ( | long | capa | ) |

Definition at line 332 of file array.c.

References ary_new(), and rb_cArray.

Referenced by ary2list(), ary2list2(), ary_make_substitution(), assoc2kv(), assoc2kv_enc(), BigDecimal_split(), cbsubst_scan_args(), coverage(), each_slice_i(), econv_primitive_errinfo(), enc_list(), enc_names(), enum_each_cons(), enum_each_slice(), enum_first(), enum_sort_by(), enum_take(), fdbm_values_at(), fgdbm_values_at(), fsdbm_values_at(), hash2kv(), hash2kv_enc(), iconv_s_iconv(), Init_Encoding(), Init_ossl_ssl(), Init_tcltklib(), ip_ruby_cmd(), iseq_data_to_ary(), JSON_parse_string(), lib_split_tklist_core(), make_hostent_internal(), match_array(), mk_ary_of_str(), nil_to_a(), ossl_generate_cb(), 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(), permute0(), pty_getpty(), r_object0(), random_dump(), range_first(), rb_ary_and(), rb_ary_collect(), rb_ary_combination(), rb_ary_dup(), rb_ary_new(), rb_ary_new3(), rb_ary_new4(), rb_ary_or(), rb_ary_permutation(), rb_ary_plus(), rb_ary_product(), rb_ary_repeated_combination(), rb_ary_repeated_permutation(), rb_ary_reverse_m(), rb_ary_rotate_m(), rb_ary_sample(), rb_ary_select(), rb_ary_slice_bang(), rb_ary_to_a(), rb_ary_transpose(), rb_ary_zip(), rb_const_list(), rb_enc_name_list(), rb_get_expanded_load_path(), rb_get_values_at(), rb_hash_values_at(), rb_iseq_parameters(), rb_str_split_m(), rb_struct_define_without_accessor(), rb_struct_s_members_m(), rb_sym_all_symbols(), rb_zlib_crc_table(), rcombinate0(), reg_named_captures_iter(), rpermute0(), scan_once(), select_internal(), syck_genericresolver_node_import(), syck_resolver_node_import(), take_items(), tk_conv_args(), unnamed_parameters(), yaml_org_handler(), zip_ary(), and zip_i().

VALUE rb_ary_new3 | ( | long | n,
|  |  | ...
| ) |  |

Definition at line 347 of file array.c.

References ARY_SET_LEN, i, RARRAY_PTR, and rb_ary_new2().

Referenced by addrinfo_mdump(), BIGNUM_1c(), bmcall(), bug_start(), cbsubst_get_all_subst_keys(), check_exec_redirect(), chunk_ii(), d_lite_marshal_dump(), define_final(), enum_minmax(), ev_on_event(), generator_each(), get_eventloop_weight(), group_by_i(), hash2kv(), hash2kv_enc(), iconv_create(), ip_eval(), ip_invoke_with_position(), lib_getversion(), make_curry_proc(), ossl_x509name_initialize(), ossl_x509name_to_a(), parse(), path_split(), rb_add_method(), rb_Array(), rb_ary_combination(), rb_ary_permutation(), rb_ary_repeated_combination(), rb_ary_repeated_permutation(), rb_ary_sample(), rb_ary_to_ary(), rb_assoc_new(), rb_check_backtrace(), rb_exec_arg_addopt(), rb_f_untrace_var(), rb_str_partition(), rb_str_rpartition(), rb_str_split_m(), rb_trace_eval(), rsock_ipaddr(), rt_complete_frags(), run_finalizer(), set_eventloop_weight(), setup_exception(), signal_exec(), slicebefore_ii(), time_to_a(), tk_funcall(), unnamed_parameters(), and yyparse().

VALUE rb_ary_new4 | ( | long | n,
|  | const VALUE * | elts
| ) |  |

Definition at line 366 of file array.c.

References ARY_SET_LEN, MEMCPY, RARRAY_PTR, and rb_ary_new2().

Referenced by call_cfunc(), check_funcall_exec(), curry(), enum_values_pack(), enum_zip(), enumerator_init(), enumerator_with_index_i(), enumerator_with_object_i(), get_stack_tail(), iconv_fail(), iseq_location(), libyaml_version(), make_passing_arg(), next_ii(), pipe_open(), proc_fallback(), raise_method_missing(), rb_ary_combination(), rb_ary_insert(), rb_ary_resurrect(), rb_ary_sample(), rb_ary_slice_bang(), rb_f_p(), rb_mod_module_exec(), rb_obj_instance_exec(), rb_scan_args(), rb_spawn_process(), rb_struct_to_a(), take_i(), vm_call0(), vm_callee_setup_arg_complex(), vm_expandarray(), vm_yield_setup_block_args(), vm_yield_setup_block_args_complex(), and vm_yield_with_cfunc().

static VALUE rb_ary_or | ( | VALUE | ary1,
|  | VALUE | ary2
| ) |  |

static

Definition at line 3464 of file array.c.

References ary_add_hash(), ary_make_hash(), ary_recycle_hash(), hash(), i, RARRAY_LEN, rb_ary_elt(), rb_ary_new2(), rb_ary_push(), RHASH_TBL, st_delete, to_ary(), and v.

Referenced by Init_Array().

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

static

Definition at line 4130 of file array.c.

References ary_sort_data::ary, ary_make_shared_copy(), i, MEMZERO, NIL_P, NUM2LONG(), p, permute0(), RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_ary_new3(), rb_cArray, rb_scan_args(), rb_yield(), RBASIC, RETURN_ENUMERATOR, RSTRING_PTR, tmpbuf, and tmpbuf_discard.

Referenced by Init_Array().

VALUE rb_ary_plus | ( | VALUE | x,
|  | VALUE | y
| ) |  |

Definition at line 2976 of file array.c.

References ARY_SET_LEN, len, MEMCPY, RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), and to_ary().

Referenced by assoc2kv(), assoc2kv_enc(), curry(), Init_Array(), and tk_conv_args().

VALUE rb_ary_pop | ( | VALUE | ary | ) |

Definition at line 766 of file array.c.

References ARY_CAPA, ARY_DEFAULT_SIZE, ARY_OWNS_HEAP_P, ary_resize_capa(), ARY_SET_LEN, Qnil, RARRAY_LEN, RARRAY_PTR, and rb_ary_modify_check().

Referenced by cut_stack_tail(), flatten(), lib_eventloop_ensure(), r_object0(), rb_ary_pop_m(), rb_str_split_m(), ruby_vm_run_at_exit_hooks(), syck_resolver_node_import(), syck_resolver_transfer(), and yaml_org_handler().

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

static

Definition at line 800 of file array.c.

References ARY_INCREASE_LEN, ary_take_first_or_last(), ARY_TAKE_LAST, RARRAY_LEN, rb_ary_modify_check(), rb_ary_pop(), and result.

Referenced by Init_Array().

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

static

Definition at line 4443 of file array.c.

References ary_sort_data::ary, ary_make_shared_copy(), ARY_SET_LEN, FL_SET, FL_TEST, FL_UNSET, FL_USER5, i, NIL_P, Qnil, RARRAY_LEN, RARRAY_PTR, rb_ary_entry(), rb_ary_new2(), rb_ary_push(), rb_block_given_p(), rb_eRangeError, rb_eRuntimeError, rb_raise(), rb_yield(), RBASIC, result, RSTRING_PTR, tmpary, tmpary_discard, tmpbuf, tmpbuf_discard, and to_ary().

Referenced by Init_Array().

VALUE rb_ary_push | ( | VALUE | ary,
|  | VALUE | item
| ) |  |

Definition at line 723 of file array.c.

References rb_ary_modify(), and rb_ary_push_1().

Referenced by add_event_call_back(), add_modules(), addrinfo_list_new(), ary2list(), ary2list2(), assoc2kv(), assoc2kv_enc(), BigDecimal_split(), callback(), cbsubst_scan_args(), cdhash_each(), check_exec_env_i(), check_exec_redirect(), chunk_ii(), collect_all(), collect_i(), collect_local_variables_in_iseq(), compile_array_(), cv_i(), cycle_i(), define_final(), 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(), fdset2array(), 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(), grep_i(), grep_iter_i(), group_by_i(), gvar_i(), iconv_s_ctlmethods(), iconv_s_iconv(), Init_Array(), Init_Encoding(), Init_ossl_ssl(), Init_VM(), ins_methods_push(), insn_operand_intern(), int_ossl_asn1_decode0_cons(), ip_ruby_cmd(), iseq_add_mark_object(), iseq_add_mark_object_compile_time(), iseq_data_to_ary(), iseq_set_arguments(), ivar_i(), JSON_parse_array(), JSON_parse_string(), keys_i(), 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(), pack_pack(), parse(), partition_i(), proc_waitall(), push_include(), push_kv(), push_kv_enc(), push_pattern(), push_value(), r_object0(), random_dump(), rb_ary_and(), rb_ary_collect(), rb_ary_diff(), rb_ary_or(), rb_ary_product(), rb_ary_select(), rb_ary_uniq(), rb_ary_zip(), rb_enc_name_list_i(), rb_exec_arg_addopt(), rb_f_global_variables(), rb_f_local_variables(), rb_f_untrace_var(), rb_gc_register_mark_object(), rb_get_expanded_load_path(), rb_get_values_at(), rb_gzreader_readlines(), rb_hash_values_at(), rb_insns_name_array(), rb_io_readlines(), rb_iseq_parameters(), rb_mod_ancestors(), rb_mod_included_modules(), rb_mod_nesting(), rb_provide_feature(), rb_require_safe(), rb_str_scan(), rb_str_split_m(), rb_struct_define(), rb_struct_define_without_accessor(), rb_struct_s_members_m(), rb_struct_select(), rb_zlib_crc_table(), 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(), syck_resolver_node_import(), syck_seq_add_m(), 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(), vm_backtrace_push(), waitall_each(), when_vals(), yaml_org_handler(), yycompile0(), yyparse(), zip_ary(), and zip_i().

static VALUE rb_ary_push_1 | ( | VALUE | ary,
|  | VALUE | item
| ) |  |

static

Definition at line 730 of file array.c.

References ARY_CAPA, ary_double_capa(), ARY_SET_LEN, RARRAY_LEN, and RARRAY_PTR.

Referenced by ary_reject(), rb_ary_push(), and rb_ary_push_m().

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

static

Definition at line 756 of file array.c.

References rb_ary_modify(), and rb_ary_push_1().

Referenced by Init_Array().

VALUE rb_ary_rassoc | ( | VALUE | ary,
|  | VALUE | value
| ) |  |

Definition at line 3123 of file array.c.

References i, Qnil, RARRAY_LEN, RARRAY_PTR, rb_equal(), T_ARRAY, TYPE, and v.

Referenced by Init_Array().

static VALUE rb_ary_reject | ( | VALUE | ary | ) |

static

Definition at line 2638 of file array.c.

References ary_reject(), rb_ary_new(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static VALUE rb_ary_reject_bang | ( | VALUE | ary | ) |

static

Definition at line 2618 of file array.c.

References ary_reject_bang(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static VALUE rb_ary_repeated_combination | ( | VALUE | ary,
|  | VALUE | num
| ) |  |

static

Definition at line 4388 of file array.c.

References ary_sort_data::ary, ary_make_shared_copy(), i, len, NUM2LONG(), p, RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_ary_new3(), rb_cArray, rb_yield(), RBASIC, rcombinate0(), RETURN_ENUMERATOR, RSTRING_PTR, tmpbuf, and tmpbuf_discard.

Referenced by Init_Array().

static VALUE rb_ary_repeated_permutation | ( | VALUE | ary,
|  | VALUE | num
| ) |  |

static

Definition at line 4304 of file array.c.

References ary_sort_data::ary, ary_make_shared_copy(), i, NUM2LONG(), p, RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_ary_new3(), rb_cArray, rb_yield(), RBASIC, RETURN_ENUMERATOR, rpermute0(), RSTRING_PTR, tmpbuf, and tmpbuf_discard.

Referenced by Init_Array().

VALUE rb_ary_replace | ( | VALUE | copy,
|  | VALUE | orig
| ) |  |

Definition at line 2801 of file array.c.

References ary_make_shared(), ARY_OWNS_HEAP_P, ARY_SET_LEN, ARY_SET_PTR, ARY_SHARED, ARY_SHARED_P, FL_SET_EMBED, FL_UNSET_EMBED, FL_UNSET_SHARED, MEMCPY, RARRAY_EMBED_LEN_MAX, RARRAY_LEN, RARRAY_PTR, rb_ary_decrement_share(), rb_ary_modify_check(), rb_ary_set_shared(), rb_ary_unshare_safe(), to_ary(), and xfree().

Referenced by enc_list(), Init_Array(), rb_ary_flatten_bang(), rb_ary_initialize(), rb_ary_sort_by_bang(), and rb_ary_to_a().

VALUE rb_ary_resize | ( | VALUE | ary,
|  | long | len
| ) |  |

expands or shrinks ary to len elements.

expanded region will be filled with Qnil.

Parameters

  ary | an array
  len | new size

Returns
  ary

Postcondition
  the size of ary is len.

Definition at line 1322 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_SET_CAPA, ARY_SET_EMBED_LEN, ARY_SET_HEAP_LEN, ARY_SET_LEN, MEMCPY, RARRAY, RARRAY_EMBED_LEN_MAX, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_eIndexError, rb_mem_clear(), rb_raise(), and REALLOC_N.

Referenced by ary_resize(), and enum_sort_by().

VALUE rb_ary_resurrect | ( | VALUE | ary | ) |

Definition at line 1589 of file array.c.

References RARRAY_LEN, RARRAY_PTR, and rb_ary_new4().

Referenced by obj_resurrect().

VALUE rb_ary_reverse | ( | VALUE | ary | ) |

Definition at line 1841 of file array.c.

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

Referenced by rb_ary_reverse_bang(), syck_resolver_node_import(), vm_backtrace(), and yaml_org_handler().

static VALUE rb_ary_reverse_bang | ( | VALUE | ary | ) |

static

Definition at line 1866 of file array.c.

References rb_ary_reverse().

Referenced by Init_Array().

static VALUE rb_ary_reverse_each | ( | VALUE | ary | ) |

static

Definition at line 1531 of file array.c.

References len, RARRAY_LEN, RARRAY_PTR, rb_yield(), and RETURN_ENUMERATOR.

Referenced by Init_Array().

static VALUE rb_ary_reverse_m | ( | VALUE | ary | ) |

static

Definition at line 1882 of file array.c.

References ARY_SET_LEN, len, RARRAY_LEN, RARRAY_PTR, and rb_ary_new2().

Referenced by Init_Array().

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

static

Definition at line 1217 of file array.c.

References i, LONG2NUM, Qnil, RARRAY_LEN, RARRAY_PTR, rb_block_given_p(), rb_equal(), rb_scan_args(), rb_warn(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Array().

VALUE rb_ary_rotate | ( | VALUE | ary,
|  | long | cnt
| ) |  |

Definition at line 1903 of file array.c.

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

Referenced by rb_ary_rotate_bang().

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

static

Definition at line 1939 of file array.c.

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

Referenced by Init_Array().

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

static

Definition at line 1968 of file array.c.

References ARY_SET_LEN, cnt, len, MEMCPY, NULL, NUM2LONG(), RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_scan_args(), and rotate_count().

Referenced by Init_Array().

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

static

Definition at line 606 of file array.c.

References ary_new(), ARY_SET_LEN, MEMCPY, and RARRAY_PTR.

Referenced by Init_Array().

static VALUE rb_ary_s_try_convert | ( | VALUE | dummy,
|  | VALUE | ary
| ) |  |

static

Definition at line 498 of file array.c.

References rb_check_array_type().

Referenced by Init_Array().

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

static

Definition at line 3913 of file array.c.

References ARY_SET_LEN, i, len, long, memmove(), NUM2LONG(), numberof, OPTHASH_GIVEN_P, Qnil, RAND_UPTO, RARRAY_LEN, RARRAY_PTR, rb_ary_new2(), rb_ary_new3(), rb_ary_new4(), rb_cArray, rb_cRandom, rb_eArgError, RB_GC_GUARD, rb_hash_lookup2(), rb_raise(), rb_random_real(), rb_scan_args(), RBASIC, and result.

Referenced by Init_Array().

static VALUE rb_ary_select | ( | VALUE | ary | ) |

static

Definition at line 2325 of file array.c.

References i, RARRAY_LEN, RARRAY_PTR, rb_ary_elt(), rb_ary_new2(), rb_ary_push(), rb_yield(), result, RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Array().

static VALUE rb_ary_select_bang | ( | VALUE | ary | ) |

static

Definition at line 2356 of file array.c.

References ary_sort_data::ary, ARY_SET_LEN, Qnil, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_ary_store(), rb_yield(), RETURN_ENUMERATOR, RTEST, and v.

Referenced by Init_Array(), and rb_ary_keep_if().

static void rb_ary_set_shared | ( | VALUE | ary,
|  | VALUE | shared
| ) |  |

static

Definition at line 237 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().

VALUE rb_ary_shift | ( | VALUE | ary | ) |

Definition at line 815 of file array.c.

References ARY_DEFAULT_SIZE, ARY_EMBED_P, ARY_INCREASE_LEN, ARY_INCREASE_PTR, ary_make_shared(), ARY_SHARED, ARY_SHARED_NUM, ARY_SHARED_P, assert, MEMMOVE, Qnil, RARRAY_LEN, RARRAY_PTR, rb_ary_modify_check(), and top.

Referenced by argf_next_argv(), each_cons_i(), filename_completion_proc_call(), process_sflag(), rb_ary_shift_m(), require_libraries(), syck_resolver_transfer(), username_completion_proc_call(), and yaml_org_handler().

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

static

Definition at line 864 of file array.c.

References ARY_INCREASE_LEN, ARY_INCREASE_PTR, ARY_SHARED, ARY_SHARED_NUM, ARY_SHARED_P, ARY_TAKE_FIRST, ary_take_first_or_last(), MEMMOVE, RARRAY_LEN, RARRAY_PTR, rb_ary_modify_check(), rb_ary_shift(), rb_mem_clear(), and result.

Referenced by Init_Array().

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

static

Definition at line 3887 of file array.c.

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

Referenced by Init_Array().

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

static

Definition at line 3841 of file array.c.

References ary_sort_data::ary, i, OPTHASH_GIVEN_P, RAND_UPTO, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_cRandom, rb_eArgError, rb_eRuntimeError, rb_hash_lookup2(), and rb_raise().

Referenced by Init_Array(), and rb_ary_shuffle().

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

static

Definition at line 2517 of file array.c.

References FIXNUM_P, len, NULL, NUM2LONG(), Qnil, Qtrue, Qundef, RARRAY_LEN, RARRAY_PTR, rb_ary_delete_at(), rb_ary_modify_check(), rb_ary_new2(), rb_ary_new4(), rb_ary_splice(), rb_obj_class(), rb_range_beg_len(), rb_scan_args(), and RBASIC.

Referenced by Init_Array().

VALUE rb_ary_sort | ( | VALUE | ary | ) |

Definition at line 2155 of file array.c.

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

Referenced by enum_sort(), and Init_Array().

VALUE rb_ary_sort_bang | ( | VALUE | ary | ) |

Definition at line 2079 of file array.c.

References ary_sort_data::ary, ARY_CAPA, ARY_EMBED_LEN, ARY_EMBED_P, ARY_EMBED_PTR, ARY_HEAP_PTR, ary_make_substitution(), ARY_SET_CAPA, ARY_SET_EMBED_LEN, ARY_SET_HEAP_LEN, ARY_SET_LEN, ARY_SET_PTR, ARY_SHARED_P, assert, FL_FREEZE, FL_SET, FL_SET_EMBED, FL_UNSET, FL_UNSET_EMBED, FL_UNSET_SHARED, MEMCPY, ary_sort_data::opt_inited, ary_sort_data::opt_methods, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_ary_unshare(), rb_block_given_p(), rb_cArray, RBASIC, ruby_qsort(), sort_1(), sort_2(), and xfree().

Referenced by Init_Array(), and rb_ary_sort().

static VALUE rb_ary_sort_by_bang | ( | VALUE | ary | ) |

static

Definition at line 2182 of file array.c.

References ary_sort_data::ary, rb_ary_modify(), rb_ary_replace(), rb_block_call, rb_intern, RETURN_ENUMERATOR, and sort_by_i().

Referenced by Init_Array().

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

static

Definition at line 1256 of file array.c.

References ARY_CAPA, ary_double_capa(), ARY_MAX_SIZE, ARY_SET_LEN, len, MEMCPY, MEMMOVE, Qundef, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_ary_to_ary(), rb_eIndexError, rb_mem_clear(), and rb_raise().

Referenced by rb_ary_aset(), rb_ary_concat(), rb_ary_insert(), and rb_ary_slice_bang().

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

Definition at line 618 of file array.c.

References ARY_CAPA, ary_double_capa(), ARY_MAX_SIZE, ARY_SET_LEN, RARRAY_LEN, RARRAY_PTR, rb_ary_modify(), rb_eIndexError, rb_mem_clear(), and rb_raise().

Referenced by addrinfo_ip_unpack(), ary_new_dim(), ary_store_dim(), check_exec_fds(), check_exec_redirect(), decorate_convpath(), econv_primitive_errinfo(), enc_register_at(), enum_minmax(), enum_sort_by(), evs_delete(), Init_ossl_asn1(), iseq_build_from_ary_body(), iseq_data_to_ary(), ossl_generate_cb(), path_entries(), path_s_glob(), pty_getpty(), rb_ary_aset(), rb_ary_collect_bang(), rb_ary_delete(), rb_ary_initialize(), rb_ary_select_bang(), rb_ary_transpose(), rb_ary_uniq_bang(), rb_enc_aliases_enc_i(), rb_exec_arg_addopt(), rb_exec_fillarg(), rb_run_exec_options_err(), reg_named_captures_iter(), save_env(), save_redirect_fd(), search_convpath_i(), syck_genericresolver_node_import(), syck_resolver_node_import(), sym_to_proc(), unnamed_parameters(), yaml_org_handler(), zip_ary(), and zip_i().

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

Definition at line 948 of file array.c.

References ary_make_partial(), ary_new(), Qnil, RARRAY_LEN, and rb_obj_class().

Referenced by rb_ary_aref(), rb_ary_drop(), rb_ary_take(), and take_items().

static VALUE rb_ary_take | ( | VALUE | obj,
|  | VALUE | n
| ) |  |

static

Definition at line 4544 of file array.c.

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

Referenced by Init_Array(), and rb_ary_take_while().

static VALUE rb_ary_take_while | ( | VALUE | ary | ) |

static

Definition at line 4569 of file array.c.

References i, LONG2FIX, RARRAY_LEN, RARRAY_PTR, rb_ary_take(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Array().

static VALUE rb_ary_times | ( | VALUE | ary,
|  | VALUE | times
| ) |  |

static

Definition at line 3028 of file array.c.

References ARY_MAX_SIZE, ary_new(), ARY_SET_LEN, len, MEMCPY, NIL_P, NUM2LONG(), OBJ_INFECT, RARRAY_LEN, RARRAY_PTR, rb_ary_join(), rb_check_string_type(), rb_eArgError, rb_obj_class(), and rb_raise().

Referenced by Init_Array().

VALUE rb_ary_tmp_new | ( | long | capa | ) |

Definition at line 380 of file array.c.

References ary_new().

Referenced by callback(), compile_array_(), enum_sort_by(), Init_top_self(), iseq_compile_each(), iseq_set_arguments(), method_missing(), open_key_args(), prepare_iseq_build(), rb_iseq_build_for_ruby2cext(), rb_struct_new(), and sym_to_proc().

static VALUE rb_ary_to_a | ( | VALUE | ary | ) |

static

Definition at line 1806 of file array.c.

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

Referenced by Init_Array().

VALUE rb_ary_to_ary | ( | VALUE | obj | ) |

Definition at line 1247 of file array.c.

References NIL_P, rb_ary_new3(), and rb_check_array_type().

Referenced by rb_ary_splice(), and vm_expandarray().

static VALUE rb_ary_to_ary_m | ( | VALUE | ary | ) |

static

Definition at line 1824 of file array.c.

Referenced by Init_Array().

VALUE rb_ary_to_s | ( | VALUE | ary | ) |

Definition at line 1792 of file array.c.

References rb_ary_inspect().

static VALUE rb_ary_transpose | ( | VALUE | ary | ) |

static

Definition at line 2761 of file array.c.

References i, RARRAY_LEN, rb_ary_dup(), rb_ary_elt(), rb_ary_new2(), rb_ary_store(), rb_eIndexError, rb_raise(), result, and to_ary().

Referenced by Init_Array().

static VALUE rb_ary_uniq | ( | VALUE | ary | ) |

static

Definition at line 3566 of file array.c.

References ary_make_hash(), ary_make_hash_by(), ary_new(), ary_recycle_hash(), hash(), i, push_value(), RARRAY_LEN, rb_ary_dup(), rb_ary_elt(), rb_ary_push(), rb_block_given_p(), rb_obj_class(), RHASH_SIZE, RHASH_TBL, st_delete, st_foreach, and v.

Referenced by Init_Array().

static VALUE rb_ary_uniq_bang | ( | VALUE | ary | ) |

static

Definition at line 3514 of file array.c.

References ary_sort_data::ary, ARY_EMBED_P, ary_make_hash(), ary_make_hash_by(), ary_recycle_hash(), ary_resize_capa(), ARY_SET_LEN, ARY_SHARED_P, FL_SET_EMBED, hash(), i, push_value(), Qnil, RARRAY_LEN, rb_ary_elt(), rb_ary_modify_check(), rb_ary_store(), rb_ary_unshare(), rb_block_given_p(), RHASH_SIZE, RHASH_TBL, st_delete, st_foreach, and v.

Referenced by Init_Array().

static void rb_ary_unshare | ( | VALUE | ary | ) |

static

Definition at line 211 of file array.c.

References FL_UNSET_SHARED, RARRAY, and rb_ary_decrement_share().

Referenced by rb_ary_clear(), rb_ary_modify(), rb_ary_sort_bang(), rb_ary_uniq_bang(), and rb_ary_unshare_safe().

static void rb_ary_unshare_safe | ( | VALUE | ary | ) |

inline static

Definition at line 219 of file array.c.

References ARY_EMBED_P, ARY_SHARED_P, and rb_ary_unshare().

Referenced by rb_ary_initialize(), and rb_ary_replace().

VALUE rb_ary_unshift | ( | VALUE | ary,
|  | VALUE | item
| ) |  |

Definition at line 922 of file array.c.

References rb_ary_unshift_m().

Referenced by check_funcall_exec(), ole_invoke(), parser_set_encode(), rb_struct_s_def(), syck_resolver_transfer(), and vm_call0().

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

static

Definition at line 903 of file array.c.

References ARY_CAPA, ary_double_capa(), ARY_INCREASE_LEN, len, MEMCPY, MEMMOVE, RARRAY_LEN, RARRAY_PTR, and rb_ary_modify().

Referenced by Init_Array(), and rb_ary_unshift().

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

static

Definition at line 2303 of file array.c.

References RARRAY_LEN, rb_ary_entry(), and rb_get_values_at().

Referenced by Init_Array().

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

static

Definition at line 2718 of file array.c.

References argc, i, len, NIL_P, Qnil, RARRAY_LEN, rb_ary_elt(), rb_ary_new2(), rb_ary_push(), rb_block_given_p(), rb_yield(), result, and take_items().

Referenced by Init_Array().

VALUE rb_assoc_new | ( | VALUE | car,
|  | VALUE | cdr
| ) |  |

Definition at line 460 of file array.c.

References rb_ary_new3().

Referenced by addrinfo_getnameinfo(), addrinfo_mdump(), assoc_i(), BigDecimal_coerce(), BigDecimal_divmod(), BigDecimal_prec(), check_exec_env_i(), check_exec_redirect(), chunk_i(), chunk_ii(), each_pair_i(), econv_convpath(), enum_minmax_by(), enum_partition(), env_assoc(), env_each_pair(), env_rassoc(), env_shift(), env_to_a(), fdbm_delete_if(), fdbm_each_pair(), fdbm_select(), fdbm_shift(), fdbm_to_a(), fgdbm_delete_if(), fgdbm_each_pair(), fgdbm_select(), fgdbm_shift(), fgdbm_to_a(), fix_divmod(), flo_coerce(), flo_divmod(), fsdbm_delete_if(), fsdbm_each_pair(), fsdbm_select(), fsdbm_shift(), fsdbm_to_a(), match_offset(), math_frexp(), math_lgamma(), nucomp_coerce(), nucomp_marshal_dump(), nucomp_polar(), nucomp_rect(), num_coerce(), num_divmod(), numeric_polar(), numeric_rect(), nurat_coerce(), nurat_marshal_dump(), ossl_bn_coerce(), proc_wait2(), proc_waitall(), pty_open(), rassoc_i(), rb_big_coerce(), rb_big_divmod(), rb_file_s_split(), rb_gcdlcm(), rb_hash_shift(), rb_io_s_pipe(), rsock_s_recvfrom(), rsock_s_recvfrom_nonblock(), save_redirect_fd(), search_convpath_i(), sock_accept(), sock_accept_nonblock(), sock_s_getnameinfo(), sock_s_unpack_sockaddr_in(), sock_sysaccept(), sockopt_linger(), string_to_c_internal(), string_to_r_internal(), to_a_i(), waitall_each(), and yyparse().

VALUE rb_check_array_type | ( | VALUE | ary | ) |

Definition at line 472 of file array.c.

References rb_check_convert_type(), and T_ARRAY.

Referenced by addrinfo_initialize(), dir_s_glob(), divmodv(), econv_init(), enum_zip(), flat_map_i(), flatten(), ossl_x509name_initialize(), path_split(), rb_Array(), rb_ary_assoc(), rb_ary_cmp(), rb_ary_initialize(), rb_ary_s_try_convert(), rb_ary_to_ary(), rb_check_argv(), rb_econv_init_by_convpath(), rb_exec_arg_addopt(), rb_hash_s_create(), rb_io_puts(), rb_io_s_popen(), rb_reg_s_union_m(), rb_str_format_m(), rb_yield_splat(), sock_s_getnameinfo(), syck_seq_value_set(), take_items(), time_timespec(), vm_yield_setup_block_args(), wdivmod(), and yaml_org_handler().

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

Definition at line 2259 of file array.c.

References argc, FIX2LONG, FIXNUM_P, func, i, len, NUM2LONG(), Qfalse, Qnil, rb_ary_new2(), rb_ary_push(), rb_range_beg_len(), and result.

Referenced by match_values_at(), rb_ary_values_at(), and rb_struct_values_at().

void rb_mem_clear | ( | register VALUE * | mem,
|  | register long | size
| ) |  |

Definition at line 35 of file array.c.

References Qnil.

Referenced by rb_ary_fill(), rb_ary_resize(), rb_ary_shift_m(), rb_ary_splice(), rb_ary_store(), rb_struct_initialize_m(), and struct_alloc().

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

static

Definition at line 4337 of file array.c.

References ARY_SET_LEN, RARRAY_PTR, rb_ary_new2(), rb_eRuntimeError, rb_raise(), rb_yield(), RBASIC, and result.

Referenced by rb_ary_repeated_combination().

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

static

Definition at line 3272 of file array.c.

References i, id_cmp, INT2FIX, len, Qundef, RARRAY_LEN, rb_ary_elt(), rb_funcall(), and v.

Referenced by rb_ary_cmp().

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

static

Definition at line 3180 of file array.c.

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

Referenced by rb_ary_eql().

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

static

Definition at line 3139 of file array.c.

References i, Qfalse, Qtrue, RARRAY_LEN, rb_ary_elt(), and rb_equal().

Referenced by rb_ary_equal().

static VALUE recursive_hash | ( | VALUE | ary,
|  | VALUE | dummy,
|  | int | recur
| ) |  |

static

Definition at line 3210 of file array.c.

References i, LONG2FIX, NUM2LONG(), RARRAY_LEN, RARRAY_PTR, rb_cArray, rb_hash(), rb_hash_end(), rb_hash_start(), and rb_hash_uint().

Referenced by rb_ary_hash().

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

static

Definition at line 1599 of file array.c.

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

Referenced by ary_join_1().

static long rotate_count | ( | long | cnt,
|  | long | len
| ) |  |

inline static

Definition at line 1897 of file array.c.

References len.

Referenced by rb_ary_rotate(), and rb_ary_rotate_m().

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

static

Definition at line 4255 of file array.c.

References ARY_SET_LEN, i, RARRAY_PTR, rb_ary_new2(), rb_eRuntimeError, rb_raise(), rb_yield(), RBASIC, and result.

Referenced by rb_ary_repeated_permutation().

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

static

Definition at line 2025 of file array.c.

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

Referenced by rb_ary_sort_bang().

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

static

Definition at line 2039 of file array.c.

References ary_sort_data::ary, bp, FIXNUM_P, id_cmp, long, rb_cmpint(), rb_funcall(), rb_str_cmp(), SORT_OPTIMIZABLE, sort_reentered(), and STRING_P.

Referenced by rb_ary_sort_bang().

static VALUE sort_by_i | ( | VALUE | i | ) |

static

Definition at line 2164 of file array.c.

References rb_yield().

Referenced by rb_ary_sort_by_bang().

static VALUE sort_reentered | ( | VALUE | ary | ) |

static

Definition at line 2016 of file array.c.

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

Referenced by sort_1(), and sort_2().

static VALUE take_i | ( | VALUE | val,
|  | VALUE * | args,
|  | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 2674 of file array.c.

References Qnil, rb_ary_new4(), rb_ary_push(), and rb_iter_break().

Referenced by take_items().

static VALUE take_items | ( | VALUE | obj,
|  | long | n
| ) |  |

static

Definition at line 2683 of file array.c.

References args, NIL_P, rb_ary_new2(), rb_ary_subseq(), rb_block_call, rb_check_array_type(), rb_intern, result, and take_i().

Referenced by rb_ary_zip().

static VALUE to_ary | ( | VALUE | ary | ) |

static

Definition at line 466 of file array.c.

References rb_convert_type(), and T_ARRAY.

Referenced by rb_ary_and(), rb_ary_concat(), rb_ary_diff(), rb_ary_or(), rb_ary_plus(), rb_ary_product(), rb_ary_replace(), and rb_ary_transpose().

## Variable Documentation

ID id_cmp

static

Definition at line 29 of file array.c.

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

VALUE rb_cArray

Definition at line 27 of file array.c.

Referenced by ary_take_first_or_last(), bmcall(), enum_sort_by(), Init_Array(), Init_pack(), Init_resize(), ossl_asn1cons_to_der(), ossl_asn1data_to_der(), rb_ary_new2(), rb_ary_permutation(), rb_ary_repeated_combination(), rb_ary_repeated_permutation(), rb_ary_sample(), rb_ary_sort_bang(), rb_ary_to_a(), recursive_hash(), syck_resolver_node_import(), w_object(), and yyparse().

VALUE rb_output_fs

Definition at line 460 of file intern.h.

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

VALUE sym_random

static

Definition at line 3827 of file array.c.