Ruby  3.4.0dev (2024-11-22 revision 0989400a925cd201defdca9eb28eb87200b30785)
variable.h
Go to the documentation of this file.
1 #ifndef RBIMPL_INTERN_VARIABLE_H /*-*-C++-*-vi:se ft=cpp:*/
2 #define RBIMPL_INTERN_VARIABLE_H
26 #include "ruby/internal/value.h"
27 #include "ruby/st.h"
28 
30 
31 /* variable.c */
32 
33 
41 
50 
59 
69 void rb_set_class_path(VALUE klass, VALUE space, const char *name);
70 
80 void rb_set_class_path_string(VALUE klass, VALUE space, VALUE name);
81 
92 
102 VALUE rb_path2class(const char *path);
103 
111 
130 VALUE rb_autoload_load(VALUE space, ID name);
131 
140 VALUE rb_autoload_p(VALUE space, ID name);
141 
154 VALUE rb_f_trace_var(int argc, const VALUE *argv);
155 
169 VALUE rb_f_untrace_var(int argc, const VALUE *argv);
170 
181 
201 void rb_alias_variable(ID dst, ID src);
202 
217 void rb_free_generic_ivar(VALUE obj);
218 
228 VALUE rb_ivar_get(VALUE obj, ID name);
229 
243 VALUE rb_ivar_set(VALUE obj, ID name, VALUE val);
244 
254 VALUE rb_ivar_defined(VALUE obj, ID name);
255 
263 void rb_ivar_foreach(VALUE obj, int (*func)(ID name, VALUE val, st_data_t arg), st_data_t arg);
264 
271 st_index_t rb_ivar_count(VALUE obj);
272 
285 VALUE rb_attr_get(VALUE obj, ID name);
286 
296 
306 
316 void *rb_mod_const_at(VALUE, void*);
317 
323 void *rb_mod_const_of(VALUE, void*);
324 
331 VALUE rb_const_list(void*);
332 
346 VALUE rb_mod_constants(int argc, const VALUE *argv, VALUE recv);
347 
360 VALUE rb_mod_remove_const(VALUE space, VALUE name);
361 
375 int rb_const_defined(VALUE space, ID name);
376 
393 int rb_const_defined_at(VALUE space, ID name);
394 
411 int rb_const_defined_from(VALUE space, ID name);
412 
425 VALUE rb_const_get(VALUE space, ID name);
426 
441 VALUE rb_const_get_at(VALUE space, ID name);
442 
457 VALUE rb_const_get_from(VALUE space, ID name);
458 
473 void rb_const_set(VALUE space, ID name, VALUE val);
474 
488 VALUE rb_const_remove(VALUE space, ID name);
489 
490 #if 0 /* EXPERIMENTAL: remove if no problem */
499 VALUE rb_mod_const_missing(VALUE space, VALUE name);
500 #endif
501 
515 VALUE rb_cvar_defined(VALUE klass, ID name);
516 
529 void rb_cvar_set(VALUE klass, ID name, VALUE val);
530 
544 VALUE rb_cvar_get(VALUE klass, ID name);
545 
565 VALUE rb_cvar_find(VALUE klass, ID name, VALUE *front);
566 
576 void rb_cv_set(VALUE klass, const char *name, VALUE val);
577 
588 VALUE rb_cv_get(VALUE klass, const char *name);
589 
598 void rb_define_class_variable(VALUE, const char*, VALUE);
599 
614 VALUE rb_mod_class_variables(int argc, const VALUE *argv, VALUE recv);
615 
625 
627 
628 #endif /* RBIMPL_INTERN_VARIABLE_H */
Tweaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
Definition: dllexport.h:74
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
Definition: dllexport.h:65
VALUE rb_mod_remove_cvar(VALUE mod, VALUE name)
Resembles Module#remove_class_variable.
Definition: variable.c:4178
VALUE rb_obj_instance_variables(VALUE obj)
Resembles Object#instance_variables.
Definition: variable.c:2195
VALUE rb_f_untrace_var(int argc, const VALUE *argv)
Deletes the passed tracer from the passed global variable, or if omitted, deletes everything.
Definition: variable.c:801
VALUE rb_const_get(VALUE space, ID name)
Identical to rb_const_defined(), except it returns the actual defined value.
Definition: variable.c:3151
VALUE rb_const_list(void *)
This is another mysterious API that comes with no documents at all.
Definition: variable.c:3385
VALUE rb_path2class(const char *path)
Resolves a Q::W::E::R-style path string to the actual class it points.
Definition: variable.c:406
VALUE rb_autoload_p(VALUE space, ID name)
Queries if an autoload is defined at a point.
Definition: variable.c:3024
VALUE rb_attr_get(VALUE obj, ID name)
Identical to rb_ivar_get()
Definition: variable.c:1358
void rb_set_class_path(VALUE klass, VALUE space, const char *name)
Names a class.
Definition: variable.c:353
VALUE rb_ivar_set(VALUE obj, ID name, VALUE val)
Identical to rb_iv_set(), except it accepts the name as an ID instead of a C string.
Definition: variable.c:1859
VALUE rb_mod_remove_const(VALUE space, VALUE name)
Resembles Module#remove_const.
Definition: variable.c:3256
VALUE rb_class_path_cached(VALUE mod)
Just another name of rb_mod_name.
Definition: variable.c:302
VALUE rb_f_trace_var(int argc, const VALUE *argv)
Traces a global variable.
Definition: variable.c:755
void * rb_mod_const_at(VALUE, void *)
This API is mysterious.
Definition: variable.c:3346
void rb_cvar_set(VALUE klass, ID name, VALUE val)
Assigns a value to a class variable.
Definition: variable.c:3943
VALUE rb_cvar_get(VALUE klass, ID name)
Obtains a value from a class variable.
Definition: variable.c:4013
VALUE rb_mod_constants(int argc, const VALUE *argv, VALUE recv)
Resembles Module#constants.
Definition: variable.c:3417
VALUE rb_cvar_find(VALUE klass, ID name, VALUE *front)
Identical to rb_cvar_get(), except it takes additional "front" pointer.
Definition: variable.c:3998
VALUE rb_path_to_class(VALUE path)
Identical to rb_path2class(), except it accepts the path as Ruby's string instead of C's.
Definition: variable.c:361
VALUE rb_ivar_get(VALUE obj, ID name)
Identical to rb_iv_get(), except it accepts the name as an ID instead of a C string.
Definition: variable.c:1350
void rb_ivar_foreach(VALUE obj, int(*func)(ID name, VALUE val, st_data_t arg), st_data_t arg)
Iterates over an object's instance variables.
void rb_const_set(VALUE space, ID name, VALUE val)
Names a constant.
Definition: variable.c:3620
VALUE rb_autoload_load(VALUE space, ID name)
Kicks the autoload procedure as if it was "touched".
Definition: variable.c:2986
VALUE rb_mod_name(VALUE mod)
Queries the name of a module.
Definition: variable.c:130
VALUE rb_class_name(VALUE obj)
Queries the name of the given object's class.
Definition: variable.c:412
VALUE rb_const_get_at(VALUE space, ID name)
Identical to rb_const_defined_at(), except it returns the actual defined value.
Definition: variable.c:3157
void rb_set_class_path_string(VALUE klass, VALUE space, VALUE name)
Identical to rb_set_class_path(), except it accepts the name as Ruby's string instead of C's.
Definition: variable.c:336
void rb_alias_variable(ID dst, ID src)
Aliases a global variable.
Definition: variable.c:987
void rb_define_class_variable(VALUE, const char *, VALUE)
Just another name of rb_cv_set.
Definition: variable.c:4053
VALUE rb_obj_remove_instance_variable(VALUE obj, VALUE name)
Resembles Object#remove_instance_variable.
Definition: variable.c:2249
st_index_t rb_ivar_count(VALUE obj)
Number of instance variables defined on an object.
Definition: variable.c:2143
VALUE rb_const_remove(VALUE space, ID name)
Identical to rb_mod_remove_const(), except it takes the name as ID instead of VALUE.
Definition: variable.c:3267
VALUE rb_const_get_from(VALUE space, ID name)
Identical to rb_const_defined_at(), except it returns the actual defined value.
Definition: variable.c:3145
VALUE rb_ivar_defined(VALUE obj, ID name)
Queries if the instance variable is defined at the object.
Definition: variable.c:1876
VALUE rb_cv_get(VALUE klass, const char *name)
Identical to rb_cvar_get(), except it accepts C's string instead of ID.
Definition: variable.c:4046
int rb_const_defined_at(VALUE space, ID name)
Identical to rb_const_defined(), except it doesn't look for parent classes.
Definition: variable.c:3479
void rb_cv_set(VALUE klass, const char *name, VALUE val)
Identical to rb_cvar_set(), except it accepts C's string instead of ID.
Definition: variable.c:4039
VALUE rb_mod_class_variables(int argc, const VALUE *argv, VALUE recv)
Resembles Module#class_variables.
Definition: variable.c:4143
VALUE rb_f_global_variables(void)
Queries the list of global variables.
Definition: variable.c:955
VALUE rb_cvar_defined(VALUE klass, ID name)
Queries if the given class has the given class variable.
Definition: variable.c:4020
VALUE rb_class_path(VALUE mod)
Identical to rb_mod_name(), except it returns #<Class: ...> style inspection for anonymous modules.
Definition: variable.c:293
int rb_const_defined_from(VALUE space, ID name)
Identical to rb_const_defined(), except it returns false for private constants.
Definition: variable.c:3467
void * rb_mod_const_of(VALUE, void *)
This is a variant of rb_mod_const_at().
Definition: variable.c:3363
int rb_const_defined(VALUE space, ID name)
Queries if the constant is defined at the namespace.
Definition: variable.c:3473
void rb_free_generic_ivar(VALUE obj)
Frees the list of instance variables.
Definition: variable.c:1155
RBIMPL_ATTR_NORETURN() void rb_eof_error(void)
Utility function to raise rb_eEOFError.
Defines RBIMPL_ATTR_NONNULL.
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull))
Definition: nonnull.h:27
Defines RBIMPL_ATTR_NORETURN.
Defines VALUE and ID.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
Definition: value.h:52
uintptr_t VALUE
Type that represents a Ruby object.
Definition: value.h:40