Ruby 1.9.2p136(2010-12-25revision30365)

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

Data Structures | Defines | Typedefs | Functions | Variables

# hash.c File Reference

`#include "ruby/ruby.h"`
`#include "ruby/st.h"`
`#include "ruby/util.h"`
`#include <errno.h>`
Include dependency graph for hash.c:

Go to the source code of this file.

## Data Structures
struct | foreach_safe_arg
struct | hash_foreach_arg
struct | shift_var
struct | equal_data
## Defines
#define | HASH_DELETED FL_USER1
#define | HASH_PROC_DEFAULT FL_USER2
#define | GET_ENVIRON(e) (e)
#define | FREE_ENVIRON(e)
#define | ENVMATCH(n1, n2) (strcmp(n1, n2) == 0)
#define | ENVNMATCH(s1, s2, n) (memcmp(s1, s2, n) == 0)
#define | rb_intern(str) rb_intern_const(str)
## Typedefs
typedef int | st_foreach_func (st_data_t, st_data_t, st_data_t)
typedef int | rb_foreach_func (VALUE, VALUE, VALUE)
## Functions
static VALUE | rb_hash_s_try_convert (VALUE, VALUE)
VALUE | rb_hash_freeze (VALUE hash)
static int | rb_any_cmp (VALUE a, VALUE b)
VALUE | rb_hash (VALUE obj)
static st_index_t | rb_any_hash (VALUE a)
static int | foreach_safe_i (st_data_t key, st_data_t value, struct foreach_safe_arg *arg)
void | st_foreach_safe (st_table *table, int(*func)(ANYARGS), st_data_t a)
static int | hash_foreach_iter (st_data_t key, st_data_t value, struct hash_foreach_arg *arg)
static VALUE | hash_foreach_ensure (VALUE hash)
static VALUE | hash_foreach_call (struct hash_foreach_arg *arg)
void | rb_hash_foreach (VALUE hash, int(*func)(ANYARGS), VALUE farg)
static VALUE | hash_alloc (VALUE klass)
VALUE | rb_hash_new (void)
VALUE | rb_hash_dup (VALUE hash)
static void | rb_hash_modify_check (VALUE hash)
struct st_table * | rb_hash_tbl (VALUE hash)
static void | rb_hash_modify (VALUE hash)
static void | hash_update (VALUE hash, VALUE key)
static void | default_proc_arity_check (VALUE proc)
static VALUE | rb_hash_initialize (int argc, VALUE *argv, VALUE hash)
static VALUE | rb_hash_s_create (int argc, VALUE *argv, VALUE klass)
static VALUE | to_hash (VALUE hash)
static int | rb_hash_rehash_i (VALUE key, VALUE value, VALUE arg)
static VALUE | rb_hash_rehash (VALUE hash)
VALUE | rb_hash_aref (VALUE hash, VALUE key)
VALUE | rb_hash_lookup2 (VALUE hash, VALUE key, VALUE def)
VALUE | rb_hash_lookup (VALUE hash, VALUE key)
static VALUE | rb_hash_fetch_m (int argc, VALUE *argv, VALUE hash)
VALUE | rb_hash_fetch (VALUE hash, VALUE key)
static VALUE | rb_hash_default (int argc, VALUE *argv, VALUE hash)
static VALUE | rb_hash_set_default (VALUE hash, VALUE ifnone)
static VALUE | rb_hash_default_proc (VALUE hash)
VALUE | rb_obj_is_proc (VALUE proc)
static VALUE | rb_hash_set_default_proc (VALUE hash, VALUE proc)
static int | key_i (VALUE key, VALUE value, VALUE arg)
static VALUE | rb_hash_key (VALUE hash, VALUE value)
static VALUE | rb_hash_index (VALUE hash, VALUE value)
static VALUE | rb_hash_delete_key (VALUE hash, VALUE key)
VALUE | rb_hash_delete (VALUE hash, VALUE key)
static int | shift_i (VALUE key, VALUE value, VALUE arg)
static int | shift_i_safe (VALUE key, VALUE value, VALUE arg)
static VALUE | rb_hash_shift (VALUE hash)
static int | delete_if_i (VALUE key, VALUE value, VALUE hash)
VALUE | rb_hash_delete_if (VALUE hash)
VALUE | rb_hash_reject_bang (VALUE hash)
static VALUE | rb_hash_reject (VALUE hash)
VALUE | rb_hash_values_at (int argc, VALUE *argv, VALUE hash)
static int | select_i (VALUE key, VALUE value, VALUE result)
VALUE | rb_hash_select (VALUE hash)
static int | keep_if_i (VALUE key, VALUE value, VALUE hash)
VALUE | rb_hash_select_bang (VALUE hash)
VALUE | rb_hash_keep_if (VALUE hash)
static int | clear_i (VALUE key, VALUE value, VALUE dummy)
static VALUE | rb_hash_clear (VALUE hash)
VALUE | rb_hash_aset (VALUE hash, VALUE key, VALUE val)
static int | replace_i (VALUE key, VALUE val, VALUE hash)
static VALUE | rb_hash_replace (VALUE hash, VALUE hash2)
static VALUE | rb_hash_size (VALUE hash)
static VALUE | rb_hash_empty_p (VALUE hash)
static int | each_value_i (VALUE key, VALUE value)
static VALUE | rb_hash_each_value (VALUE hash)
static int | each_key_i (VALUE key, VALUE value)
static VALUE | rb_hash_each_key (VALUE hash)
static int | each_pair_i (VALUE key, VALUE value)
static VALUE | rb_hash_each_pair (VALUE hash)
static int | to_a_i (VALUE key, VALUE value, VALUE ary)
static VALUE | rb_hash_to_a (VALUE hash)
static int | inspect_i (VALUE key, VALUE value, VALUE str)
static VALUE | inspect_hash (VALUE hash, VALUE dummy, int recur)
static VALUE | rb_hash_inspect (VALUE hash)
static VALUE | rb_hash_to_hash (VALUE hash)
static int | keys_i (VALUE key, VALUE value, VALUE ary)
static VALUE | rb_hash_keys (VALUE hash)
static int | values_i (VALUE key, VALUE value, VALUE ary)
static VALUE | rb_hash_values (VALUE hash)
static VALUE | rb_hash_has_key (VALUE hash, VALUE key)
static int | rb_hash_search_value (VALUE key, VALUE value, VALUE arg)
static VALUE | rb_hash_has_value (VALUE hash, VALUE val)
static int | eql_i (VALUE key, VALUE val1, VALUE arg)
static VALUE | recursive_eql (VALUE hash, VALUE dt, int recur)
static VALUE | hash_equal (VALUE hash1, VALUE hash2, int eql)
static VALUE | rb_hash_equal (VALUE hash1, VALUE hash2)
static VALUE | rb_hash_eql (VALUE hash1, VALUE hash2)
static int | hash_i (VALUE key, VALUE val, VALUE arg)
static VALUE | recursive_hash (VALUE hash, VALUE dummy, int recur)
static VALUE | rb_hash_hash (VALUE hash)
static int | rb_hash_invert_i (VALUE key, VALUE value, VALUE hash)
static VALUE | rb_hash_invert (VALUE hash)
static int | rb_hash_update_i (VALUE key, VALUE value, VALUE hash)
static int | rb_hash_update_block_i (VALUE key, VALUE value, VALUE hash)
static VALUE | rb_hash_update (VALUE hash1, VALUE hash2)
static VALUE | rb_hash_merge (VALUE hash1, VALUE hash2)
static int | assoc_i (VALUE key, VALUE val, VALUE arg)
VALUE | rb_hash_assoc (VALUE hash, VALUE obj)
static int | rassoc_i (VALUE key, VALUE val, VALUE arg)
VALUE | rb_hash_rassoc (VALUE hash, VALUE obj)
static VALUE | rb_hash_flatten (int argc, VALUE *argv, VALUE hash)
static VALUE | rb_hash_compare_by_id (VALUE hash)
static VALUE | rb_hash_compare_by_id_p (VALUE hash)
static VALUE | env_str_new (const char *ptr, long len)
static VALUE | env_str_new2 (const char *ptr)
static VALUE | env_delete (VALUE obj, VALUE name)
static VALUE | env_delete_m (VALUE obj, VALUE name)
static int | env_path_tainted (const char *)
static VALUE | rb_f_getenv (VALUE obj, VALUE name)
static VALUE | env_fetch (int argc, VALUE *argv)
static void | path_tainted_p (const char *path)
int | rb_env_path_tainted (void)
static int | envix (const char *nam)
void | ruby_setenv (const char *name, const char *value)
void | ruby_unsetenv (const char *name)
static VALUE | env_aset (VALUE obj, VALUE nm, VALUE val)
static VALUE | env_keys (void)
static VALUE | env_each_key (VALUE ehash)
static VALUE | env_values (void)
static VALUE | env_each_value (VALUE ehash)
static VALUE | env_each_pair (VALUE ehash)
static VALUE | env_reject_bang (VALUE ehash)
static VALUE | env_delete_if (VALUE ehash)
static VALUE | env_values_at (int argc, VALUE *argv)
static VALUE | env_select (VALUE ehash)
static VALUE | env_select_bang (VALUE ehash)
static VALUE | env_keep_if (VALUE ehash)
VALUE | rb_env_clear (void)
static VALUE | env_to_s (void)
static VALUE | env_inspect (void)
static VALUE | env_to_a (void)
static VALUE | env_none (void)
static VALUE | env_size (void)
static VALUE | env_empty_p (void)
static VALUE | env_has_key (VALUE env, VALUE key)
static VALUE | env_assoc (VALUE env, VALUE key)
static VALUE | env_has_value (VALUE dmy, VALUE obj)
static VALUE | env_rassoc (VALUE dmy, VALUE obj)
static VALUE | env_key (VALUE dmy, VALUE value)
static VALUE | env_index (VALUE dmy, VALUE value)
static VALUE | env_to_hash (void)
static VALUE | env_reject (void)
static VALUE | env_shift (void)
static VALUE | env_invert (void)
static int | env_replace_i (VALUE key, VALUE val, VALUE keys)
static VALUE | env_replace (VALUE env, VALUE hash)
static int | env_update_i (VALUE key, VALUE val)
static VALUE | env_update (VALUE env, VALUE hash)
void | Init_Hash (void)
## Variables
VALUE | rb_cHash
static VALUE | envtbl
static ID | id_hash
static ID | id_yield
static ID | id_default
static struct st_hash_type | objhash
static struct st_hash_type | identhash
static int | path_tainted = -1
static char ** | origenviron
char ** | environ

## Define Documentation

#define ENVMATCH | ( |  | n1,
|  |  | n2
| ) |  | (strcmp(n1, n2) == 0)

Definition at line 1969 of file hash.c.

Referenced by env_aset(), env_delete(), env_fetch(), and rb_f_getenv().

#define ENVNMATCH | ( |  | s1,
|  |  | s2,
|  |  | n
| ) |  | (memcmp(s1, s2, n) == 0)

Definition at line 1970 of file hash.c.

Referenced by envix().

#define FREE_ENVIRON | ( |  | e | ) |

Definition at line 1963 of file hash.c.

Referenced by env_each_pair(), env_empty_p(), env_has_value(), env_inspect(), env_key(), env_keys(), env_rassoc(), env_select(), env_shift(), env_size(), env_to_a(), env_to_hash(), env_values(), and envix().

#define GET_ENVIRON | ( |  | e | ) | (e)

Definition at line 1962 of file hash.c.

Referenced by env_each_pair(), env_empty_p(), env_has_value(), env_inspect(), env_key(), env_keys(), env_rassoc(), env_select(), env_shift(), env_size(), env_to_a(), env_to_hash(), env_values(), envix(), and ruby_setenv().

#define HASH_DELETED FL_USER1

Definition at line 25 of file hash.c.

Referenced by hash_foreach_ensure(), hash_foreach_iter(), and rb_hash_delete_key().

#define HASH_PROC_DEFAULT FL_USER2

Definition at line 26 of file hash.c.

Referenced by hash_equal(), rb_hash_default(), rb_hash_default_proc(), rb_hash_dup(), rb_hash_initialize(), rb_hash_replace(), rb_hash_set_default(), rb_hash_set_default_proc(), and rb_hash_shift().

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

## Typedef Documentation

typedef int rb_foreach_func(VALUE, VALUE, VALUE)

Definition at line 147 of file hash.c.

typedef int st_foreach_func(st_data_t, st_data_t, st_data_t)

Definition at line 113 of file hash.c.

## Function Documentation

static int assoc_i | ( | VALUE | key,
|  | VALUE | val,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 1796 of file hash.c.

References Qundef, rb_assoc_new(), rb_equal(), RTEST, ST_CONTINUE, and ST_STOP.

Referenced by rb_hash_assoc().

static int clear_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | dummy
| ) |  | `[static]`

Definition at line 1059 of file hash.c.

References ST_DELETE.

Referenced by rb_hash_clear().

static void default_proc_arity_check | ( | VALUE | proc | ) | `[static]`

Definition at line 281 of file hash.c.

References rb_eTypeError, rb_proc_arity(), rb_proc_lambda_p(), and rb_raise().

Referenced by rb_hash_initialize(), and rb_hash_set_default_proc().

static int delete_if_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 873 of file hash.c.

References Qundef, rb_hash_delete_key(), rb_yield_values(), RTEST, and ST_CONTINUE.

Referenced by rb_hash_delete_if(), and rb_hash_reject_bang().

static int each_key_i | ( | VALUE | key,
|  | VALUE | value
| ) |  | `[static]`

Definition at line 1242 of file hash.c.

References Qundef, rb_yield(), and ST_CONTINUE.

Referenced by rb_hash_each_key().

static int each_pair_i | ( | VALUE | key,
|  | VALUE | value
| ) |  | `[static]`

Definition at line 1276 of file hash.c.

References Qundef, rb_assoc_new(), rb_yield(), and ST_CONTINUE.

Referenced by rb_hash_each_pair().

static int each_value_i | ( | VALUE | key,
|  | VALUE | value
| ) |  | `[static]`

Definition at line 1207 of file hash.c.

References Qundef, rb_yield(), and ST_CONTINUE.

Referenced by rb_hash_each_value().

static VALUE env_aset | ( | VALUE | obj,
|  | VALUE | nm,
|  | VALUE | val
| ) |  | `[static]`

Definition at line 2250 of file hash.c.

References env_delete(), ENVMATCH, name, NIL_P, OBJ_TAINTED, PATH_ENV, path_tainted_p(), Qnil, rb_eArgError, rb_eSecurityError, rb_raise(), rb_safe_level, RSTRING_LEN, RSTRING_PTR, ruby_setenv(), and StringValue.

Referenced by env_replace_i(), env_update_i(), and Init_Hash().

static VALUE env_assoc | ( | VALUE | env,
|  | VALUE | key
| ) |  | `[static]`

Definition at line 2606 of file hash.c.

References getenv(), Qnil, rb_assoc_new(), rb_eArgError, rb_raise(), rb_secure(), rb_tainted_str_new2(), RSTRING_LEN, and StringValuePtr.

Referenced by Init_Hash().

static VALUE env_delete | ( | VALUE | obj,
|  | VALUE | name
| ) |  | `[static]`

Definition at line 1990 of file hash.c.

References env_str_new2(), ENVMATCH, getenv(), PATH_ENV, Qnil, rb_eArgError, rb_raise(), rb_secure(), RSTRING_LEN, RSTRING_PTR, ruby_setenv(), and SafeStringValue.

Referenced by env_aset(), env_delete_m(), env_reject_bang(), env_replace(), env_select_bang(), env_shift(), and rb_env_clear().

static VALUE env_delete_if | ( | VALUE | ehash | ) | `[static]`

Definition at line 2405 of file hash.c.

References env_reject_bang(), envtbl, and RETURN_ENUMERATOR.

Referenced by Init_Hash().

static VALUE env_delete_m | ( | VALUE | obj,
|  | VALUE | name
| ) |  | `[static]`

Definition at line 2014 of file hash.c.

References env_delete(), NIL_P, rb_block_given_p(), and rb_yield().

Referenced by Init_Hash().

static VALUE env_each_key | ( | VALUE | ehash | ) | `[static]`

Definition at line 2306 of file hash.c.

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

Referenced by Init_Hash().

static VALUE env_each_pair | ( | VALUE | ehash | ) | `[static]`

Definition at line 2354 of file hash.c.

References env_str_new(), env_str_new2(), FREE_ENVIRON, GET_ENVIRON, RARRAY_LEN, RARRAY_PTR, rb_ary_new(), rb_ary_push(), rb_assoc_new(), rb_secure(), rb_yield(), RETURN_ENUMERATOR, and strchr().

Referenced by Init_Hash().

static VALUE env_each_value | ( | VALUE | ehash | ) | `[static]`

Definition at line 2340 of file hash.c.

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

Referenced by Init_Hash().

static VALUE env_empty_p | ( | void |  | ) | `[static]`

Definition at line 2578 of file hash.c.

References FREE_ENVIRON, GET_ENVIRON, Qfalse, Qtrue, and rb_secure().

Referenced by Init_Hash().

static VALUE env_fetch | ( | int | argc,
|  | VALUE * | argv
| ) |  | `[static]`

Definition at line 2050 of file hash.c.

References env, env_path_tainted(), env_str_new2(), ENVMATCH, getenv(), PATH_ENV, rb_block_given_p(), rb_eArgError, rb_eKeyError, rb_filesystem_str_new_cstr(), rb_raise(), rb_scan_args(), rb_secure(), rb_warn(), rb_yield(), RSTRING_LEN, RSTRING_PTR, and SafeStringValue.

Referenced by Init_Hash().

static VALUE env_has_key | ( | VALUE | env,
|  | VALUE | key
| ) |  | `[static]`

Definition at line 2593 of file hash.c.

References getenv(), Qfalse, Qtrue, rb_eArgError, rb_raise(), rb_secure(), RSTRING_LEN, and StringValuePtr.

Referenced by Init_Hash().

static VALUE env_has_value | ( | VALUE | dmy,
|  | VALUE | obj
| ) |  | `[static]`

Definition at line 2620 of file hash.c.

References FREE_ENVIRON, GET_ENVIRON, len, NIL_P, Qfalse, Qnil, Qtrue, rb_check_string_type(), rb_secure(), RSTRING_LEN, RSTRING_PTR, and strchr().

Referenced by Init_Hash().

static VALUE env_index | ( | VALUE | dmy,
|  | VALUE | value
| ) |  | `[static]`

Definition at line 2694 of file hash.c.

References env_key(), and rb_warn().

Referenced by Init_Hash().

static VALUE env_inspect | ( | void |  | ) | `[static]`

Definition at line 2506 of file hash.c.

References FREE_ENVIRON, GET_ENVIRON, OBJ_TAINT, rb_inspect(), rb_secure(), rb_str_buf_append(), rb_str_buf_cat(), rb_str_buf_cat2(), rb_str_buf_new2(), rb_str_new2(), and strchr().

Referenced by Init_Hash().

static VALUE env_invert | ( | void |  | ) | `[static]`

Definition at line 2748 of file hash.c.

References env_to_hash(), and rb_hash_invert().

Referenced by Init_Hash().

static VALUE env_keep_if | ( | VALUE | ehash | ) | `[static]`

Definition at line 2476 of file hash.c.

References env_select_bang(), envtbl, and RETURN_ENUMERATOR.

Referenced by Init_Hash().

static VALUE env_key | ( | VALUE | dmy,
|  | VALUE | value
| ) |  | `[static]`

Definition at line 2669 of file hash.c.

References env_str_new(), FREE_ENVIRON, GET_ENVIRON, len, Qnil, rb_secure(), RSTRING_LEN, RSTRING_PTR, strchr(), and StringValue.

Referenced by env_index(), and Init_Hash().

static VALUE env_keys | ( | void |  | ) | `[static]`

Definition at line 2286 of file hash.c.

References env_str_new(), FREE_ENVIRON, GET_ENVIRON, rb_ary_new(), rb_ary_push(), rb_secure(), and strchr().

Referenced by env_each_key(), env_reject_bang(), env_replace(), env_select_bang(), Init_Hash(), and rb_env_clear().

static VALUE env_none | ( | void |  | ) | `[static]`

Definition at line 2558 of file hash.c.

References Qnil.

Referenced by Init_Hash().

static int env_path_tainted | ( | const char * | path | ) | `[static]`

Definition at line 2087 of file hash.c.

References path_tainted, and path_tainted_p().

Referenced by env_fetch(), and rb_f_getenv().

static VALUE env_rassoc | ( | VALUE | dmy,
|  | VALUE | obj
| ) |  | `[static]`

Definition at line 2644 of file hash.c.

References FREE_ENVIRON, GET_ENVIRON, len, NIL_P, Qnil, rb_assoc_new(), rb_check_string_type(), rb_secure(), rb_tainted_str_new(), result, RSTRING_LEN, RSTRING_PTR, and strchr().

Referenced by Init_Hash().

static VALUE env_reject | ( | void |  | ) | `[static]`

Definition at line 2722 of file hash.c.

References env_to_hash(), and rb_hash_delete_if().

Referenced by Init_Hash().

static VALUE env_reject_bang | ( | VALUE | ehash | ) | `[static]`

Definition at line 2382 of file hash.c.

References env_delete(), env_keys(), envtbl, FL_TAINT, FL_UNSET, NIL_P, Qnil, RARRAY_LEN, RARRAY_PTR, rb_f_getenv(), rb_yield_values(), RETURN_ENUMERATOR, and RTEST.

Referenced by env_delete_if(), and Init_Hash().

static VALUE env_replace | ( | VALUE | env,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 2766 of file hash.c.

References env_delete(), env_keys(), env_replace_i(), RARRAY_LEN, RARRAY_PTR, rb_hash_foreach(), and to_hash().

Referenced by Init_Hash().

static int env_replace_i | ( | VALUE | key,
|  | VALUE | val,
|  | VALUE | keys
| ) |  | `[static]`

Definition at line 2754 of file hash.c.

References env_aset(), Qnil, Qundef, rb_ary_delete(), rb_ary_includes(), and ST_CONTINUE.

Referenced by env_replace().

static VALUE env_select | ( | VALUE | ehash | ) | `[static]`

Definition at line 2427 of file hash.c.

References env_str_new(), env_str_new2(), FREE_ENVIRON, GET_ENVIRON, rb_hash_aset(), rb_hash_new(), rb_secure(), rb_yield_values(), result, RETURN_ENUMERATOR, RTEST, and strchr().

Referenced by Init_Hash().

static VALUE env_select_bang | ( | VALUE | ehash | ) | `[static]`

Definition at line 2453 of file hash.c.

References env_delete(), env_keys(), envtbl, FL_TAINT, FL_UNSET, NIL_P, Qnil, RARRAY_LEN, RARRAY_PTR, rb_f_getenv(), rb_yield_values(), RETURN_ENUMERATOR, and RTEST.

Referenced by env_keep_if(), and Init_Hash().

static VALUE env_shift | ( | void |  | ) | `[static]`

Definition at line 2728 of file hash.c.

References env_delete(), env_str_new(), env_str_new2(), FREE_ENVIRON, GET_ENVIRON, getenv(), Qnil, rb_assoc_new(), rb_secure(), RSTRING_PTR, and strchr().

Referenced by Init_Hash().

static VALUE env_size | ( | void |  | ) | `[static]`

Definition at line 2564 of file hash.c.

References FREE_ENVIRON, GET_ENVIRON, INT2FIX, and rb_secure().

Referenced by Init_Hash().

static VALUE env_str_new | ( | const char * | ptr,
|  | long | len
| ) |  | `[static]`

Definition at line 1974 of file hash.c.

References rb_locale_str_new(), and rb_obj_freeze().

Referenced by env_each_pair(), env_key(), env_keys(), env_select(), env_shift(), env_str_new2(), env_to_a(), and env_to_hash().

static VALUE env_str_new2 | ( | const char * | ptr | ) | `[static]`

Definition at line 1983 of file hash.c.

References env_str_new(), and Qnil.

Referenced by env_delete(), env_each_pair(), env_fetch(), env_select(), env_shift(), env_to_a(), env_to_hash(), env_values(), and rb_f_getenv().

static VALUE env_to_a | ( | void |  | ) | `[static]`

Definition at line 2537 of file hash.c.

References env_str_new(), env_str_new2(), FREE_ENVIRON, GET_ENVIRON, rb_ary_new(), rb_ary_push(), rb_assoc_new(), rb_secure(), and strchr().

Referenced by Init_Hash().

static VALUE env_to_hash | ( | void |  | ) | `[static]`

Definition at line 2701 of file hash.c.

References env_str_new(), env_str_new2(), FREE_ENVIRON, GET_ENVIRON, hash(), rb_hash_aset(), rb_hash_new(), rb_secure(), and strchr().

Referenced by env_invert(), env_reject(), and Init_Hash().

static VALUE env_to_s | ( | void |  | ) | `[static]`

Definition at line 2500 of file hash.c.

References rb_usascii_str_new2().

Referenced by Init_Hash().

static VALUE env_update | ( | VALUE | env,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 2795 of file hash.c.

References env_update_i(), rb_hash_foreach(), rb_secure(), and to_hash().

Referenced by Init_Hash().

static int env_update_i | ( | VALUE | key,
|  | VALUE | val
| ) |  | `[static]`

Definition at line 2783 of file hash.c.

References env_aset(), Qnil, Qundef, rb_block_given_p(), rb_f_getenv(), rb_yield_values(), and ST_CONTINUE.

Referenced by env_update().

static VALUE env_values | ( | void |  | ) | `[static]`

Definition at line 2320 of file hash.c.

References env_str_new2(), FREE_ENVIRON, GET_ENVIRON, rb_ary_new(), rb_ary_push(), rb_secure(), and strchr().

Referenced by env_each_value(), and Init_Hash().

static VALUE env_values_at | ( | int | argc,
|  | VALUE * | argv
| ) |  | `[static]`

Definition at line 2413 of file hash.c.

References argc, Qnil, rb_ary_new(), rb_ary_push(), rb_f_getenv(), rb_secure(), and result.

Referenced by Init_Hash().

static int envix | ( | const char * | nam | ) | `[static]`

Definition at line 2117 of file hash.c.

References ENVNMATCH, FREE_ENVIRON, GET_ENVIRON, and len.

Referenced by ruby_setenv().

static int eql_i | ( | VALUE | key,
|  | VALUE | val1,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 1542 of file hash.c.

References equal_data::eql, Qfalse, Qundef, rb_eql(), rb_equal(), equal_data::result, ST_CONTINUE, st_lookup, ST_STOP, and equal_data::tbl.

Referenced by recursive_eql().

static int foreach_safe_i | ( | st_data_t | key,
|  | st_data_t | value,
|  | struct foreach_safe_arg * | arg
| ) |  | `[static]`

Definition at line 122 of file hash.c.

References foreach_safe_arg::arg, foreach_safe_arg::func, Qundef, ST_CHECK, and ST_CONTINUE.

Referenced by st_foreach_safe().

static VALUE hash_alloc | ( | VALUE | klass | ) | `[static]`

Definition at line 217 of file hash.c.

References hash(), NEWOBJ, OBJSETUP, Qnil, RHASH_IFNONE, and T_HASH.

Referenced by Init_Hash(), rb_hash_new(), and rb_hash_s_create().

static VALUE hash_equal | ( | VALUE | hash1,
|  | VALUE | hash2,
|  | int | eql
| ) |  | `[static]`

Definition at line 1573 of file hash.c.

References equal_data::eql, FL_TEST, HASH_PROC_DEFAULT, Qfalse, Qtrue, rb_eql(), rb_equal(), rb_exec_recursive_paired(), rb_intern, rb_respond_to(), recursive_eql(), RHASH, RHASH_IFNONE, RHASH_SIZE, T_HASH, equal_data::tbl, and TYPE.

Referenced by rb_hash_eql(), and rb_hash_equal().

static VALUE hash_foreach_call | ( | struct hash_foreach_arg * | arg | ) | `[static]`

Definition at line 194 of file hash.c.

References hash_foreach_arg::hash, hash_foreach_iter(), Qnil, rb_eRuntimeError, rb_raise(), RHASH, and st_foreach.

Referenced by rb_hash_foreach().

static VALUE hash_foreach_ensure | ( | VALUE | hash | ) | `[static]`

Definition at line 180 of file hash.c.

References FL_TEST, FL_UNSET, HASH_DELETED, Qundef, RHASH, and st_cleanup_safe.

Referenced by rb_hash_foreach().

static int hash_foreach_iter | ( | st_data_t | key,
|  | st_data_t | value,
|  | struct hash_foreach_arg * | arg
| ) |  | `[static]`

Definition at line 156 of file hash.c.

References hash_foreach_arg::arg, FL_SET, hash_foreach_arg::func, hash_foreach_arg::hash, HASH_DELETED, Qundef, rb_eRuntimeError, rb_raise(), RHASH, ST_CHECK, ST_CONTINUE, ST_DELETE, st_delete_safe, and ST_STOP.

Referenced by hash_foreach_call().

static int hash_i | ( | VALUE | key,
|  | VALUE | val,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 1644 of file hash.c.

References Qundef, rb_hash(), rb_hash_end(), rb_hash_start(), rb_hash_uint(), and ST_CONTINUE.

Referenced by recursive_hash().

static void hash_update | ( | VALUE | hash,
|  | VALUE | key
| ) |  | `[static]`

Definition at line 273 of file hash.c.

References rb_eRuntimeError, rb_raise(), RHASH, and st_lookup.

Referenced by rb_hash_aset(), rb_hash_update_block_i(), and rb_hash_update_i().

void Init_Hash | ( | void |  | ) |

Definition at line 2817 of file hash.c.

References env_aset(), env_assoc(), env_delete_if(), env_delete_m(), env_each_key(), env_each_pair(), env_each_value(), env_empty_p(), env_fetch(), env_has_key(), env_has_value(), env_index(), env_inspect(), env_invert(), env_keep_if(), env_key(), env_keys(), env_none(), env_rassoc(), env_reject(), env_reject_bang(), env_replace(), env_select(), env_select_bang(), env_shift(), env_size(), env_to_a(), env_to_hash(), env_to_s(), env_update(), env_values(), env_values_at(), environ, envtbl, hash_alloc(), id_default, id_hash, id_yield, rb_cHash, rb_cObject, rb_define_alias(), rb_define_alloc_func(), rb_define_class(), rb_define_global_const(), rb_define_method(), rb_define_singleton_method(), rb_env_clear(), rb_extend_object(), rb_f_getenv(), rb_hash_aref(), rb_hash_aset(), rb_hash_assoc(), rb_hash_clear(), rb_hash_compare_by_id(), rb_hash_compare_by_id_p(), rb_hash_default(), rb_hash_default_proc(), rb_hash_delete(), rb_hash_delete_if(), rb_hash_each_key(), rb_hash_each_pair(), rb_hash_each_value(), rb_hash_empty_p(), rb_hash_eql(), rb_hash_equal(), rb_hash_fetch_m(), rb_hash_flatten(), rb_hash_has_key(), rb_hash_has_value(), rb_hash_hash(), rb_hash_index(), rb_hash_initialize(), rb_hash_inspect(), rb_hash_invert(), rb_hash_keep_if(), rb_hash_key(), rb_hash_keys(), rb_hash_merge(), rb_hash_rassoc(), rb_hash_rehash(), rb_hash_reject(), rb_hash_reject_bang(), rb_hash_replace(), rb_hash_s_create(), rb_hash_s_try_convert(), rb_hash_select(), rb_hash_select_bang(), rb_hash_set_default(), rb_hash_set_default_proc(), rb_hash_shift(), rb_hash_size(), rb_hash_to_a(), rb_hash_to_hash(), rb_hash_update(), rb_hash_values(), rb_hash_values_at(), rb_include_module(), rb_intern, rb_mEnumerable, and rb_obj_alloc().

static VALUE inspect_hash | ( | VALUE | hash,
|  | VALUE | dummy,
|  | int | recur
| ) |  | `[static]`

Definition at line 1365 of file hash.c.

References inspect_i(), OBJ_INFECT, rb_hash_foreach(), rb_str_buf_cat2(), rb_str_buf_new2(), and rb_usascii_str_new2().

Referenced by rb_hash_inspect().

static int inspect_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | str
| ) |  | `[static]`

Definition at line 1345 of file hash.c.

References OBJ_INFECT, Qundef, rb_inspect(), rb_str_buf_append(), rb_str_buf_cat2(), rb_str_cat2(), RSTRING_LEN, and ST_CONTINUE.

Referenced by inspect_hash().

static int keep_if_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 1004 of file hash.c.

References Qundef, rb_yield_values(), RTEST, ST_CONTINUE, and ST_DELETE.

Referenced by rb_hash_keep_if(), and rb_hash_select_bang().

static int key_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 713 of file hash.c.

References rb_equal(), ST_CONTINUE, and ST_STOP.

Referenced by rb_hash_key().

static int keys_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | ary
| ) |  | `[static]`

Definition at line 1411 of file hash.c.

References Qundef, rb_ary_push(), and ST_CONTINUE.

Referenced by rb_hash_keys().

static void path_tainted_p | ( | const char * | path | ) | `[static]`

Definition at line 2081 of file hash.c.

References rb_path_check().

Referenced by env_aset(), env_path_tainted(), and rb_env_path_tainted().

static int rassoc_i | ( | VALUE | key,
|  | VALUE | val,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 1834 of file hash.c.

References Qundef, rb_assoc_new(), rb_equal(), RTEST, ST_CONTINUE, and ST_STOP.

Referenced by rb_hash_rassoc().

static int rb_any_cmp | ( | VALUE | a,
|  | VALUE | b
| ) |  | `[static]`

Definition at line 40 of file hash.c.

References FIXNUM_P, Qundef, rb_cString, rb_eql(), rb_str_hash_cmp(), RBASIC, SYMBOL_P, T_STRING, and TYPE.

static st_index_t rb_any_hash | ( | VALUE | a | ) | `[static]`

Definition at line 77 of file hash.c.

References FIX2LONG, rb_hash(), rb_hash_end(), rb_hash_start(), rb_str_hash(), T_FALSE, T_FIXNUM, T_NIL, T_STRING, T_SYMBOL, T_TRUE, and TYPE.

VALUE rb_env_clear | ( | void |  | ) |

Definition at line 2484 of file hash.c.

References env_delete(), env_keys(), envtbl, NIL_P, Qnil, RARRAY_LEN, RARRAY_PTR, and rb_f_getenv().

Referenced by Init_Hash(), and rb_run_exec_options_err().

int rb_env_path_tainted | ( | void |  | ) |

Definition at line 2096 of file hash.c.

References getenv(), PATH_ENV, path_tainted, and path_tainted_p().

Referenced by security().

static VALUE rb_f_getenv | ( | VALUE | obj,
|  | VALUE | name
| ) |  | `[static]`

Definition at line 2026 of file hash.c.

References env, env_path_tainted(), env_str_new2(), ENVMATCH, getenv(), PATH_ENV, Qnil, rb_eArgError, rb_filesystem_str_new_cstr(), rb_obj_freeze(), rb_raise(), rb_secure(), RSTRING_LEN, RSTRING_PTR, and SafeStringValue.

Referenced by env_reject_bang(), env_select_bang(), env_update_i(), env_values_at(), Init_Hash(), and rb_env_clear().

VALUE rb_hash | ( | VALUE | obj | ) |

Definition at line 59 of file hash.c.

References id_hash, LONG2FIX, rb_funcall(), rb_to_int(), RBIGNUM_DIGITS, T_BIGNUM, T_FIXNUM, and TYPE.

Referenced by cdhash_hash(), hash_i(), nucomp_hash(), nurat_hash(), rb_any_hash(), recursive_hash(), and time_hash().

VALUE rb_hash_aref | ( | VALUE | hash,
|  | VALUE | key
| ) |  |

Definition at line 501 of file hash.c.

References id_default, rb_funcall(), RHASH, and st_lookup.

Referenced by cbsubst_get_subst_arg(), cbsubst_scan_args(), cbsubst_sym_to_subst(), cParser_initialize(), cState_configure(), cto_i(), dir_initialize(), econv_opts(), econv_primitive_convert(), extract_binmode(), gc_profile_result(), generate_json(), group_by_i(), hash2ptr_dispparams(), hash2result(), Init_Hash(), iseq_compile_each(), JSON_parse_object(), mString_Extend_json_create(), open_key_args(), parse_main(), rb_econv_open_opts(), rb_econv_prepare_opts(), rb_hash_update_block_i(), rb_hash_values_at(), rb_io_extract_modeenc(), rb_io_initialize(), rb_str_sub_bang(), realpath_rec(), recursive_list_access(), str_gsub(), syck_emitter_emit(), syck_get_hash_aref(), syck_map_initialize(), syck_map_value_set(), syck_parser_load(), syck_parser_load_documents(), syck_resolver_transfer(), tk_do_callback(), tr_setup_table(), and transcode_loop().

VALUE rb_hash_aset | ( | VALUE | hash,
|  | VALUE | key,
|  | VALUE | val
| ) |  |

Definition at line 1110 of file hash.c.

References hash_update(), rb_cString, rb_hash_modify(), rb_obj_class(), rb_str_new4(), RHASH, st_insert, st_insert2(), and shift_var::val.

Referenced by ary_add_hash(), ary_add_hash_by(), cbsubst_table_setup(), check_exec_fds(), count_nodes(), count_objects(), count_objects_size(), coverage(), cState_to_h(), cto_i(), debug_lines(), env_select(), env_to_hash(), fdbm_invert(), fdbm_to_hash(), fgdbm_invert(), fgdbm_to_hash(), fsdbm_invert(), fsdbm_to_hash(), gc_profile_record_get(), group_by_i(), Init_Hash(), Init_ossl_x509name(), iseq_compile_each(), iseq_data_to_ary(), iseq_set_sequence(), JSON_parse_object(), lfp_svar_set(), mString_to_json_raw_object(), ole_const_load(), ossl_config_get_section(), ossl_dh_get_params(), ossl_dsa_get_params(), ossl_rsa_get_params(), ossl_sslctx_get_session_cache_stats(), r_object0(), rb_econv_prepare_opts(), rb_enc_aliases_enc_i(), rb_hash_invert_i(), rb_hash_s_create(), rb_syck_load_handler(), rb_w32_conv_from_wchar(), realpath_rec(), recursive_list_access(), recursive_push(), reg_named_captures_iter(), replace_i(), ripper_init_eventids1(), ripper_init_eventids2_table(), select_i(), set_zero(), set_zero_i(), sig_list(), syck_genericresolver_node_import(), syck_get_hash_aref(), syck_map_add_m(), syck_out_mark(), syck_resolver_add_type(), syck_resolver_node_import(), tk_install_cmd_core(), to_strkey(), tr_setup_table(), tr_trans(), and yaml_org_handler().

VALUE rb_hash_assoc | ( | VALUE | hash,
|  | VALUE | obj
| ) |  |

Definition at line 1823 of file hash.c.

References assoc_i(), Qnil, and rb_hash_foreach().

Referenced by Init_Hash().

static VALUE rb_hash_clear | ( | VALUE | hash | ) | `[static]`

Definition at line 1076 of file hash.c.

References clear_i(), hash(), rb_hash_foreach(), rb_hash_modify_check(), RHASH, and st_clear().

Referenced by Init_Hash(), and rb_hash_replace().

static VALUE rb_hash_compare_by_id | ( | VALUE | hash | ) | `[static]`

Definition at line 1918 of file hash.c.

References hash(), identhash, rb_hash_modify(), rb_hash_rehash(), and RHASH.

Referenced by Init_Hash().

static VALUE rb_hash_compare_by_id_p | ( | VALUE | hash | ) | `[static]`

Definition at line 1936 of file hash.c.

References Qfalse, Qtrue, and RHASH.

Referenced by Init_Hash().

static VALUE rb_hash_default | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 612 of file hash.c.

References FL_TEST, HASH_PROC_DEFAULT, id_yield, Qnil, rb_funcall(), rb_scan_args(), and RHASH_IFNONE.

Referenced by Init_Hash().

static VALUE rb_hash_default_proc | ( | VALUE | hash | ) | `[static]`

Definition at line 670 of file hash.c.

References FL_TEST, HASH_PROC_DEFAULT, Qnil, and RHASH_IFNONE.

Referenced by Init_Hash().

VALUE rb_hash_delete | ( | VALUE | hash,
|  | VALUE | key
| ) |  |

Definition at line 794 of file hash.c.

References Qnil, Qundef, rb_block_given_p(), rb_hash_delete_key(), rb_hash_modify(), and rb_yield().

Referenced by Init_Hash(), recursive_pop(), and tk_uninstall_cmd().

VALUE rb_hash_delete_if | ( | VALUE | hash | ) |

Definition at line 898 of file hash.c.

References delete_if_i(), hash(), rb_hash_foreach(), rb_hash_modify(), and RETURN_ENUMERATOR.

Referenced by env_reject(), fdbm_reject(), fgdbm_reject(), fsdbm_reject(), Init_Hash(), and rb_hash_reject().

static VALUE rb_hash_delete_key | ( | VALUE | hash,
|  | VALUE | key
| ) |  | `[static]`

Definition at line 758 of file hash.c.

References FL_SET, HASH_DELETED, Qundef, RHASH, st_delete, and st_delete_safe.

Referenced by delete_if_i(), rb_hash_delete(), and rb_hash_shift().

VALUE rb_hash_dup | ( | VALUE | hash | ) |

Definition at line 234 of file hash.c.

References DUPSETUP, FL_SET, FL_TEST, HASH_PROC_DEFAULT, NEWOBJ, RHASH, RHASH_EMPTY_P, RHASH_IFNONE, and st_copy.

static VALUE rb_hash_each_key | ( | VALUE | hash | ) | `[static]`

Definition at line 1268 of file hash.c.

References each_key_i(), hash(), rb_hash_foreach(), and RETURN_ENUMERATOR.

Referenced by Init_Hash().

static VALUE rb_hash_each_pair | ( | VALUE | hash | ) | `[static]`

Definition at line 1306 of file hash.c.

References each_pair_i(), hash(), rb_hash_foreach(), and RETURN_ENUMERATOR.

Referenced by Init_Hash().

static VALUE rb_hash_each_value | ( | VALUE | hash | ) | `[static]`

Definition at line 1234 of file hash.c.

References each_value_i(), hash(), rb_hash_foreach(), and RETURN_ENUMERATOR.

Referenced by Init_Hash().

static VALUE rb_hash_empty_p | ( | VALUE | hash | ) | `[static]`

Definition at line 1201 of file hash.c.

References Qfalse, Qtrue, and RHASH_EMPTY_P.

Referenced by Init_Hash().

static VALUE rb_hash_eql | ( | VALUE | hash1,
|  | VALUE | hash2
| ) |  | `[static]`

Definition at line 1638 of file hash.c.

References hash_equal(), and TRUE.

Referenced by Init_Hash().

static VALUE rb_hash_equal | ( | VALUE | hash1,
|  | VALUE | hash2
| ) |  | `[static]`

Definition at line 1624 of file hash.c.

References FALSE, and hash_equal().

Referenced by Init_Hash().

VALUE rb_hash_fetch | ( | VALUE | hash,
|  | VALUE | key
| ) |  |

Definition at line 585 of file hash.c.

References rb_hash_fetch_m().

static VALUE rb_hash_fetch_m | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 558 of file hash.c.

References NIL_P, rb_any_to_s(), rb_block_given_p(), rb_eKeyError, rb_inspect(), rb_protect(), rb_raise(), rb_scan_args(), rb_warn(), rb_yield(), RHASH, RSTRING_LEN, RSTRING_PTR, and st_lookup.

Referenced by Init_Hash(), and rb_hash_fetch().

static VALUE rb_hash_flatten | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 1887 of file hash.c.

References INT2FIX, rb_funcall2(), rb_hash_to_a(), and rb_intern.

Referenced by Init_Hash().

void rb_hash_foreach | ( | VALUE | hash,
|  | int(*)(ANYARGS) | func,
|  | VALUE | farg
| ) |  |

Definition at line 203 of file hash.c.

References hash_foreach_arg::arg, func, hash_foreach_arg::func, hash(), hash_foreach_arg::hash, hash_foreach_call(), hash_foreach_ensure(), rb_ensure(), and RHASH.

Referenced by cbsubst_def_attr_aliases(), env_replace(), env_update(), inspect_hash(), iseq_data_to_ary(), rb_hash_assoc(), rb_hash_clear(), rb_hash_delete_if(), rb_hash_each_key(), rb_hash_each_pair(), rb_hash_each_value(), rb_hash_has_value(), rb_hash_invert(), rb_hash_keep_if(), rb_hash_key(), rb_hash_keys(), rb_hash_rassoc(), rb_hash_rehash(), rb_hash_reject_bang(), rb_hash_replace(), rb_hash_select(), rb_hash_select_bang(), rb_hash_shift(), rb_hash_to_a(), rb_hash_update(), rb_hash_values(), recursive_eql(), recursive_hash(), and w_object().

VALUE rb_hash_freeze | ( | VALUE | hash | ) |

Definition at line 29 of file hash.c.

References rb_obj_freeze().

Referenced by rb_coverage_result(), and rb_econv_prepare_opts().

static VALUE rb_hash_has_key | ( | VALUE | hash,
|  | VALUE | key
| ) |  | `[static]`

Definition at line 1488 of file hash.c.

References Qfalse, Qtrue, RHASH, and st_lookup.

Referenced by Init_Hash(), and rb_hash_update_block_i().

static VALUE rb_hash_has_value | ( | VALUE | hash,
|  | VALUE | val
| ) |  | `[static]`

Definition at line 1525 of file hash.c.

References Qfalse, rb_hash_foreach(), rb_hash_search_value(), and shift_var::val.

Referenced by Init_Hash().

static VALUE rb_hash_hash | ( | VALUE | hash | ) | `[static]`

Definition at line 1677 of file hash.c.

References rb_exec_recursive_outer(), and recursive_hash().

Referenced by Init_Hash().

static VALUE rb_hash_index | ( | VALUE | hash,
|  | VALUE | value
| ) |  | `[static]`

Definition at line 751 of file hash.c.

References rb_hash_key(), and rb_warn().

Referenced by Init_Hash().

static VALUE rb_hash_initialize | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 327 of file hash.c.

References default_proc_arity_check(), FL_SET, hash(), HASH_PROC_DEFAULT, rb_block_given_p(), rb_block_proc(), rb_eArgError, rb_hash_modify(), rb_raise(), rb_scan_args(), and RHASH_IFNONE.

Referenced by Init_Hash().

static VALUE rb_hash_inspect | ( | VALUE | hash | ) | `[static]`

Definition at line 1390 of file hash.c.

References inspect_hash(), rb_exec_recursive(), rb_usascii_str_new2(), and RHASH_EMPTY_P.

Referenced by Init_Hash().

static VALUE rb_hash_invert | ( | VALUE | hash | ) | `[static]`

Definition at line 1703 of file hash.c.

References rb_hash_foreach(), rb_hash_invert_i(), and rb_hash_new().

Referenced by env_invert(), and Init_Hash().

static int rb_hash_invert_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 1683 of file hash.c.

References Qundef, rb_hash_aset(), and ST_CONTINUE.

Referenced by rb_hash_invert().

VALUE rb_hash_keep_if | ( | VALUE | hash | ) |

Definition at line 1050 of file hash.c.

References hash(), keep_if_i(), rb_hash_foreach(), rb_hash_modify(), and RETURN_ENUMERATOR.

Referenced by Init_Hash().

static VALUE rb_hash_key | ( | VALUE | hash,
|  | VALUE | value
| ) |  | `[static]`

Definition at line 737 of file hash.c.

References key_i(), Qnil, and rb_hash_foreach().

Referenced by Init_Hash(), and rb_hash_index().

static VALUE rb_hash_keys | ( | VALUE | hash | ) | `[static]`

Definition at line 1431 of file hash.c.

References keys_i(), rb_ary_new(), and rb_hash_foreach().

Referenced by Init_Hash().

VALUE rb_hash_lookup | ( | VALUE | hash,
|  | VALUE | key
| ) |  |

Definition at line 523 of file hash.c.

References Qnil, and rb_hash_lookup2().

VALUE rb_hash_lookup2 | ( | VALUE | hash,
|  | VALUE | key,
|  | VALUE | def
| ) |  |

Definition at line 512 of file hash.c.

References RHASH, and st_lookup.

Referenced by ary_add_hash_by(), rb_hash_lookup(), rb_io_extract_encoding_option(), recursive_check(), recursive_pop(), recursive_push(), and transcode_loop().

static VALUE rb_hash_merge | ( | VALUE | hash1,
|  | VALUE | hash2
| ) |  | `[static]`

Definition at line 1790 of file hash.c.

References rb_hash_update(), and rb_obj_dup().

Referenced by Init_Hash().

static void rb_hash_modify | ( | VALUE | hash | ) | `[static]`

Definition at line 266 of file hash.c.

References rb_hash_modify_check(), and rb_hash_tbl().

Referenced by rb_hash_aset(), rb_hash_compare_by_id(), rb_hash_delete(), rb_hash_delete_if(), rb_hash_initialize(), rb_hash_keep_if(), rb_hash_reject_bang(), rb_hash_select_bang(), rb_hash_set_default(), rb_hash_set_default_proc(), rb_hash_shift(), and rb_hash_update().

static void rb_hash_modify_check | ( | VALUE | hash | ) | `[static]`

Definition at line 249 of file hash.c.

References OBJ_FROZEN, OBJ_UNTRUSTED, rb_error_frozen(), rb_eSecurityError, rb_raise(), and rb_safe_level.

Referenced by rb_hash_clear(), rb_hash_modify(), rb_hash_rehash(), and rb_hash_replace().

VALUE rb_hash_new | ( | void |  | ) |

Definition at line 228 of file hash.c.

References hash_alloc(), and rb_cHash.

Referenced by allocate_cbsubst_info(), ary_tmp_hash_new(), check_exec_fds(), count_nodes(), count_objects(), count_objects_size(), count_tdata_objects(), create_encoding_table_core(), cState_to_h(), enum_group_by(), env_select(), env_to_hash(), fdbm_invert(), fdbm_to_hash(), fgdbm_invert(), fgdbm_to_hash(), fsdbm_invert(), fsdbm_to_hash(), gc_profile_record_get(), id_hash_new(), Init_iconv(), Init_ossl_x509name(), Init_tkutil(), Init_VM(), iseq_data_to_ary(), iseq_set_sequence(), JSON_parse_object(), lfp_svar_set(), make_compile_option_value(), mString_to_json_raw_object(), ole_const_load(), ossl_config_get_section(), ossl_dh_get_params(), ossl_dsa_get_params(), ossl_rsa_get_params(), ossl_sslctx_get_session_cache_stats(), r_object0(), rb_coverage_start(), rb_econv_prepare_opts(), rb_enc_aliases(), rb_hash_invert(), rb_hash_select(), rb_realpath_internal(), rb_reg_named_captures(), rb_w32_conv_from_wchar(), recursive_list_access(), recursive_push(), ripper_init_eventids1(), ripper_init_eventids2_table(), sig_list(), syck_emitter_reset(), syck_genericresolver_node_import(), syck_get_hash_aref(), syck_out_map(), syck_parser_initialize(), syck_parser_load(), syck_parser_load_documents(), syck_resolver_initialize(), syck_resolver_node_import(), tk_symbolkey2str(), tr_setup_table(), tr_trans(), and yaml_org_handler().

VALUE rb_hash_rassoc | ( | VALUE | hash,
|  | VALUE | obj
| ) |  |

Definition at line 1860 of file hash.c.

References Qnil, rassoc_i(), and rb_hash_foreach().

Referenced by Init_Hash().

static VALUE rb_hash_rehash | ( | VALUE | hash | ) | `[static]`

Definition at line 468 of file hash.c.

References hash(), rb_eRuntimeError, rb_hash_foreach(), rb_hash_modify_check(), rb_hash_rehash_i(), rb_raise(), RHASH, st_free_table, and st_init_table_with_size.

Referenced by Init_Hash(), and rb_hash_compare_by_id().

static int rb_hash_rehash_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 439 of file hash.c.

References Qundef, ST_CONTINUE, and st_insert.

Referenced by rb_hash_rehash().

static VALUE rb_hash_reject | ( | VALUE | hash | ) | `[static]`

Definition at line 941 of file hash.c.

References rb_hash_delete_if(), and rb_obj_dup().

Referenced by Init_Hash().

VALUE rb_hash_reject_bang | ( | VALUE | hash | ) |

Definition at line 916 of file hash.c.

References delete_if_i(), hash(), Qnil, rb_hash_foreach(), rb_hash_modify(), RETURN_ENUMERATOR, and RHASH.

Referenced by Init_Hash().

static VALUE rb_hash_replace | ( | VALUE | hash,
|  | VALUE | hash2
| ) |  | `[static]`

Definition at line 1146 of file hash.c.

References FL_SET, FL_TEST, FL_UNSET, hash(), HASH_PROC_DEFAULT, rb_hash_clear(), rb_hash_foreach(), rb_hash_modify_check(), rb_hash_tbl(), replace_i(), RHASH, RHASH_IFNONE, and to_hash().

Referenced by Init_Hash().

static VALUE rb_hash_s_create | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | klass
| ) |  | `[static]`

Definition at line 367 of file hash.c.

References argc, hash(), hash_alloc(), NIL_P, Qnil, RARRAY_LEN, RARRAY_PTR, rb_check_array_type(), rb_eArgError, rb_hash_aset(), rb_hash_s_try_convert(), rb_raise(), RHASH, and st_copy.

Referenced by Init_Hash().

static VALUE rb_hash_s_try_convert | ( | VALUE | dummy,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 433 of file hash.c.

References rb_check_convert_type(), and T_HASH.

Referenced by Init_Hash(), and rb_hash_s_create().

static int rb_hash_search_value | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 1499 of file hash.c.

References Qtrue, Qundef, rb_equal(), ST_CONTINUE, and ST_STOP.

Referenced by rb_hash_has_value().

VALUE rb_hash_select | ( | VALUE | hash | ) |

Definition at line 993 of file hash.c.

References rb_hash_foreach(), rb_hash_new(), result, RETURN_ENUMERATOR, and select_i().

Referenced by Init_Hash().

VALUE rb_hash_select_bang | ( | VALUE | hash | ) |

Definition at line 1023 of file hash.c.

References hash(), keep_if_i(), Qnil, rb_hash_foreach(), rb_hash_modify(), RETURN_ENUMERATOR, and RHASH.

Referenced by Init_Hash().

static VALUE rb_hash_set_default | ( | VALUE | hash,
|  | VALUE | ifnone
| ) |  | `[static]`

Definition at line 646 of file hash.c.

References FL_UNSET, HASH_PROC_DEFAULT, rb_hash_modify(), and RHASH_IFNONE.

Referenced by Init_Hash().

static VALUE rb_hash_set_default_proc | ( | VALUE | hash,
|  | VALUE | proc
| ) |  | `[static]`

Definition at line 694 of file hash.c.

References default_proc_arity_check(), FL_SET, HASH_PROC_DEFAULT, NIL_P, rb_check_convert_type(), rb_eTypeError, rb_hash_modify(), rb_obj_classname(), rb_obj_is_proc(), rb_raise(), RHASH_IFNONE, and T_DATA.

Referenced by Init_Hash().

static VALUE rb_hash_shift | ( | VALUE | hash | ) | `[static]`

Definition at line 849 of file hash.c.

References FL_TEST, HASH_PROC_DEFAULT, id_yield, shift_var::key, Qnil, Qundef, rb_assoc_new(), rb_funcall(), rb_hash_delete_key(), rb_hash_foreach(), rb_hash_modify(), RHASH, RHASH_IFNONE, shift_i(), and shift_i_safe().

Referenced by Init_Hash().

static VALUE rb_hash_size | ( | VALUE | hash | ) | `[static]`

Definition at line 1182 of file hash.c.

References INT2FIX, and RHASH.

Referenced by Init_Hash().

struct st_table* rb_hash_tbl | ( | VALUE | hash | ) | `[read]`

Definition at line 257 of file hash.c.

References RHASH, and st_init_table.

Referenced by iseq_set_sequence(), rb_hash_modify(), and rb_hash_replace().

static VALUE rb_hash_to_a | ( | VALUE | hash | ) | `[static]`

Definition at line 1333 of file hash.c.

References OBJ_INFECT, rb_ary_new(), rb_hash_foreach(), and to_a_i().

Referenced by Init_Hash(), and rb_hash_flatten().

static VALUE rb_hash_to_hash | ( | VALUE | hash | ) | `[static]`

Definition at line 1405 of file hash.c.

References hash().

Referenced by Init_Hash().

static VALUE rb_hash_update | ( | VALUE | hash1,
|  | VALUE | hash2
| ) |  | `[static]`

Definition at line 1756 of file hash.c.

References rb_block_given_p(), rb_hash_foreach(), rb_hash_modify(), rb_hash_update_block_i(), rb_hash_update_i(), and to_hash().

Referenced by Init_Hash(), and rb_hash_merge().

static int rb_hash_update_block_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 1721 of file hash.c.

References hash_update(), Qundef, rb_hash_aref(), rb_hash_has_key(), rb_yield_values(), RHASH, ST_CONTINUE, and st_insert.

Referenced by rb_hash_update().

static int rb_hash_update_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 1712 of file hash.c.

References hash_update(), Qundef, RHASH, ST_CONTINUE, and st_insert.

Referenced by rb_hash_update().

static VALUE rb_hash_values | ( | VALUE | hash | ) | `[static]`

Definition at line 1462 of file hash.c.

References rb_ary_new(), rb_hash_foreach(), and values_i().

Referenced by Init_Hash().

VALUE rb_hash_values_at | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | hash
| ) |  |

Definition at line 958 of file hash.c.

References argc, rb_ary_new2(), rb_ary_push(), rb_hash_aref(), and result.

Referenced by Init_Hash().

VALUE rb_obj_is_proc | ( | VALUE | proc | ) |

Definition at line 87 of file proc.c.

static VALUE recursive_eql | ( | VALUE | hash,
|  | VALUE | dt,
|  | int | recur
| ) |  | `[static]`

Definition at line 1560 of file hash.c.

References eql_i(), Qtrue, rb_hash_foreach(), and equal_data::result.

Referenced by hash_equal().

static VALUE recursive_hash | ( | VALUE | hash,
|  | VALUE | dummy,
|  | int | recur
| ) |  | `[static]`

Definition at line 1654 of file hash.c.

References hash_i(), INT2FIX, LONG2FIX, rb_cHash, rb_hash(), rb_hash_end(), rb_hash_foreach(), rb_hash_start(), rb_hash_uint(), and RHASH.

Referenced by rb_hash_hash().

static int replace_i | ( | VALUE | key,
|  | VALUE | val,
|  | VALUE | hash
| ) |  | `[static]`

Definition at line 1124 of file hash.c.

References Qundef, rb_hash_aset(), and ST_CONTINUE.

Referenced by rb_hash_replace().

void ruby_setenv | ( | const char * | name,
|  | const char * | value
| ) |  |

Definition at line 2133 of file hash.c.

References ALLOC_N, ALLOCA_N, buf, envix(), errno, free, GET_ENVIRON, len, malloc, max(), origenviron, rb_sys_fail(), rb_warn(), REALLOC_N, ruby_strdup(), setenv, snprintf, strchr(), unsetenv, and xfree().

Referenced by env_aset(), env_delete(), get_arglen(), rb_run_exec_options_err(), and ruby_unsetenv().

void ruby_unsetenv | ( | const char * | name | ) |

Definition at line 2244 of file hash.c.

References ruby_setenv().

static int select_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | result
| ) |  | `[static]`

Definition at line 970 of file hash.c.

References Qundef, rb_hash_aset(), rb_yield_values(), RTEST, and ST_CONTINUE.

Referenced by rb_hash_select().

static int shift_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 813 of file hash.c.

References shift_var::key, Qundef, ST_CONTINUE, ST_DELETE, ST_STOP, and shift_var::val.

Referenced by rb_hash_shift().

static int shift_i_safe | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | arg
| ) |  | `[static]`

Definition at line 825 of file hash.c.

References shift_var::key, Qundef, ST_CONTINUE, ST_STOP, and shift_var::val.

Referenced by rb_hash_shift().

void st_foreach_safe | ( | st_table * | table,
|  | int(*)(ANYARGS) | func,
|  | st_data_t | a
| ) |  |

Definition at line 135 of file hash.c.

References foreach_safe_arg::arg, foreach_safe_i(), func, foreach_safe_arg::func, rb_eRuntimeError, rb_raise(), st_foreach, and foreach_safe_arg::tbl.

Referenced by find_class_path(), givar_i(), obj_ivar_each(), rb_const_list(), rb_f_global_variables(), rb_gc_mark_global_tbl(), rb_ivar_foreach(), rb_mark_generic_ivar_tbl(), rb_mod_class_variables(), rb_mod_const_at(), and w_ivar().

static int to_a_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | ary
| ) |  | `[static]`

Definition at line 1314 of file hash.c.

References Qundef, rb_ary_push(), rb_assoc_new(), and ST_CONTINUE.

Referenced by rb_hash_to_a().

static VALUE to_hash | ( | VALUE | hash | ) | `[static]`

Definition at line 416 of file hash.c.

References rb_convert_type(), and T_HASH.

Referenced by env_replace(), env_update(), rb_hash_replace(), and rb_hash_update().

static int values_i | ( | VALUE | key,
|  | VALUE | value,
|  | VALUE | ary
| ) |  | `[static]`

Definition at line 1442 of file hash.c.

References Qundef, rb_ary_push(), and ST_CONTINUE.

Referenced by rb_hash_values().

## Variable Documentation

char** environ

Definition at line 6 of file missing-pips.c.

Referenced by Init_Hash().

VALUE envtbl`[static]`

Definition at line 36 of file hash.c.

Referenced by env_delete_if(), env_keep_if(), env_reject_bang(), env_select_bang(), Init_Hash(), and rb_env_clear().

ID id_default

Definition at line 37 of file hash.c.

Referenced by Init_Hash(), and rb_hash_aref().

ID id_hash`[static]`

Definition at line 37 of file hash.c.

Referenced by Init_Hash(), and rb_hash().

ID id_yield

Definition at line 37 of file hash.c.

Referenced by Init_Hash(), rb_hash_default(), and rb_hash_shift().

struct st_hash_type identhash`[static]`

Initial value:

     {
        st_numcmp,
        st_numhash,
    }

Definition at line 108 of file hash.c.

Referenced by rb_hash_compare_by_id().

struct st_hash_type objhash`[static]`

Initial value:

     {
        rb_any_cmp,
        rb_any_hash,
    }

Definition at line 103 of file hash.c.

char** origenviron`[static]`

Definition at line 1948 of file hash.c.

Referenced by ruby_setenv().

int path_tainted = -1`[static]`

Definition at line 1946 of file hash.c.

Referenced by env_path_tainted(), and rb_env_path_tainted().

VALUE rb_cHash

Definition at line 34 of file hash.c.

Referenced by cState_from_state_s(), Init_Hash(), make_compile_option(), rb_coverage_result(), rb_hash_new(), recursive_hash(), syck_resolver_node_import(), syck_resolver_transfer(), and w_object().