Ruby: variable.c File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Data Structures | Macros | Typedefs | Functions
variable.c File Reference
`#include "ruby/internal/config.h"`
`#include <stddef.h>`
`#include "ruby/internal/stdbool.h"`
`#include "ccan/list/list.h"`
`#include "constant.h"`
`#include "debug_counter.h"`
`#include "id.h"`
`#include "id_table.h"`
`#include "internal.h"`
`#include "internal/class.h"`
`#include "internal/compilers.h"`
`#include "internal/error.h"`
`#include "internal/eval.h"`
`#include "internal/hash.h"`
`#include "internal/object.h"`
`#include "internal/re.h"`
`#include "internal/symbol.h"`
`#include "internal/thread.h"`
`#include "internal/variable.h"`
`#include "ruby/encoding.h"`
`#include "ruby/st.h"`
`#include "ruby/util.h"`
`#include "transient_heap.h"`
`#include "variable.h"`
`#include "vm_core.h"`
`#include "ractor_core.h"`
`#include "vm_sync.h"`

Go to the source code of this file.

## Data Structures
struct | ivar_update
struct | trace_var
struct | rb_global_variable
struct | rb_global_entry
struct | trace_data
struct | givar_copy
struct | autoload_const
struct | autoload_state
struct | autoload_data_i

## Macros
#define | CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR()
#define | rb_is_constant_id rb_is_const_id
#define | rb_is_constant_name rb_is_const_name
#define | id_for_var(obj, name, part, type) id_for_var_message(obj, name, type, "`%1$s' is not allowed as "#part" "#type" variable name")
#define | id_for_var_message(obj, name, type, message) check_id_type(obj, &(name), rb_is_##type##_id, rb_is_##type##_name, message, strlen(message))
#define | check_autoload_table(av) (struct st_table *)rb_check_typeddata((av), &autoload_data_type)
#define | CVAR_FOREACH_ANCESTORS(klass, v, r)
#define | CVAR_LOOKUP(v, r)

## Typedefs
typedef void | rb_gvar_compact_t(void *var)
typedef VALUE(* | fallback_func) (VALUE obj, VALUE name)
typedef int | rb_ivar_foreach_callback_func(ID key, VALUE val, st_data_t arg)

## Functions
void | Init_var_tables (void)
VALUE | rb_mod_name (VALUE mod)
VALUE | rb_class_path (VALUE klass)
VALUE | rb_class_path_cached (VALUE klass)
VALUE | rb_search_class_path (VALUE klass)
void | rb_set_class_path_string (VALUE klass, VALUE under, VALUE name)
void | rb_set_class_path (VALUE klass, VALUE under, const char *name)
VALUE | rb_path_to_class (VALUE pathname)
VALUE | rb_path2class (const char *path)
VALUE | rb_class_name (VALUE klass)
const char * | rb_class2name (VALUE klass)
const char * | rb_obj_classname (VALUE obj)
void | rb_gvar_ractor_local (const char *name)
VALUE | rb_gvar_undef_getter (ID id, VALUE *_)
void | rb_gvar_undef_setter (VALUE val, ID id, VALUE *_)
void | rb_gvar_undef_marker (VALUE *var)
VALUE | rb_gvar_val_getter (ID id, VALUE *data)
void | rb_gvar_val_setter (VALUE val, ID id, VALUE *_)
void | rb_gvar_val_marker (VALUE *var)
VALUE | rb_gvar_var_getter (ID id, VALUE *var)
void | rb_gvar_var_setter (VALUE val, ID id, VALUE *data)
void | rb_gvar_var_marker (VALUE *var)
void | rb_gvar_readonly_setter (VALUE v, ID id, VALUE *_)
void | rb_gc_mark_global_tbl (void)
void | rb_gc_update_global_tbl (void)
void | rb_define_hooked_variable (const char *name, VALUE *var, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter)
void | rb_define_variable (const char *name, VALUE *var)
void | rb_define_readonly_variable (const char *name, const VALUE *var)
void | rb_define_virtual_variable (const char *name, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter)
VALUE | rb_f_trace_var (int argc, const VALUE *argv)
VALUE | rb_f_untrace_var (int argc, const VALUE *argv)
VALUE | rb_gvar_set (ID id, VALUE val)
VALUE | rb_gv_set (const char *name, VALUE val)
VALUE | rb_gvar_get (ID id)
VALUE | rb_gv_get (const char *name)
VALUE | rb_gvar_defined (ID id)
rb_gvar_getter_t * | rb_gvar_getter_function_of (ID id)
rb_gvar_setter_t * | rb_gvar_setter_function_of (ID id)
VALUE | rb_f_global_variables (void)
void | rb_alias_variable (ID name1, ID name2)
int | rb_ivar_generic_ivtbl_lookup (VALUE obj, struct gen_ivtbl **ivtbl)
VALUE | rb_ivar_generic_lookup_with_index (VALUE obj, ID id, uint32_t index)
void | rb_mark_generic_ivar (VALUE obj)
void | rb_mv_generic_ivar (VALUE rsrc, VALUE dst)
void | rb_free_generic_ivar (VALUE obj)
size_t | rb_generic_ivar_memsize (VALUE obj)
VALUE | rb_ivar_lookup (VALUE obj, ID id, VALUE undef)
VALUE | rb_ivar_get (VALUE obj, ID id)
VALUE | rb_attr_get (VALUE obj, ID id)
VALUE | rb_attr_delete (VALUE obj, ID id)
void | rb_init_iv_list (VALUE obj)
VALUE | rb_ivar_set (VALUE obj, ID id, VALUE val)
void | rb_ivar_set_internal (VALUE obj, ID id, VALUE val)
VALUE | rb_ivar_defined (VALUE obj, ID id)
st_data_t | rb_st_nth_key (st_table *tab, st_index_t index)
void | rb_copy_generic_ivar (VALUE clone, VALUE obj)
void | rb_replace_generic_ivar (VALUE clone, VALUE obj)
void | rb_ivar_foreach (VALUE obj, rb_ivar_foreach_callback_func *func, st_data_t arg)
st_index_t | rb_ivar_count (VALUE obj)
VALUE | rb_obj_instance_variables (VALUE obj)
VALUE | rb_obj_remove_instance_variable (VALUE obj, VALUE name)
VALUE | rb_const_missing (VALUE klass, VALUE name)
VALUE | rb_mod_const_missing (VALUE klass, VALUE name)
void | rb_autoload (VALUE mod, ID id, const char *file)
void | rb_autoload_str (VALUE mod, ID id, VALUE file)
int | rb_autoloading_value (VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag)
VALUE | rb_autoload_load (VALUE mod, ID id)
VALUE | rb_autoload_p (VALUE mod, ID id)
VALUE | rb_autoload_at_p (VALUE mod, ID id, int recur)
void | rb_const_warn_if_deprecated (const rb_const_entry_t *ce, VALUE klass, ID id)
VALUE | rb_const_get_from (VALUE klass, ID id)
VALUE | rb_const_get (VALUE klass, ID id)
VALUE | rb_const_get_at (VALUE klass, ID id)
VALUE | rb_public_const_get_from (VALUE klass, ID id)
VALUE | rb_public_const_get_at (VALUE klass, ID id)
VALUE | rb_const_source_location (VALUE klass, ID id)
VALUE | rb_const_source_location_at (VALUE klass, ID id)
VALUE | rb_mod_remove_const (VALUE mod, VALUE name)
VALUE | rb_const_remove (VALUE mod, ID id)
void * | rb_mod_const_at (VALUE mod, void *data)
void * | rb_mod_const_of (VALUE mod, void *data)
VALUE | rb_const_list (void *data)
VALUE | rb_mod_constants (int argc, const VALUE *argv, VALUE mod)
int | rb_const_defined_from (VALUE klass, ID id)
int | rb_const_defined (VALUE klass, ID id)
int | rb_const_defined_at (VALUE klass, ID id)
int | rb_public_const_defined_from (VALUE klass, ID id)
void | rb_const_set (VALUE klass, ID id, VALUE val)
void | rb_define_const (VALUE klass, const char *name, VALUE val)
void | rb_define_global_const (const char *name, VALUE val)
void | rb_deprecate_constant (VALUE mod, const char *name)
VALUE | rb_mod_private_constant (int argc, const VALUE *argv, VALUE obj)
VALUE | rb_mod_public_constant (int argc, const VALUE *argv, VALUE obj)
VALUE | rb_mod_deprecate_constant (int argc, const VALUE *argv, VALUE obj)
void | rb_cvar_set (VALUE klass, ID id, VALUE val)
VALUE | rb_cvar_get (VALUE klass, ID id)
VALUE | rb_cvar_defined (VALUE klass, ID id)
void | rb_cv_set (VALUE klass, const char *name, VALUE val)
VALUE | rb_cv_get (VALUE klass, const char *name)
void | rb_define_class_variable (VALUE klass, const char *name, VALUE val)
VALUE | rb_mod_class_variables (int argc, const VALUE *argv, VALUE mod)
VALUE | rb_mod_remove_cvar (VALUE mod, VALUE name)
VALUE | rb_iv_get (VALUE obj, const char *name)
VALUE | rb_iv_set (VALUE obj, const char *name, VALUE val)
int | rb_class_ivar_set (VALUE obj, ID key, VALUE value)
void | rb_iv_tbl_copy (VALUE dst, VALUE src)
rb_const_entry_t * | rb_const_lookup (VALUE klass, ID id)

## Macro Definition Documentation

## ◆ check_autoload_table

#define check_autoload_table | ( |  | av | ) | (struct st_table *)rb_check_typeddata((av), &autoload_data_type)

Definition at line 2004 of file variable.c.

## ◆ CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR

#define CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR | ( |  | ) |

Value:
if (UNLIKELY(!rb_ractor_main_p())) { \
rb_raise(rb_eRactorIsolationError, "can not access class variables from non-main Ractors"); \
}
UNLIKELY
#define UNLIKELY(x)
Definition: ffi_common.h:126
rb_eRactorIsolationError
VALUE rb_eRactorIsolationError
Definition: ractor.c:23

Definition at line 915 of file variable.c.

## ◆ CVAR_FOREACH_ANCESTORS

#define CVAR_FOREACH_ANCESTORS | ( |  | klass,
|  |  | v,
|  |  | r
| ) |  |

Value:
for (klass = cvar_front_klass(klass); klass; klass = RCLASS_SUPER(klass)) { \
if (cvar_lookup_at(klass, id, (v))) { \
r; \
} \
}
RCLASS_SUPER
#define RCLASS_SUPER
Definition: rclass.h:33

Definition at line 3332 of file variable.c.

## ◆ CVAR_LOOKUP

#define CVAR_LOOKUP | ( |  | v,
|  |  | r
| ) |  |

Value:
do {\
CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR(); \
if (cvar_lookup_at(klass, id, (v))) {r;}\
CVAR_FOREACH_ANCESTORS(klass, v, r);\
} while(0)

Definition at line 3339 of file variable.c.

## ◆ id_for_var

#define id_for_var | ( |  | obj,
|  |  | name,
|  |  | part,
|  |  | type
| ) |  | id_for_var_message(obj, name, type, "`%1$s' is not allowed as "#part" "#type" variable name")

Definition at line 1812 of file variable.c.

## ◆ id_for_var_message

#define id_for_var_message | ( |  | obj,
|  |  | name,
|  |  | type,
|  |  | message
| ) |  | check_id_type(obj, &(name), rb_is_##type##_id, rb_is_##type##_name, message, strlen(message))

Definition at line 1814 of file variable.c.

## ◆ rb_is_constant_id

#define rb_is_constant_id rb_is_const_id

Definition at line 1810 of file variable.c.

## ◆ rb_is_constant_name

#define rb_is_constant_name rb_is_const_name

Definition at line 1811 of file variable.c.

## Typedef Documentation

## ◆ fallback_func

typedef VALUE(* fallback_func) (VALUE obj, VALUE name)

Definition at line 143 of file variable.c.

## ◆ rb_gvar_compact_t

typedef void rb_gvar_compact_t(void *var)

Definition at line 42 of file variable.c.

## ◆ rb_ivar_foreach_callback_func

typedef int rb_ivar_foreach_callback_func(ID key, VALUE val, st_data_t arg)

Definition at line 1540 of file variable.c.

## Function Documentation

## ◆ Init_var_tables()

void Init_var_tables | ( | void |  | ) |

Definition at line 63 of file variable.c.

References rb_id_table_create(), and st_init_numtable.

## ◆ rb_alias_variable()

void rb_alias_variable | ( | ID | name1,
|  | ID | name2
| ) |  |

Definition at line 843 of file variable.c.

References ALLOC, rb_global_variable::block_trace, rb_global_variable::counter, rb_global_entry::id, trace_var::next, rb_eRactorIsolationError, rb_eRuntimeError, rb_id_table_insert(), rb_id_table_lookup(), rb_raise(), rb_global_variable::trace, rb_global_entry::var, and xfree.

Referenced by Init_load().

## ◆ rb_attr_delete()

VALUE rb_attr_delete | ( | VALUE | obj,
|  | ID | id
| ) |  |

Definition at line 1287 of file variable.c.

References Qnil.

## ◆ rb_attr_get()

VALUE rb_attr_get | ( | VALUE | obj,
|  | ID | id
| ) |  |

Definition at line 1242 of file variable.c.

References Qnil, and rb_ivar_lookup().

Referenced by ossl_asn1_get_asn1type(), rb_dtrace_setup(), rb_error_frozen_object(), rb_refinement_module_get_refined_class(), rb_singleton_class_clone_and_attach(), rb_singleton_class_get(), rb_singleton_class_internal_p(), and rb_syntax_error_append().

## ◆ rb_autoload()

void rb_autoload | ( | VALUE | mod,
|  | ID | id,
|  | const char * | file
| ) |  |

Definition at line 2149 of file variable.c.

References mod, rb_autoload_str(), rb_eArgError, rb_fstring_cstr, and rb_raise().

## ◆ rb_autoload_at_p()

VALUE rb_autoload_at_p | ( | VALUE | mod,
|  | ID | id,
|  | int | recur
| ) |  |

Definition at line 2517 of file variable.c.

References autoload_data_i::feature, load(), mod, Qnil, RCLASS_SUPER, and recur.

Referenced by rb_autoload_p().

## ◆ rb_autoload_load()

VALUE rb_autoload_load | ( | VALUE | mod,
|  | ID | id
| ) |  |

Definition at line 2452 of file variable.c.

References autoload_state::ac, CONST_DEPRECATED, CONST_VISIBILITY_MASK, rb_const_entry_struct::flag, autoload_data_i::fork_gen, load(), mod, Qfalse, rb_const_lookup(), rb_ensure(), RB_GC_GUARD, rb_sourcefile(), rb_thread_current(), autoload_state::result, autoload_data_i::state, autoload_state::thread, and autoload_state::waitq.

## ◆ rb_autoload_p()

VALUE rb_autoload_p | ( | VALUE | mod,
|  | ID | id
| ) |  |

Definition at line 2511 of file variable.c.

References mod, rb_autoload_at_p(), and TRUE.

## ◆ rb_autoload_str()

void rb_autoload_str | ( | VALUE | mod,
|  | ID | id,
|  | VALUE | file
| ) |  |

Definition at line 2158 of file variable.c.

References autoload_const::ad, check_autoload_table, autoload_const::cnode, CONST_PUBLIC, autoload_data_i::constants, DATA_PTR, autoload_data_i::feature, autoload_const::flag, id, autoload_const::id, mod, autoload_const::mod, NIL_P, PRIsVALUE, Qnil, Qundef, rb_check_typeddata(), rb_const_lookup(), rb_const_set(), rb_eArgError, rb_eNameError, rb_fstring(), rb_gc_register_mark_object(), rb_hash_aref(), rb_hash_aset(), rb_ident_hash_new(), rb_is_const_id(), rb_obj_hide(), RB_OBJ_WRITTEN, rb_raise(), RCLASS_IV_TBL, RSTRING_LEN, st_add_direct, st_init_numtable, st_insert, st_lookup, autoload_data_i::state, T_STRING, TypedData_Make_Struct, TypedData_Wrap_Struct, rb_const_entry_struct::value, and autoload_const::value.

Referenced by rb_autoload().

## ◆ rb_autoloading_value()

int rb_autoloading_value | ( | VALUE | mod,
|  | ID | id,
|  | VALUE * | value,
|  | rb_const_flag_t * | flag
| ) |  |

Definition at line 2299 of file variable.c.

References FALSE, autoload_const::flag, mod, TRUE, and autoload_const::value.

## ◆ rb_class2name()

const char * rb_class2name | ( | VALUE | klass | ) |

Definition at line 299 of file variable.c.

References NIL_P, NULL, rb_class_real(), and RSTRING_PTR.

Referenced by rb_obj_classname(), and rb_profile_frame_classpath().

## ◆ rb_class_ivar_set()

int rb_class_ivar_set | ( | VALUE | obj,
|  | ID | key,
|  | VALUE | value
| ) |  |

Definition at line 3589 of file variable.c.

References key, Qundef, RB_OBJ_WRITTEN, RCLASS_IV_TBL, and st_insert.

Referenced by rb_cvar_set(), and rb_singleton_class_attached().

## ◆ rb_class_name()

VALUE rb_class_name | ( | VALUE | klass | ) |

Definition at line 293 of file variable.c.

References rb_class_path(), and rb_class_real().

Referenced by rb_any_to_s(), and rb_const_warn_if_deprecated().

## ◆ rb_class_path()

VALUE rb_class_path | ( | VALUE | klass | ) |

Definition at line 169 of file variable.c.

References NIL_P, and rb_str_dup().

Referenced by rb_class_name(), rb_define_class_id_under(), rb_dtrace_setup(), rb_dump_literal(), and rb_profile_frame_classpath().

## ◆ rb_class_path_cached()

VALUE rb_class_path_cached | ( | VALUE | klass | ) |

Definition at line 178 of file variable.c.

Referenced by rb_raw_obj_info().

## ◆ rb_const_defined()

int rb_const_defined | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2928 of file variable.c.

References FALSE, and TRUE.

Referenced by Init_cparse(), Init_fiddle(), Init_strscan(), rb_define_class(), and rb_define_module().

## ◆ rb_const_defined_at()

int rb_const_defined_at | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2934 of file variable.c.

References FALSE, and TRUE.

Referenced by rb_const_remove(), rb_define_class_id_under(), and rb_define_module_id_under().

## ◆ rb_const_defined_from()

int rb_const_defined_from | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2922 of file variable.c.

References FALSE, and TRUE.

## ◆ rb_const_get()

VALUE rb_const_get | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2624 of file variable.c.

References FALSE, and TRUE.

Referenced by Init_cparse(), Init_objspace(), Init_parser(), rb_define_class(), rb_define_module(), and rb_fiddle_generic_to_value().

## ◆ rb_const_get_at()

VALUE rb_const_get_at | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2630 of file variable.c.

References FALSE, and TRUE.

Referenced by Init_cparse(), rb_define_class_id_under(), and rb_define_module_id_under().

## ◆ rb_const_get_from()

VALUE rb_const_get_from | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2618 of file variable.c.

References FALSE, and TRUE.

## ◆ rb_const_list()

VALUE rb_const_list | ( | void * | data | ) |

Definition at line 2840 of file variable.c.

References st_table::num_entries, rb_ary_new2, st_foreach_safe, and st_free_table.

Referenced by rb_mod_constants().

## ◆ rb_const_lookup()

rb_const_entry_t * rb_const_lookup | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 3614 of file variable.c.

References NULL, rb_id_table_lookup(), RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, and RCLASS_CONST_TBL.

Referenced by rb_autoload_load(), rb_autoload_str(), rb_const_remove(), and rb_deprecate_constant().

## ◆ rb_const_missing()

VALUE rb_const_missing | ( | VALUE | klass,
|  | VALUE | name
| ) |  |

Definition at line 1915 of file variable.c.

References name, rb_funcallv, and rb_vm_inc_const_missing_count().

## ◆ rb_const_remove()

VALUE rb_const_remove | ( | VALUE | mod,
|  | ID | id
| ) |  |

Definition at line 2727 of file variable.c.

References ID2SYM, mod, Qnil, Qundef, rb_check_frozen, rb_clear_constant_cache(), rb_const_defined_at(), rb_const_lookup(), rb_id_table_delete(), RCLASS_CONST_TBL, rb_const_entry_struct::value, and xfree.

Referenced by Init_fiddle(), and rb_mod_remove_const().

## ◆ rb_const_set()

void rb_const_set | ( | VALUE | klass,
|  | ID | id,
|  | VALUE | val
| ) |  |

Definition at line 3003 of file variable.c.

References CONST_PUBLIC, id, autoload_const::mod, NIL_P, PRIsVALUE, rb_clear_constant_cache(), rb_cObject, rb_eRactorIsolationError, rb_eTypeError, rb_id2str, rb_id_table_create(), rb_id_table_insert(), rb_ivar_set(), rb_raise(), RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, RCLASS_CONST_TBL, and ZALLOC.

Referenced by Init_class_hierarchy(), Init_strscan(), InitVM_Random(), rb_autoload_str(), rb_define_class(), rb_define_class_id_under(), rb_define_const(), rb_define_module(), rb_define_module_id_under(), and ruby_init_loadpath().

## ◆ rb_const_source_location()

VALUE rb_const_source_location | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2694 of file variable.c.

References FALSE, and TRUE.

## ◆ rb_const_source_location_at()

VALUE rb_const_source_location_at | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2700 of file variable.c.

References FALSE, and TRUE.

## ◆ rb_const_warn_if_deprecated()

void rb_const_warn_if_deprecated | ( | const rb_const_entry_t * | ce,
|  | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2533 of file variable.c.

References PRIsVALUE, rb_category_warn, rb_class_name(), rb_cObject, RB_CONST_DEPRECATED_P, RB_WARN_CATEGORY_DEPRECATED, and rb_warning_category_enabled_p().

## ◆ rb_copy_generic_ivar()

void rb_copy_generic_ivar | ( | VALUE | clone,
|  | VALUE | obj
| ) |  |

Definition at line 1638 of file variable.c.

References FL_EXIVAR, FL_SET, FL_TEST, FL_UNSET, givar_copy::iv_index_tbl, gen_ivtbl::ivptr, givar_copy::ivtbl, givar_copy::klass, gen_ivtbl::numiv, givar_copy::obj, Qundef, rb_check_frozen, rb_free_generic_ivar(), rb_obj_class(), RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, and st_insert.

Referenced by rb_hash_dup().

## ◆ rb_cv_get()

VALUE rb_cv_get | ( | VALUE | klass,
|  | const char * | name
| ) |  |

Definition at line 3413 of file variable.c.

References name, and rb_cvar_get().

## ◆ rb_cv_set()

void rb_cv_set | ( | VALUE | klass,
|  | const char * | name,
|  | VALUE | val
| ) |  |

Definition at line 3406 of file variable.c.

References name, and rb_cvar_set().

## ◆ rb_cvar_defined()

VALUE rb_cvar_defined | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 3387 of file variable.c.

References CVAR_LOOKUP, Qfalse, and Qtrue.

Referenced by rb_mod_remove_cvar().

## ◆ rb_cvar_get()

VALUE rb_cvar_get | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 3371 of file variable.c.

References CVAR_LOOKUP, and ID2SYM.

Referenced by rb_cv_get().

## ◆ rb_cvar_set()

void rb_cvar_set | ( | VALUE | klass,
|  | ID | id,
|  | VALUE | val
| ) |  |

Definition at line 3346 of file variable.c.

References CVAR_LOOKUP, rb_class_ivar_set(), RBASIC, RCLASS_IV_TBL, st_init_numtable, and T_ICLASS.

Referenced by rb_cv_set(), and rb_define_class_variable().

## ◆ rb_define_class_variable()

void rb_define_class_variable | ( | VALUE | klass,
|  | const char * | name,
|  | VALUE | val
| ) |  |

Definition at line 3420 of file variable.c.

References name, and rb_cvar_set().

## ◆ rb_define_const()

void rb_define_const | ( | VALUE | klass,
|  | const char * | name,
|  | VALUE | val
| ) |  |

Definition at line 3150 of file variable.c.

References name, rb_const_set(), rb_gc_register_mark_object(), rb_intern(), rb_is_const_id(), and rb_warn().

Referenced by exp2(), Init_bigdecimal(), Init_Bignum(), Init_Complex(), Init_cparse(), Init_date_core(), Init_dbm(), Init_etc(), Init_fcntl(), Init_fiddle(), Init_fiddle_function(), Init_fiddle_handle(), Init_fiddle_pointer(), Init_File(), Init_GC(), Init_gdbm(), Init_IO(), Init_limits(), Init_nkf(), Init_Numeric(), Init_openssl(), Init_ossl_asn1(), Init_ossl_config(), Init_ossl_ec(), Init_ossl_ocsp(), Init_ossl_pkcs7(), Init_ossl_ssl(), Init_ossl_ts(), Init_ossl_x509name(), Init_psych_parser(), Init_readline(), Init_Regexp(), Init_sizeof(), Init_stringio(), Init_Thread(), Init_VM(), Init_win32ole(), Init_win32ole_variant(), Init_win32ole_variant_m(), Init_zlib(), InitVM_process(), InitVM_Random(), InitVM_transcode(), rb_define_global_const(), and rb_file_const().

## ◆ rb_define_global_const()

void rb_define_global_const | ( | const char * | name,
|  | VALUE | val
| ) |  |

Definition at line 3162 of file variable.c.

References name, rb_cObject, and rb_define_const().

Referenced by Init_Hash(), Init_IO(), Init_ruby_description(), Init_version(), Init_VM(), and ruby_prog_init().

## ◆ rb_define_hooked_variable()

void rb_define_hooked_variable | ( | const char * | name,
|  | VALUE * | var,
|  | rb_gvar_getter_t * | getter,
|  | rb_gvar_setter_t * | setter
| ) |  |

Definition at line 562 of file variable.c.

References rb_global_variable::data, rb_global_variable::getter, rb_global_variable::marker, name, Qnil, RB_GC_GUARD, rb_gvar_var_getter, rb_gvar_var_marker, rb_gvar_var_setter, rb_global_variable::setter, and rb_global_entry::var.

Referenced by rb_define_readonly_variable(), rb_define_variable(), and rb_define_virtual_variable().

## ◆ rb_define_readonly_variable()

void rb_define_readonly_variable | ( | const char * | name,
|  | const VALUE * | var
| ) |  |

Definition at line 587 of file variable.c.

References name, rb_define_hooked_variable(), and rb_gvar_readonly_setter.

Referenced by Init_IO().

## ◆ rb_define_variable()

void rb_define_variable | ( | const char * | name,
|  | VALUE * | var
| ) |  |

Definition at line 581 of file variable.c.

References name, and rb_define_hooked_variable().

## ◆ rb_define_virtual_variable()

void rb_define_virtual_variable | ( | const char * | name,
|  | rb_gvar_getter_t * | getter,
|  | rb_gvar_setter_t * | setter
| ) |  |

Definition at line 593 of file variable.c.

References rb_global_variable::getter, name, rb_define_hooked_variable(), rb_gvar_readonly_setter, rb_gvar_val_getter, and rb_global_variable::setter.

## ◆ rb_deprecate_constant()

void rb_deprecate_constant | ( | VALUE | mod,
|  | const char * | name
| ) |  |

Definition at line 3217 of file variable.c.

References CONST_DEPRECATED, rb_const_entry_struct::flag, id, ID2SYM, len, mod, name, NULL, rb_check_id_cstr(), rb_class_modify_check(), rb_const_lookup(), rb_fstring_new(), and strlen().

## ◆ rb_f_global_variables()

VALUE rb_f_global_variables | ( | void |  | ) |

Definition at line 811 of file variable.c.

References ID2SYM, NIL_P, rb_ary_new(), rb_ary_push(), rb_backref_get(), rb_eRactorIsolationError, rb_id_table_foreach(), rb_intern2(), rb_match_count(), rb_match_nth_defined(), rb_raise(), rb_sprintf(), rb_str_intern(), and sym.

## ◆ rb_f_trace_var()

VALUE rb_f_trace_var | ( | int | argc,
|  | const VALUE * | argv
| ) |  |

Definition at line 610 of file variable.c.

References ALLOC, argc, argv, trace_var::data, trace_var::func, trace_var::next, NIL_P, Qnil, rb_block_proc(), rb_f_untrace_var(), rb_scan_args(), rb_to_id(), trace_var::removed, rb_global_variable::trace, and rb_global_entry::var.

## ◆ rb_f_untrace_var()

VALUE rb_f_untrace_var | ( | int | argc,
|  | const VALUE * | argv
| ) |  |

Definition at line 656 of file variable.c.

References argc, argv, rb_global_variable::block_trace, trace_var::data, id, trace_var::next, NIL_P, NULL, PRIsVALUE, Qnil, rb_ary_new(), rb_ary_new3, rb_ary_push(), rb_check_id(), rb_name_error(), rb_name_error_str(), rb_scan_args(), trace_var::removed, rb_global_variable::trace, and rb_global_entry::var.

Referenced by rb_f_trace_var().

## ◆ rb_free_generic_ivar()

void rb_free_generic_ivar | ( | VALUE | obj | ) |

Definition at line 1157 of file variable.c.

References key, st_delete, and xfree.

Referenced by rb_copy_generic_ivar().

## ◆ rb_gc_mark_global_tbl()

void rb_gc_mark_global_tbl | ( | void |  | ) |

Definition at line 497 of file variable.c.

References rb_id_table_foreach_values().

## ◆ rb_gc_update_global_tbl()

void rb_gc_update_global_tbl | ( | void |  | ) |

Definition at line 515 of file variable.c.

References rb_id_table_foreach_values().

## ◆ rb_generic_ivar_memsize()

size_t rb_generic_ivar_memsize | ( | VALUE | obj | ) |

Definition at line 1167 of file variable.c.

References gen_ivtbl::numiv.

## ◆ rb_gv_get()

VALUE rb_gv_get | ( | const char * | name | ) |

Definition at line 768 of file variable.c.

References name, Qnil, rb_gvar_get(), and rb_warning().

## ◆ rb_gv_set()

VALUE rb_gv_set | ( | const char * | name,
|  | VALUE | val
| ) |  |

Definition at line 754 of file variable.c.

References name, and rb_gvar_set().

## ◆ rb_gvar_defined()

VALUE rb_gvar_defined | ( | ID | id | ) |

Definition at line 781 of file variable.c.

References rb_global_variable::getter, Qfalse, Qtrue, rb_gvar_undef_getter, and rb_global_entry::var.

## ◆ rb_gvar_get()

VALUE rb_gvar_get | ( | ID | id | ) |

Definition at line 760 of file variable.c.

References rb_global_variable::data, rb_global_variable::getter, rb_global_entry::id, and rb_global_entry::var.

Referenced by rb_gv_get().

## ◆ rb_gvar_getter_function_of()

rb_gvar_getter_t * rb_gvar_getter_function_of | ( | ID | id | ) |

Definition at line 789 of file variable.c.

References rb_global_variable::getter, and rb_global_entry::var.

## ◆ rb_gvar_ractor_local()

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

Definition at line 359 of file variable.c.

References name, rb_global_entry::ractor_local, and rb_intern().

Referenced by Init_eval(), Init_IO(), Init_Regexp(), InitVM_process(), and ruby_prog_init().

## ◆ rb_gvar_readonly_setter()

void rb_gvar_readonly_setter | ( | VALUE | v,
|  | ID | id,
|  | VALUE * | _
| ) |  |

Definition at line 475 of file variable.c.

References PRIsVALUE, and rb_name_error().

## ◆ rb_gvar_set()

VALUE rb_gvar_set | ( | ID | id,
|  | VALUE | val
| ) |  |

Definition at line 745 of file variable.c.

Referenced by rb_gv_set().

## ◆ rb_gvar_setter_function_of()

rb_gvar_setter_t * rb_gvar_setter_function_of | ( | ID | id | ) |

Definition at line 796 of file variable.c.

References rb_global_variable::setter, and rb_global_entry::var.

## ◆ rb_gvar_undef_getter()

VALUE rb_gvar_undef_getter | ( | ID | id,
|  | VALUE * | _
| ) |  |

Definition at line 396 of file variable.c.

References PRIsVALUE, Qnil, and rb_warning().

## ◆ rb_gvar_undef_marker()

void rb_gvar_undef_marker | ( | VALUE * | var | ) |

Definition at line 431 of file variable.c.

## ◆ rb_gvar_undef_setter()

void rb_gvar_undef_setter | ( | VALUE | val,
|  | ID | id,
|  | VALUE * | _
| ) |  |

Definition at line 419 of file variable.c.

References rb_global_variable::compactor, rb_global_variable::data, rb_global_variable::getter, rb_global_variable::marker, rb_gvar_val_getter, rb_gvar_val_marker, rb_gvar_val_setter, rb_global_variable::setter, and rb_global_entry::var.

## ◆ rb_gvar_val_getter()

VALUE rb_gvar_val_getter | ( | ID | id,
|  | VALUE * | data
| ) |  |

Definition at line 436 of file variable.c.

References rb_global_variable::data.

## ◆ rb_gvar_val_marker()

void rb_gvar_val_marker | ( | VALUE * | var | ) |

Definition at line 449 of file variable.c.

References rb_global_variable::data, and rb_gc_mark_movable().

## ◆ rb_gvar_val_setter()

void rb_gvar_val_setter | ( | VALUE | val,
|  | ID | id,
|  | VALUE * | _
| ) |  |

Definition at line 442 of file variable.c.

References rb_global_variable::data, and rb_global_entry::var.

## ◆ rb_gvar_var_getter()

VALUE rb_gvar_var_getter | ( | ID | id,
|  | VALUE * | var
| ) |  |

Definition at line 456 of file variable.c.

References Qnil.

## ◆ rb_gvar_var_marker()

void rb_gvar_var_marker | ( | VALUE * | var | ) |

Definition at line 469 of file variable.c.

References rb_gc_mark_maybe().

## ◆ rb_gvar_var_setter()

void rb_gvar_var_setter | ( | VALUE | val,
|  | ID | id,
|  | VALUE * | data
| ) |  |

Definition at line 463 of file variable.c.

References rb_global_variable::data.

## ◆ rb_init_iv_list()

void rb_init_iv_list | ( | VALUE | obj | ) |

Definition at line 1438 of file variable.c.

References len, st_table::num_entries, and ROBJECT_IV_INDEX_TBL.

## ◆ rb_iv_get()

VALUE rb_iv_get | ( | VALUE | obj,
|  | const char * | name
| ) |  |

Definition at line 3569 of file variable.c.

References name, Qnil, rb_check_id_cstr(), rb_ivar_get(), rb_usascii_encoding(), and strlen().

## ◆ rb_iv_set()

VALUE rb_iv_set | ( | VALUE | obj,
|  | const char * | name,
|  | VALUE | val
| ) |  |

Definition at line 3580 of file variable.c.

References name, rb_intern(), and rb_ivar_set().

Referenced by Init_md5(), Init_rmd160(), and Init_sha1().

## ◆ rb_iv_tbl_copy()

void rb_iv_tbl_copy | ( | VALUE | dst,
|  | VALUE | src
| ) |  |

Definition at line 3605 of file variable.c.

References RCLASS_IV_TBL, st_copy, and st_foreach.

Referenced by rb_singleton_class_clone_and_attach().

## ◆ rb_ivar_count()

st_index_t rb_ivar_count | ( | VALUE | obj | ) |

Definition at line 1733 of file variable.c.

References BUILTIN_TYPE, count, FL_EXIVAR, FL_TEST, gen_ivtbl::ivptr, num, st_table::num_entries, Qundef, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, SPECIAL_CONST_P, T_CLASS, T_MODULE, and T_OBJECT.

## ◆ rb_ivar_defined()

VALUE rb_ivar_defined | ( | VALUE | obj,
|  | ID | id
| ) |  |

Definition at line 1510 of file variable.c.

References BUILTIN_TYPE, FL_EXIVAR, FL_TEST, Qfalse, Qtrue, Qundef, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, SPECIAL_CONST_P, st_is_member, T_CLASS, T_MODULE, and T_OBJECT.

## ◆ rb_ivar_foreach()

void rb_ivar_foreach | ( | VALUE | obj,
|  | rb_ivar_foreach_callback_func * | func,
|  | st_data_t | arg
| ) |  |

Definition at line 1710 of file variable.c.

References BUILTIN_TYPE, FL_EXIVAR, FL_TEST, RCLASS_IV_TBL, SPECIAL_CONST_P, st_foreach_safe, T_CLASS, T_MODULE, and T_OBJECT.

Referenced by rb_obj_instance_variables().

## ◆ rb_ivar_generic_ivtbl_lookup()

int rb_ivar_generic_ivtbl_lookup | ( | VALUE | obj,
|  | struct gen_ivtbl ** | ivtbl
| ) |  |

Definition at line 960 of file variable.c.

## ◆ rb_ivar_generic_lookup_with_index()

VALUE rb_ivar_generic_lookup_with_index | ( | VALUE | obj,
|  | ID | id,
|  | uint32_t | index
| ) |  |

Definition at line 966 of file variable.c.

References gen_ivtbl::ivptr, LIKELY, gen_ivtbl::numiv, and Qundef.

## ◆ rb_ivar_get()

VALUE rb_ivar_get | ( | VALUE | obj,
|  | ID | id
| ) |  |

Definition at line 1234 of file variable.c.

References Qnil, RB_DEBUG_COUNTER_INC, and rb_ivar_lookup().

Referenced by EVENTSINK_Invoke(), rb_class_modify_check(), rb_iv_get(), rb_method_name_error(), and rb_profile_frame_classpath().

## ◆ rb_ivar_lookup()

VALUE rb_ivar_lookup | ( | VALUE | obj,
|  | ID | id,
|  | VALUE | undef
| ) |  |

Definition at line 1192 of file variable.c.

References BUILTIN_TYPE, FL_EXIVAR, FL_TEST, len, ptr, Qundef, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, SPECIAL_CONST_P, st_lookup, T_CLASS, T_MODULE, and T_OBJECT.

Referenced by rb_attr_get(), rb_ivar_get(), and rb_memory_view_register().

## ◆ rb_ivar_set()

VALUE rb_ivar_set | ( | VALUE | obj,
|  | ID | id,
|  | VALUE | val
| ) |  |

Definition at line 1493 of file variable.c.

References rb_check_frozen.

Referenced by create_win32ole_param(), create_win32ole_variable(), olerecord_set_ivar(), rb_arith_seq_new(), rb_const_set(), rb_ec_setup_exception(), rb_error_frozen_object(), rb_frozen_error_raise(), rb_iv_set(), rb_key_err_new(), rb_memory_view_register(), rb_set_class_path_string(), and ruby_init_loadpath().

## ◆ rb_ivar_set_internal()

void rb_ivar_set_internal | ( | VALUE | obj,
|  | ID | id,
|  | VALUE | val
| ) |  |

Definition at line 1501 of file variable.c.

References rb_is_instance_id(), and VM_ASSERT.

## ◆ rb_mark_generic_ivar()

void rb_mark_generic_ivar | ( | VALUE | obj | ) |

Definition at line 1137 of file variable.c.

## ◆ rb_mod_class_variables()

VALUE rb_mod_class_variables | ( | int | argc,
|  | const VALUE * | argv,
|  | VALUE | mod
| ) |  |

Definition at line 3512 of file variable.c.

References argc, argv, mod, rb_check_arity, and RTEST.

## ◆ rb_mod_const_at()

void * rb_mod_const_at | ( | VALUE | mod,
|  | void * | data
| ) |  |

Definition at line 2801 of file variable.c.

References mod, rb_id_table_foreach(), RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, RCLASS_CONST_TBL, and st_init_numtable.

Referenced by rb_mod_const_of().

## ◆ rb_mod_const_missing()

VALUE rb_mod_const_missing | ( | VALUE | klass,
|  | VALUE | name
| ) |  |

Definition at line 1960 of file variable.c.

References name, Qnil, rb_vm_pop_cfunc_frame(), and UNREACHABLE_RETURN.

## ◆ rb_mod_const_of()

void * rb_mod_const_of | ( | VALUE | mod,
|  | void * | data
| ) |  |

Definition at line 2818 of file variable.c.

References mod, rb_cObject, rb_mod_const_at(), and RCLASS_SUPER.

Referenced by rb_mod_constants().

## ◆ rb_mod_constants()

VALUE rb_mod_constants | ( | int | argc,
|  | const VALUE * | argv,
|  | VALUE | mod
| ) |  |

Definition at line 2872 of file variable.c.

References argc, argv, mod, rb_check_arity, rb_const_list(), rb_mod_const_of(), and RTEST.

## ◆ rb_mod_deprecate_constant()

VALUE rb_mod_deprecate_constant | ( | int | argc,
|  | const VALUE * | argv,
|  | VALUE | obj
| ) |  |

Definition at line 3281 of file variable.c.

References argc, argv, and CONST_DEPRECATED.

## ◆ rb_mod_name()

VALUE rb_mod_name | ( | VALUE | mod | ) |

Definition at line 118 of file variable.c.

References mod.

## ◆ rb_mod_private_constant()

VALUE rb_mod_private_constant | ( | int | argc,
|  | const VALUE * | argv,
|  | VALUE | obj
| ) |  |

Definition at line 3241 of file variable.c.

References argc, argv, CONST_PRIVATE, and CONST_VISIBILITY_MASK.

## ◆ rb_mod_public_constant()

VALUE rb_mod_public_constant | ( | int | argc,
|  | const VALUE * | argv,
|  | VALUE | obj
| ) |  |

Definition at line 3255 of file variable.c.

References argc, argv, CONST_PUBLIC, and CONST_VISIBILITY_MASK.

## ◆ rb_mod_remove_const()

VALUE rb_mod_remove_const | ( | VALUE | mod,
|  | VALUE | name
| ) |  |

Definition at line 2716 of file variable.c.

References id_for_var, mod, name, and rb_const_remove().

## ◆ rb_mod_remove_cvar()

VALUE rb_mod_remove_cvar | ( | VALUE | mod,
|  | VALUE | name
| ) |  |

Definition at line 3547 of file variable.c.

References id, ID2SYM, id_for_var_message, mod, name, Qundef, rb_check_frozen, rb_cvar_defined(), RCLASS_IV_TBL, st_delete, and UNREACHABLE_RETURN.

## ◆ rb_mv_generic_ivar()

void rb_mv_generic_ivar | ( | VALUE | rsrc,
|  | VALUE | dst
| ) |  |

Definition at line 1147 of file variable.c.

References key, st_delete, and st_insert.

## ◆ rb_obj_classname()

const char * rb_obj_classname | ( | VALUE | obj | ) |

Definition at line 308 of file variable.c.

References CLASS_OF, and rb_class2name().

Referenced by rb_builtin_class_name(), rb_Hash(), rb_hash_set_default_proc(), and rb_int_cmp().

## ◆ rb_obj_instance_variables()

VALUE rb_obj_instance_variables | ( | VALUE | obj | ) |

Definition at line 1801 of file variable.c.

References rb_ary_new(), and rb_ivar_foreach().

## ◆ rb_obj_remove_instance_variable()

VALUE rb_obj_remove_instance_variable | ( | VALUE | obj,
|  | VALUE | name
| ) |  |

Definition at line 1856 of file variable.c.

References BUILTIN_TYPE, FL_EXIVAR, FL_TEST, id, id_for_var, name, Qnil, Qundef, rb_check_frozen, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, st_delete, T_CLASS, T_MODULE, T_OBJECT, and UNREACHABLE_RETURN.

## ◆ rb_path2class()

VALUE rb_path2class | ( | const char * | path | ) |

Definition at line 287 of file variable.c.

References rb_path_to_class(), and rb_str_new_cstr.

Referenced by Init_bubblebabble(), Init_generator(), Init_md5(), Init_ossl_digest(), Init_parser(), Init_rmd160(), Init_sha1(), and Init_sha2().

## ◆ rb_path_to_class()

VALUE rb_path_to_class | ( | VALUE | pathname | ) |

Definition at line 242 of file variable.c.

References FALSE, id, PRIsVALUE, Qundef, rb_check_id_cstr(), rb_cObject, rb_eArgError, rb_enc_asciicompat, rb_enc_get(), rb_eTypeError, RB_GC_GUARD, rb_raise(), rb_str_subseq(), RSTRING_LEN, RSTRING_PTR, TRUE, and UNREACHABLE_RETURN.

Referenced by rb_path2class().

## ◆ rb_public_const_defined_from()

int rb_public_const_defined_from | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2940 of file variable.c.

References TRUE.

## ◆ rb_public_const_get_at()

VALUE rb_public_const_get_at | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2642 of file variable.c.

References FALSE, and TRUE.

## ◆ rb_public_const_get_from()

VALUE rb_public_const_get_from | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 2636 of file variable.c.

References TRUE.

## ◆ rb_replace_generic_ivar()

void rb_replace_generic_ivar | ( | VALUE | clone,
|  | VALUE | obj
| ) |  |

Definition at line 1689 of file variable.c.

References FL_EXIVAR, FL_SET, FL_TEST, NULL, givar_copy::obj, rb_bug(), RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, RUBY_ASSERT, st_delete, st_insert, and st_lookup.

## ◆ rb_search_class_path()

VALUE rb_search_class_path | ( | VALUE | klass | ) |

Definition at line 191 of file variable.c.

Referenced by rb_vm_bugreport().

## ◆ rb_set_class_path()

void rb_set_class_path | ( | VALUE | klass,
|  | VALUE | under,
|  | const char * | name
| ) |  |

Definition at line 234 of file variable.c.

References name, OBJ_FREEZE, rb_set_class_path_string(), rb_str_new2, and str.

Referenced by Init_IO(), and Init_VM().

## ◆ rb_set_class_path_string()

void rb_set_class_path_string | ( | VALUE | klass,
|  | VALUE | under,
|  | VALUE | name
| ) |  |

Definition at line 214 of file variable.c.

References name, rb_cObject, rb_ivar_set(), rb_str_new_frozen(), and str.

Referenced by Init_class_hierarchy(), rb_define_class_id_under(), rb_define_module_id_under(), and rb_set_class_path().

## ◆ rb_st_nth_key()

st_data_t rb_st_nth_key | ( | st_table * | tab,
|  | st_index_t | index
| ) |  |

Definition at line 2244 of file st.c.

References LIKELY, and rb_bug().