hash.c File Reference

#include "ruby/ruby.h"
#include "ruby/st.h"
#include "ruby/util.h"
#include "ruby/encoding.h"
#include "internal.h"
#include <errno.h>
#include "probes.h"

Go to the source code of this file.

Data Structures

struct  foreach_safe_arg
struct  hash_foreach_arg
struct  update_callback_arg
struct  update_arg
struct  rehash_arg
struct  shift_var
struct  equal_data
struct  update_func_arg
struct  reset_hash_type_arg

Defines

#define HAS_EXTRA_STATES(hash, klass)
#define HASH_REJECT_COPY_EXTRA_STATES   1
#define identhash   st_hashtype_num
#define NOINSERT_UPDATE_CALLBACK(func)
#define UPDATE_CALLBACK(iter_lev, func)   ((iter_lev) > 0 ? func##_noinsert : func##_insert)
#define RHASH_UPDATE_ITER(h, iter_lev, key, func, a)
#define RHASH_UPDATE(hash, key, func, arg)   RHASH_UPDATE_ITER(hash, RHASH_ITER_LEV(hash), key, func, arg)
#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 has_extra_methods (VALUE klass)
static VALUE rb_hash_s_try_convert (VALUE, VALUE)
VALUE rb_hash_freeze (VALUE hash)
VALUE rb_hash_set_ifnone (VALUE hash, VALUE ifnone)
static int rb_any_cmp (VALUE a, VALUE b)
static VALUE hash_recursive (VALUE obj, VALUE arg, int recurse)
VALUE rb_hash (VALUE obj)
long rb_objid_hash (st_index_t index)
static st_index_t rb_any_hash (VALUE a)
static int foreach_safe_i (st_data_t key, st_data_t value, st_data_t args, int error)
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, st_data_t argp, int error)
static VALUE hash_foreach_ensure_rollback (VALUE hash)
static VALUE hash_foreach_ensure (VALUE hash)
static VALUE hash_foreach_call (VALUE arg)
void rb_hash_foreach (VALUE hash, int(*func)(ANYARGS), VALUE farg)
static VALUE hash_alloc (VALUE klass)
static VALUE empty_hash_alloc (VALUE klass)
VALUE rb_hash_new (void)
static VALUE rb_hash_dup_empty (VALUE hash)
VALUE rb_hash_dup (VALUE hash)
static void rb_hash_modify_check (VALUE hash)
static struct st_table * hash_tbl (VALUE hash)
struct st_table * rb_hash_tbl (VALUE hash)
struct st_table * rb_hash_tbl_raw (VALUE hash)
static void rb_hash_modify (VALUE hash)
 NORETURN (static void no_new_key(void))
static void no_new_key (void)
static int tbl_update (VALUE hash, VALUE key, int(*func)(st_data_t *key, st_data_t *val, st_data_t arg, int existing), st_data_t optional_arg)
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)
VALUE rb_check_hash_type (VALUE hash)
static int rb_hash_rehash_i (VALUE key, VALUE value, VALUE arg)
static VALUE rb_hash_rehash (VALUE hash)
static VALUE hash_default_value (VALUE hash, VALUE key)
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)
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_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)
static VALUE rb_hash_size (VALUE hash)
static VALUE hash_enum_size (VALUE hash, VALUE args, VALUE eobj)
VALUE rb_hash_delete_if (VALUE hash)
VALUE rb_hash_reject_bang (VALUE hash)
static int reject_i (VALUE key, VALUE value, VALUE result)
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)
VALUE rb_hash_clear (VALUE hash)
static int hash_aset (st_data_t *key, st_data_t *val, struct update_arg *arg, int existing)
static int hash_aset_str (st_data_t *key, st_data_t *val, struct update_arg *arg, int existing)
 NOINSERT_UPDATE_CALLBACK (hash_aset)
 NOINSERT_UPDATE_CALLBACK (hash_aset_str)
VALUE rb_hash_aset (VALUE hash, VALUE key, VALUE val)
static int replace_i (VALUE key, VALUE val, VALUE hash)
static VALUE rb_hash_initialize_copy (VALUE hash, VALUE hash2)
static VALUE rb_hash_replace (VALUE hash, VALUE hash2)
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 int each_pair_i_fast (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 VALUE rb_hash_to_h (VALUE hash)
static int keys_i (VALUE key, VALUE value, VALUE ary)
VALUE rb_hash_keys (VALUE hash)
static int values_i (VALUE key, VALUE value, VALUE ary)
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 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_callback (st_data_t *key, st_data_t *value, struct update_arg *arg, int existing)
 NOINSERT_UPDATE_CALLBACK (rb_hash_update_callback)
static int rb_hash_update_i (VALUE key, VALUE value, VALUE hash)
static int rb_hash_update_block_callback (st_data_t *key, st_data_t *value, struct update_arg *arg, int existing)
 NOINSERT_UPDATE_CALLBACK (rb_hash_update_block_callback)
static int rb_hash_update_block_i (VALUE key, VALUE value, VALUE hash)
static VALUE rb_hash_update (VALUE hash1, VALUE hash2)
static int rb_hash_update_func_callback (st_data_t *key, st_data_t *value, struct update_arg *arg, int existing)
 NOINSERT_UPDATE_CALLBACK (rb_hash_update_func_callback)
static int rb_hash_update_func_i (VALUE key, VALUE value, VALUE arg0)
VALUE rb_hash_update_by (VALUE hash1, VALUE hash2, rb_hash_update_func *func)
static VALUE rb_hash_merge (VALUE hash1, VALUE hash2)
static int assoc_cmp (VALUE a, VALUE b)
static VALUE lookup2_call (VALUE arg)
static VALUE reset_hash_type (VALUE arg)
static int assoc_i (VALUE key, VALUE val, VALUE arg)
VALUE rb_hash_assoc (VALUE hash, VALUE key)
static int rassoc_i (VALUE key, VALUE val, VALUE arg)
VALUE rb_hash_rassoc (VALUE hash, VALUE obj)
static int flatten_i (VALUE key, VALUE val, VALUE ary)
static VALUE rb_hash_flatten (int argc, VALUE *argv, VALUE hash)
static VALUE rb_hash_compare_by_id_p (VALUE hash)
static VALUE rb_hash_compare_by_id (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)
 NORETURN (static void invalid_envname(const char *name))
static void invalid_envname (const char *name)
static const char * check_envname (const char *name)
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 rb_env_size (VALUE ehash, VALUE args, VALUE eobj)
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 ID id_flatten_bang
static struct st_hash_type objhash
struct st_hash_type st_hashtype_num
static int path_tainted = -1
static char ** origenviron
char ** environ

Define Documentation

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

Definition at line 2519 of file hash.c.

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

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

Definition at line 2520 of file hash.c.

Referenced by envix().

#define FREE_ENVIRON (  ) 
#define GET_ENVIRON (  )     (e)
#define HAS_EXTRA_STATES ( hash,
klass   ) 
Value:
( \
    ((klass = has_extra_methods(rb_obj_class(hash))) != 0) || \
    FL_TEST((hash), FL_EXIVAR|FL_TAINT|HASH_PROC_DEFAULT) || \
    !NIL_P(RHASH_IFNONE(hash)))

Definition at line 30 of file hash.c.

Referenced by rb_hash_reject().

#define HASH_REJECT_COPY_EXTRA_STATES   1

Definition at line 34 of file hash.c.

#define identhash   st_hashtype_num
#define NOINSERT_UPDATE_CALLBACK ( func   ) 
Value:
static int                                                                   \
func##_noinsert(st_data_t *key, st_data_t *val, st_data_t arg, int existing) \
{                                                                            \
    if (!existing) no_new_key();                                             \
    return func(key, val, (struct update_arg *)arg, existing);               \
}                                                                            \
                                                                             \
static int                                                                   \
func##_insert(st_data_t *key, st_data_t *val, st_data_t arg, int existing)   \
{                                                                            \
    return func(key, val, (struct update_arg *)arg, existing);               \
}

Definition at line 384 of file hash.c.

#define rb_intern ( str   )     rb_intern_const(str)
#define RHASH_UPDATE ( hash,
key,
func,
arg   )     RHASH_UPDATE_ITER(hash, RHASH_ITER_LEV(hash), key, func, arg)

Definition at line 435 of file hash.c.

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

#define RHASH_UPDATE_ITER ( h,
iter_lev,
key,
func,
 ) 
Value:
do {                        \
    tbl_update((h), (key), UPDATE_CALLBACK((iter_lev), func), (st_data_t)(a)); \
} while (0)

Definition at line 431 of file hash.c.

Referenced by rb_hash_aset().

#define UPDATE_CALLBACK ( iter_lev,
func   )     ((iter_lev) > 0 ? func##_noinsert : func##_insert)

Definition at line 429 of file hash.c.


Typedef Documentation

typedef int rb_foreach_func(VALUE, VALUE, VALUE)

Definition at line 210 of file hash.c.

typedef int st_foreach_func(st_data_t, st_data_t, st_data_t)

Definition at line 175 of file hash.c.


Function Documentation

static int assoc_cmp ( VALUE  a,
VALUE  b 
) [static]

Definition at line 2260 of file hash.c.

References rb_equal(), and RTEST.

Referenced by rb_hash_assoc().

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

Definition at line 2286 of file hash.c.

References args, rb_assoc_new(), rb_equal(), and RTEST.

Referenced by rb_hash_assoc().

static const char* check_envname ( const char *  name  )  [static]

Definition at line 2746 of file hash.c.

References invalid_envname(), and strchr().

Referenced by ruby_setenv().

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

Definition at line 1316 of file hash.c.

Referenced by rb_hash_clear().

static void default_proc_arity_check ( VALUE  proc  )  [static]

Definition at line 439 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 1071 of file hash.c.

References rb_yield_values(), and RTEST.

Referenced by rb_hash_delete_if(), and rb_hash_reject_bang().

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

Definition at line 1571 of file hash.c.

References rb_yield().

Referenced by rb_hash_each_key().

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

Definition at line 1604 of file hash.c.

References rb_assoc_new(), and rb_yield().

Referenced by rb_hash_each_pair().

static int each_pair_i_fast ( VALUE  key,
VALUE  value 
) [static]

Definition at line 1611 of file hash.c.

References rb_yield_values().

Referenced by rb_hash_each_pair().

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

Definition at line 1537 of file hash.c.

References rb_yield().

Referenced by rb_hash_each_value().

static VALUE empty_hash_alloc ( VALUE  klass  )  [static]
static VALUE env_aset ( VALUE  obj,
VALUE  nm,
VALUE  val 
) [static]
static VALUE env_assoc ( VALUE  env,
VALUE  key 
) [static]
static VALUE env_delete ( VALUE  obj,
VALUE  name 
) [static]
static VALUE env_delete_if ( VALUE  ehash  )  [static]

Definition at line 3111 of file hash.c.

References env_reject_bang(), envtbl, rb_env_size(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Hash().

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

Definition at line 2576 of file hash.c.

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

Referenced by Init_Hash().

static VALUE env_each_key ( VALUE  ehash  )  [static]

Definition at line 2962 of file hash.c.

References env_keys(), RARRAY_AREF, RARRAY_LEN, rb_env_size(), rb_yield(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Hash().

static VALUE env_each_pair ( VALUE  ehash  )  [static]
static VALUE env_each_value ( VALUE  ehash  )  [static]

Definition at line 3010 of file hash.c.

References env_values(), RARRAY_AREF, RARRAY_LEN, rb_env_size(), rb_yield(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Hash().

static VALUE env_empty_p ( void   )  [static]

Definition at line 3357 of file hash.c.

References FREE_ENVIRON, GET_ENVIRON, Qfalse, and Qtrue.

Referenced by Init_Hash().

static VALUE env_fetch ( int  argc,
VALUE *  argv 
) [static]
static VALUE env_has_key ( VALUE  env,
VALUE  key 
) [static]

Definition at line 3380 of file hash.c.

References getenv, Qfalse, Qtrue, rb_eArgError, rb_raise(), RSTRING_LEN, RSTRING_PTR, and SafeStringValue.

Referenced by Init_Hash().

static VALUE env_has_value ( VALUE  dmy,
VALUE  obj 
) [static]
static VALUE env_index ( VALUE  dmy,
VALUE  value 
) [static]

Definition at line 3514 of file hash.c.

References env_key(), and rb_warn().

Referenced by Init_Hash().

static VALUE env_inspect ( void   )  [static]
static VALUE env_invert ( void   )  [static]

Definition at line 3597 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 3211 of file hash.c.

References env_select_bang(), envtbl, rb_env_size(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Hash().

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

Definition at line 3484 of file hash.c.

References env_str_new(), FREE_ENVIRON, GET_ENVIRON, Qnil, RSTRING_LEN, RSTRING_PTR, SafeStringValue, strchr(), and strlen().

Referenced by env_index(), and Init_Hash().

static VALUE env_keys ( void   )  [static]
static VALUE env_none ( void   )  [static]

Definition at line 3325 of file hash.c.

References Qnil.

Referenced by Init_Hash().

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

Definition at line 2676 of file hash.c.

References path_tainted_p().

Referenced by env_fetch(), and rb_f_getenv().

static VALUE env_rassoc ( VALUE  dmy,
VALUE  obj 
) [static]
static VALUE env_reject ( void   )  [static]

Definition at line 3557 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]
static VALUE env_replace ( VALUE  env,
VALUE  hash 
) [static]

Definition at line 3620 of file hash.c.

References env_delete(), env_keys(), env_replace_i(), RARRAY_AREF, RARRAY_LEN, 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 3603 of file hash.c.

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

Referenced by env_replace().

static VALUE env_select ( VALUE  ehash  )  [static]
static VALUE env_select_bang ( VALUE  ehash  )  [static]
static VALUE env_shift ( void   )  [static]
static VALUE env_size ( void   )  [static]

Definition at line 3338 of file hash.c.

References FREE_ENVIRON, GET_ENVIRON, and INT2FIX.

Referenced by Init_Hash().

static VALUE env_str_new ( const char *  ptr,
long  len 
) [static]
static VALUE env_str_new2 ( const char *  ptr  )  [static]
static VALUE env_to_a ( void   )  [static]
static VALUE env_to_hash ( void   )  [static]
static VALUE env_to_s ( void   )  [static]

Definition at line 3247 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 3657 of file hash.c.

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

Referenced by Init_Hash().

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

Definition at line 3637 of file hash.c.

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

Referenced by env_update().

static VALUE env_values ( void   )  [static]

Definition at line 2982 of file hash.c.

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

Referenced by env_each_value(), and Init_Hash().

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

Definition at line 3126 of file hash.c.

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

Referenced by Init_Hash().

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

Definition at line 2706 of file hash.c.

References ENVNMATCH, FREE_ENVIRON, GET_ENVIRON, and strlen().

Referenced by ruby_setenv().

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

Definition at line 1929 of file hash.c.

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

Referenced by recursive_eql().

static int flatten_i ( VALUE  key,
VALUE  val,
VALUE  ary 
) [static]

Definition at line 2381 of file hash.c.

References rb_ary_cat().

Referenced by rb_hash_flatten().

static int foreach_safe_i ( st_data_t  key,
st_data_t  value,
st_data_t  args,
int  error 
) [static]

Definition at line 184 of file hash.c.

References foreach_safe_arg::arg, and foreach_safe_arg::func.

Referenced by st_foreach_safe().

static VALUE has_extra_methods ( VALUE  klass  )  [static]

Definition at line 37 of file hash.c.

References rb_cHash, RCLASS_M_TBL, and RCLASS_SUPER.

static VALUE hash_alloc ( VALUE  klass  )  [static]
static int hash_aset ( st_data_t *  key,
st_data_t *  val,
struct update_arg arg,
int  existing 
) [static]
static int hash_aset_str ( st_data_t *  key,
st_data_t *  val,
struct update_arg arg,
int  existing 
) [static]

Definition at line 1364 of file hash.c.

References hash_aset(), and rb_str_new_frozen().

Referenced by rb_hash_aset().

static VALUE hash_default_value ( VALUE  hash,
VALUE  key 
) [static]
static VALUE hash_enum_size ( VALUE  hash,
VALUE  args,
VALUE  eobj 
) [static]
static VALUE hash_equal ( VALUE  hash1,
VALUE  hash2,
int  eql 
) [static]
static VALUE hash_foreach_call ( VALUE  arg  )  [static]

Definition at line 263 of file hash.c.

References hash(), hash_foreach_iter(), Qnil, Qundef, rb_eRuntimeError, rb_raise(), RHASH, and st_foreach_check().

Referenced by rb_hash_foreach().

static VALUE hash_foreach_ensure ( VALUE  hash  )  [static]

Definition at line 251 of file hash.c.

References FL_TEST, FL_UNSET, HASH_DELETED, Qundef, RHASH, RHASH_ITER_LEV, and st_cleanup_safe().

Referenced by Init_Hash(), and rb_hash_foreach().

static VALUE hash_foreach_ensure_rollback ( VALUE  hash  )  [static]

Definition at line 244 of file hash.c.

References RHASH_ITER_LEV.

Referenced by Init_Hash().

static int hash_foreach_iter ( st_data_t  key,
st_data_t  value,
st_data_t  argp,
int  error 
) [static]
static int hash_i ( VALUE  key,
VALUE  val,
VALUE  arg 
) [static]

Definition at line 2030 of file hash.c.

References rb_hash(), and st_hash().

Referenced by rb_hash_hash().

static VALUE hash_recursive ( VALUE  obj,
VALUE  arg,
int  recurse 
) [static]

Definition at line 99 of file hash.c.

References id_hash, INT2FIX, and rb_funcallv().

Referenced by rb_hash().

static struct st_table* hash_tbl ( VALUE  hash  )  [static, read]

Definition at line 344 of file hash.c.

References objhash, RHASH, and st_init_table().

Referenced by rb_hash_aset(), rb_hash_modify(), rb_hash_replace(), rb_hash_tbl(), and rb_hash_tbl_raw().

void Init_Hash ( void   ) 

Definition at line 3779 of file hash.c.

References empty_hash_alloc(), 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(), envtbl, hash_foreach_ensure(), hash_foreach_ensure_rollback(), id_default, id_flatten_bang, 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_initialize_copy(), 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_h(), rb_hash_to_hash(), rb_hash_update(), rb_hash_values(), rb_hash_values_at(), rb_include_module(), rb_intern, rb_mEnumerable, rb_obj_alloc(), and ruby_register_rollback_func_for_ensure().

static VALUE inspect_hash ( VALUE  hash,
VALUE  dummy,
int  recur 
) [static]
static int inspect_i ( VALUE  key,
VALUE  value,
VALUE  str 
) [static]

Definition at line 1681 of file hash.c.

References OBJ_INFECT, rb_enc_copy(), rb_inspect(), rb_str_buf_append(), rb_str_buf_cat_ascii(), and RSTRING_LEN.

Referenced by inspect_hash().

static void invalid_envname ( const char *  name  )  [static]

Definition at line 2740 of file hash.c.

References rb_sprintf(), and rb_syserr_fail_str().

Referenced by check_envname(), and ruby_setenv().

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

Definition at line 1261 of file hash.c.

References rb_yield_values(), and RTEST.

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 922 of file hash.c.

References args, and rb_equal().

Referenced by rb_hash_key().

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

Definition at line 1773 of file hash.c.

References rb_ary_push().

Referenced by rb_hash_keys().

static VALUE lookup2_call ( VALUE  arg  )  [static]

Definition at line 2266 of file hash.c.

References args, Qundef, and rb_hash_lookup2().

Referenced by rb_hash_assoc().

static void no_new_key ( void   )  [static]

Definition at line 374 of file hash.c.

References rb_eRuntimeError, and rb_raise().

Referenced by rb_hash_aset().

NOINSERT_UPDATE_CALLBACK ( rb_hash_update_func_callback   ) 
NOINSERT_UPDATE_CALLBACK ( rb_hash_update_block_callback   ) 
NOINSERT_UPDATE_CALLBACK ( rb_hash_update_callback   ) 
NOINSERT_UPDATE_CALLBACK ( hash_aset_str   ) 
NOINSERT_UPDATE_CALLBACK ( hash_aset   ) 
NORETURN ( static void   invalid_envnameconst char *name  ) 
NORETURN ( static void   no_new_keyvoid  ) 
static void path_tainted_p ( const char *  path  )  [static]

Definition at line 2670 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 2345 of file hash.c.

References args, rb_assoc_new(), rb_equal(), and RTEST.

Referenced by rb_hash_rassoc().

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

Definition at line 80 of file hash.c.

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

static st_index_t rb_any_hash ( VALUE  a  )  [static]
VALUE rb_check_hash_type ( VALUE  hash  ) 
VALUE rb_env_clear ( void   ) 

Definition at line 3225 of file hash.c.

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

Referenced by Init_Hash(), and rb_execarg_run_options().

int rb_env_path_tainted ( void   ) 

Definition at line 2685 of file hash.c.

References getenv, PATH_ENV, and path_tainted_p().

Referenced by security().

static VALUE rb_env_size ( VALUE  ehash,
VALUE  args,
VALUE  eobj 
) [static]
static VALUE rb_f_getenv ( VALUE  obj,
VALUE  name 
) [static]
VALUE rb_hash ( VALUE  obj  ) 
VALUE rb_hash_aref ( VALUE  hash,
VALUE  key 
)
VALUE rb_hash_aset ( VALUE  hash,
VALUE  key,
VALUE  val 
)

Definition at line 1402 of file hash.c.

References hash_aset(), hash_aset_str(), hash_tbl(), identhash, no_new_key(), rb_cString, rb_hash_modify(), rb_obj_class(), RHASH, RHASH_ITER_LEV, and RHASH_UPDATE_ITER.

Referenced by add_activated_refinement(), ary_add_hash(), ary_add_hash_by(), cbsubst_table_setup(), cdhash_set_label_i(), check_exec_fds(), check_exec_fds_1(), check_exec_options_i_extract(), collect_values_of_values(), core_hash_merge(), count_nodes(), count_objects(), count_objects_size(), coverage(), coverage_result_i(), cState_to_h(), cto_i(), date_zone_to_diff(), debug_lines(), enum_to_h_i(), 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_GC(), Init_Hash(), Init_ossl_asn1(), Init_ossl_x509name(), io_s_write(), iseq_data_to_ary(), JSON_parse_object(), mString_to_json_raw_object(), ole_const_load(), ossl_dh_get_params(), ossl_dsa_get_params(), ossl_rsa_get_params(), ossl_sslctx_get_session_cache_stats(), pruby_register_instance(), r_object0(), rb_ary_to_h(), rb_econv_prepare_options(), rb_enc_aliases_enc_i(), rb_hash_invert_i(), rb_hash_s_create(), rb_inflate_add_dictionary(), rb_mod_refine(), rb_struct_to_h(), rb_thread_variable_set(), rb_uninterruptible(), rb_using_refinement(), rb_vm_add_root_module(), reachable_object_from_root_i(), realpath_rec(), recursive_list_access(), recursive_push(), reg_named_captures_iter(), reject_i(), replace_i(), ripper_init_eventids1_table(), ripper_init_eventids2_table(), select_i(), separate_symbol(), set_state_ivars(), set_zero(), set_zero_i(), sig_list(), tk_install_cmd_core(), to_strkey(), tr_setup_table(), tr_trans(), and when_vals().

VALUE rb_hash_assoc ( VALUE  hash,
VALUE  key 
)
VALUE rb_hash_clear ( VALUE  hash  ) 

Definition at line 1333 of file hash.c.

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

Referenced by Init_Hash(), and rb_hash_replace().

static VALUE rb_hash_compare_by_id ( VALUE  hash  )  [static]

Definition at line 2454 of file hash.c.

References identhash, rb_hash_compare_by_id_p(), 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 2473 of file hash.c.

References identhash, Qfalse, Qtrue, and RHASH.

Referenced by Init_Hash(), and rb_hash_compare_by_id().

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

Definition at line 818 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 876 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 
)
VALUE rb_hash_delete_if ( VALUE  hash  ) 
static VALUE rb_hash_delete_key ( VALUE  hash,
VALUE  key 
) [static]

Definition at line 969 of file hash.c.

References FL_SET, HASH_DELETED, Qundef, RHASH, RHASH_ITER_LEV, st_delete(), st_delete_safe(), and val.

Referenced by rb_hash_delete(), and rb_hash_shift().

VALUE rb_hash_dup ( VALUE  hash  ) 

Definition at line 329 of file hash.c.

References rb_hash_dup_empty(), RHASH, RHASH_EMPTY_P, and st_copy().

Referenced by io_s_write(), and rb_using_refinement().

static VALUE rb_hash_dup_empty ( VALUE  hash  )  [static]
static VALUE rb_hash_each_key ( VALUE  hash  )  [static]

Definition at line 1596 of file hash.c.

References each_key_i(), hash_enum_size(), rb_hash_foreach(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Hash().

static VALUE rb_hash_each_pair ( VALUE  hash  )  [static]
static VALUE rb_hash_each_value ( VALUE  hash  )  [static]

Definition at line 1563 of file hash.c.

References each_value_i(), hash_enum_size(), rb_hash_foreach(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_Hash().

static VALUE rb_hash_empty_p ( VALUE  hash  )  [static]

Definition at line 1531 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 2024 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 2010 of file hash.c.

References FALSE, and hash_equal().

Referenced by Init_Hash().

VALUE rb_hash_fetch ( VALUE  hash,
VALUE  key 
)

Definition at line 791 of file hash.c.

References rb_hash_fetch_m().

static VALUE rb_hash_fetch_m ( int  argc,
VALUE *  argv,
VALUE  hash 
) [static]
static VALUE rb_hash_flatten ( int  argc,
VALUE *  argv,
VALUE  hash 
) [static]
void rb_hash_foreach ( VALUE  hash,
int(*)(ANYARGS)  func,
VALUE  farg 
)
VALUE rb_hash_freeze ( VALUE  hash  ) 

Definition at line 62 of file hash.c.

References rb_obj_freeze().

Referenced by rb_coverage_result(), and rb_econv_prepare_options().

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

Definition at line 1876 of file hash.c.

References Qfalse, Qtrue, RHASH, and st_lookup().

Referenced by Init_Hash().

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

Definition at line 1912 of file hash.c.

References Qfalse, rb_hash_foreach(), and rb_hash_search_value().

Referenced by Init_Hash().

static VALUE rb_hash_hash ( VALUE  hash  )  [static]

Definition at line 2050 of file hash.c.

References hash_i(), INT2FIX, rb_hash_end, rb_hash_foreach(), rb_hash_start(), rb_hash_uint, RHASH_SIZE, and size.

Referenced by Init_Hash().

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

Definition at line 962 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]
static VALUE rb_hash_initialize_copy ( VALUE  hash,
VALUE  hash2 
) [static]
static VALUE rb_hash_inspect ( VALUE  hash  )  [static]

Definition at line 1728 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 2082 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 2063 of file hash.c.

References rb_hash_aset().

Referenced by rb_hash_invert().

VALUE rb_hash_keep_if ( VALUE  hash  ) 
static VALUE rb_hash_key ( VALUE  hash,
VALUE  value 
) [static]

Definition at line 948 of file hash.c.

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

Referenced by Init_Hash(), and rb_hash_index().

VALUE rb_hash_keys ( VALUE  hash  ) 
VALUE rb_hash_lookup ( VALUE  hash,
VALUE  key 
)

Definition at line 728 of file hash.c.

References Qnil, and rb_hash_lookup2().

VALUE rb_hash_lookup2 ( VALUE  hash,
VALUE  key,
VALUE  def 
)
static VALUE rb_hash_merge ( VALUE  hash1,
VALUE  hash2 
) [static]

Definition at line 2254 of file hash.c.

References rb_hash_update(), and rb_obj_dup().

Referenced by Init_Hash().

static void rb_hash_modify ( VALUE  hash  )  [static]
static void rb_hash_modify_check ( VALUE  hash  )  [static]
VALUE rb_hash_new ( void   ) 

Definition at line 307 of file hash.c.

References hash_alloc(), and rb_cHash.

Referenced by allocate_cbsubst_info(), ary_tmp_hash_new(), check_exec_fds(), check_exec_options_i_extract(), core_hash_from_ary(), count_nodes(), count_objects(), count_objects_size(), count_tdata_objects(), create_encoding_table_core(), cState_to_h(), date__httpdate(), date__iso8601(), date__jisx0301(), date__parse(), date__rfc2822(), date__rfc3339(), date__xmlschema(), date_s__strptime_internal(), date_zone_to_diff(), enum_group_by(), enum_to_h(), env_select(), env_to_hash(), fdbm_invert(), fdbm_to_hash(), fgdbm_invert(), fgdbm_to_hash(), fsdbm_invert(), fsdbm_to_hash(), gc_latest_gc_info(), gc_profile_record_get(), gc_stat(), hidden_identity_hash_new(), ident_hash_new(), Init_BareVM(), Init_GC(), Init_ossl_asn1(), Init_ossl_x509name(), Init_sizeof(), Init_tkutil(), Init_VM(), io_s_write(), iseq_compile_each(), iseq_data_to_ary(), JSON_parse_object(), make_compile_option_value(), mString_to_json_raw_object(), nil_to_h(), ole_const_load(), ossl_dh_get_params(), ossl_dsa_get_params(), ossl_rsa_get_params(), ossl_sslctx_get_session_cache_stats(), pruby_init(), r_object0(), rb_ary_to_h(), rb_coverage_result(), rb_coverage_start(), rb_econv_prepare_options(), rb_enc_aliases(), rb_execarg_fixup(), rb_Hash(), rb_hash_invert(), rb_hash_reject(), rb_hash_select(), rb_hash_to_h(), rb_inflate_s_allocate(), rb_realpath_internal(), rb_reg_named_captures(), rb_struct_to_h(), rb_uninterruptible(), reachable_object_from_root_i(), reachable_objects_from_root(), recursive_push(), ripper_init_eventids1_table(), ripper_init_eventids2_table(), ruby_thread_init(), separate_symbol(), sig_list(), tk_symbolkey2str(), tr_setup_table(), tr_trans(), vm_callee_setup_keyword_arg(), vm_default_params(), and vm_stat().

VALUE rb_hash_rassoc ( VALUE  hash,
VALUE  obj 
)

Definition at line 2370 of file hash.c.

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

Referenced by Init_Hash().

static VALUE rb_hash_rehash ( VALUE  hash  )  [static]
static int rb_hash_rehash_i ( VALUE  key,
VALUE  value,
VALUE  arg 
) [static]

Definition at line 625 of file hash.c.

References st_insert().

Referenced by rb_hash_rehash().

VALUE rb_hash_reject ( VALUE  hash  ) 
VALUE rb_hash_reject_bang ( VALUE  hash  ) 
static VALUE rb_hash_replace ( VALUE  hash,
VALUE  hash2 
) [static]
static VALUE rb_hash_s_create ( int  argc,
VALUE *  argv,
VALUE  klass 
) [static]
static VALUE rb_hash_s_try_convert ( VALUE  dummy,
VALUE  hash 
) [static]

Definition at line 614 of file hash.c.

References rb_check_hash_type().

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 1887 of file hash.c.

References Qtrue, and rb_equal().

Referenced by rb_hash_has_value().

VALUE rb_hash_select ( VALUE  hash  ) 
VALUE rb_hash_select_bang ( VALUE  hash  ) 
static VALUE rb_hash_set_default ( VALUE  hash,
VALUE  ifnone 
) [static]

Definition at line 852 of file hash.c.

References FL_UNSET, HASH_PROC_DEFAULT, rb_hash_modify_check(), and RHASH_SET_IFNONE.

Referenced by Init_Hash().

static VALUE rb_hash_set_default_proc ( VALUE  hash,
VALUE  proc 
) [static]
VALUE rb_hash_set_ifnone ( VALUE  hash,
VALUE  ifnone 
)

Definition at line 73 of file hash.c.

References RB_OBJ_WRITE, and RHASH.

static VALUE rb_hash_shift ( VALUE  hash  )  [static]
static VALUE rb_hash_size ( VALUE  hash  )  [static]

Definition at line 1514 of file hash.c.

References INT2FIX, and RHASH_SIZE.

Referenced by hash_enum_size(), and Init_Hash().

struct st_table* rb_hash_tbl ( VALUE  hash  )  [read]

Definition at line 353 of file hash.c.

References hash_tbl(), and OBJ_WB_UNPROTECT.

Referenced by collect_values_of_values().

struct st_table* rb_hash_tbl_raw ( VALUE  hash  )  [read]
static VALUE rb_hash_to_a ( VALUE  hash  )  [static]

Definition at line 1669 of file hash.c.

References OBJ_INFECT, rb_ary_new_capa(), rb_hash_foreach(), RHASH_SIZE, and to_a_i().

Referenced by Init_Hash(), and rb_hash_flatten().

static VALUE rb_hash_to_h ( VALUE  hash  )  [static]
static VALUE rb_hash_to_hash ( VALUE  hash  )  [static]

Definition at line 1743 of file hash.c.

Referenced by Init_Hash().

static VALUE rb_hash_update ( VALUE  hash1,
VALUE  hash2 
) [static]
static int rb_hash_update_block_callback ( st_data_t *  key,
st_data_t *  value,
struct update_arg arg,
int  existing 
) [static]
static int rb_hash_update_block_i ( VALUE  key,
VALUE  value,
VALUE  hash 
) [static]

Definition at line 2135 of file hash.c.

References rb_hash_update_block_callback(), and RHASH_UPDATE.

Referenced by rb_hash_update().

VALUE rb_hash_update_by ( VALUE  hash1,
VALUE  hash2,
rb_hash_update_func *  func 
)
static int rb_hash_update_callback ( st_data_t *  key,
st_data_t *  value,
struct update_arg arg,
int  existing 
) [static]

Definition at line 2091 of file hash.c.

References update_arg::arg, update_arg::new_key, update_arg::new_value, and update_arg::old_value.

Referenced by rb_hash_update_i().

static int rb_hash_update_func_callback ( st_data_t *  key,
st_data_t *  value,
struct update_arg arg,
int  existing 
) [static]
static int rb_hash_update_func_i ( VALUE  key,
VALUE  value,
VALUE  arg0 
) [static]
static int rb_hash_update_i ( VALUE  key,
VALUE  value,
VALUE  hash 
) [static]

Definition at line 2108 of file hash.c.

References rb_hash_update_callback(), and RHASH_UPDATE.

Referenced by rb_hash_update(), and rb_hash_update_by().

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

Definition at line 1213 of file hash.c.

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

Referenced by Init_Hash().

long rb_objid_hash ( st_index_t  index  ) 

Definition at line 159 of file hash.c.

References rb_any_hash(), rb_hash_end, rb_hash_start(), and rb_hash_uint.

Referenced by rb_any_hash(), and rb_obj_hash().

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

Definition at line 1946 of file hash.c.

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

Referenced by hash_equal().

static int reject_i ( VALUE  key,
VALUE  value,
VALUE  result 
) [static]

Definition at line 1136 of file hash.c.

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

Referenced by rb_hash_reject().

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

Definition at line 1422 of file hash.c.

References rb_hash_aset().

Referenced by rb_hash_replace().

static VALUE reset_hash_type ( VALUE  arg  )  [static]

Definition at line 2278 of file hash.c.

References reset_hash_type_arg::hash, reset_hash_type_arg::orighash, Qundef, and RHASH.

Referenced by rb_hash_assoc().

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

Definition at line 2865 of file hash.c.

References ruby_setenv().

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

Definition at line 1225 of file hash.c.

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

Referenced by rb_hash_select().

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

Definition at line 1024 of file hash.c.

References shift_var::key, and shift_var::val.

Referenced by rb_hash_shift().

void st_foreach_safe ( st_table *  table,
int(*)(ANYARGS)  func,
st_data_t  a 
)
static int tbl_update ( VALUE  hash,
VALUE  key,
int(*)(st_data_t *key, st_data_t *val, st_data_t arg, int existing)  func,
st_data_t  optional_arg 
) [static]
static int to_a_i ( VALUE  key,
VALUE  value,
VALUE  ary 
) [static]

Definition at line 1651 of file hash.c.

References rb_ary_push(), and rb_assoc_new().

Referenced by rb_hash_to_a().

static VALUE to_hash ( VALUE  hash  )  [static]
static int values_i ( VALUE  key,
VALUE  value,
VALUE  ary 
) [static]

Definition at line 1817 of file hash.c.

References rb_ary_push().

Referenced by rb_hash_values().


Variable Documentation

char** environ

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

VALUE envtbl [static]
ID id_default [static]

Definition at line 70 of file hash.c.

Referenced by hash_default_value(), and Init_Hash().

ID id_flatten_bang [static]

Definition at line 70 of file hash.c.

Referenced by Init_Hash(), and rb_hash_flatten().

ID id_hash [static]

Definition at line 70 of file hash.c.

Referenced by hash_recursive(), and Init_Hash().

ID id_yield [static]

Definition at line 70 of file hash.c.

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

struct st_hash_type objhash [static]
Initial value:

Definition at line 167 of file hash.c.

Referenced by hash_tbl().

char** origenviron [static]

Definition at line 2485 of file hash.c.

int path_tainted = -1 [static]

Definition at line 2483 of file hash.c.

VALUE rb_cHash
struct st_hash_type st_hashtype_num

Referenced by ident_hash_new(), and STATIC_ASSERT().


Generated on 18 May 2020 for Ruby by  doxygen 1.6.1