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_trb_gvar_getter_function_of (ID id)
 
rb_gvar_setter_trb_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_trb_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"); \
}
#define UNLIKELY(x)
Definition: ffi_common.h:126
VALUE rb_eRactorIsolationError
Definition: ractor.c:23

Definition at line 915 of file variable.c.

◆ CVAR_FOREACH_ANCESTORS

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

Definition at line 3332 of file variable.c.

◆ CVAR_LOOKUP

#define CVAR_LOOKUP (   v,
 
)
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 
)

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

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

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

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

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

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

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

◆ rb_const_set()

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

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

◆ rb_copy_generic_ivar()

void rb_copy_generic_ivar ( VALUE  clone,
VALUE  obj 
)

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

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

◆ rb_define_global_const()

void rb_define_global_const ( const char *  name,
VALUE  val 
)

◆ rb_define_hooked_variable()

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

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

◆ rb_deprecate_constant()

void rb_deprecate_constant ( VALUE  mod,
const char *  name 
)

◆ rb_f_global_variables()

VALUE rb_f_global_variables ( void  )

◆ rb_f_trace_var()

VALUE rb_f_trace_var ( int  argc,
const VALUE argv 
)

◆ rb_f_untrace_var()

VALUE rb_f_untrace_var ( int  argc,
const VALUE argv 
)

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

◆ rb_gvar_get()

VALUE rb_gvar_get ( ID  id)

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

◆ 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 _ 
)

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

◆ rb_ivar_defined()

VALUE rb_ivar_defined ( VALUE  obj,
ID  id 
)

◆ rb_ivar_foreach()

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

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

◆ rb_ivar_lookup()

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

◆ rb_ivar_set()

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

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

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

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

◆ rb_path2class()

VALUE rb_path2class ( const char *  path)

◆ rb_path_to_class()

VALUE rb_path_to_class ( VALUE  pathname)

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

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

◆ 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().