Ruby  3.4.0dev (2024-12-06 revision 892c46283a5ea4179500d951c9d4866c0051f27b)
Functions
class.h File Reference

(892c46283a5ea4179500d951c9d4866c0051f27b)

Public APIs related to rb_cClass/rb_cModule. More...

#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
#include "ruby/backward/2/stdarg.h"
Include dependency graph for class.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

VALUE rb_class_new (VALUE super)
 Creates a new, anonymous class. More...
 
VALUE rb_mod_init_copy (VALUE clone, VALUE orig)
 The comment that comes with this function says :nodoc:. More...
 
void rb_check_inheritable (VALUE super)
 Asserts that the given class can derive a child class. More...
 
VALUE rb_define_class_id (ID id, VALUE super)
 This is a very badly designed API that creates an anonymous class. More...
 
VALUE rb_define_class_id_under (VALUE outer, ID id, VALUE super)
 Identical to rb_define_class_under(), except it takes the name in ID instead of C's string. More...
 
VALUE rb_module_new (void)
 Creates a new, anonymous module. More...
 
VALUE rb_refinement_new (void)
 Creates a new, anonymous refinement. More...
 
VALUE rb_define_module_id (ID id)
 This is a very badly designed API that creates an anonymous module. More...
 
VALUE rb_define_module_id_under (VALUE outer, ID id)
 Identical to rb_define_module_under(), except it takes the name in ID instead of C's string. More...
 
VALUE rb_mod_included_modules (VALUE mod)
 Queries the list of included modules. More...
 
VALUE rb_mod_include_p (VALUE child, VALUE parent)
 Queries if the passed module is included by the module. More...
 
VALUE rb_mod_ancestors (VALUE mod)
 Queries the module's ancestors. More...
 
VALUE rb_class_descendants (VALUE klass)
 Queries the class's descendants. More...
 
VALUE rb_class_subclasses (VALUE klass)
 Queries the class's direct descendants. More...
 
VALUE rb_class_attached_object (VALUE klass)
 Returns the attached object for a singleton class. More...
 
VALUE rb_class_instance_methods (int argc, const VALUE *argv, VALUE mod)
 Generates an array of symbols, which are the list of method names defined in the passed class. More...
 
VALUE rb_class_public_instance_methods (int argc, const VALUE *argv, VALUE mod)
 Identical to rb_class_instance_methods(), except it returns names of methods that are public only. More...
 
VALUE rb_class_protected_instance_methods (int argc, const VALUE *argv, VALUE mod)
 Identical to rb_class_instance_methods(), except it returns names of methods that are protected only. More...
 
VALUE rb_class_private_instance_methods (int argc, const VALUE *argv, VALUE mod)
 Identical to rb_class_instance_methods(), except it returns names of methods that are private only. More...
 
VALUE rb_obj_singleton_methods (int argc, const VALUE *argv, VALUE obj)
 Identical to rb_class_instance_methods(), except it returns names of singleton methods instead of instance methods. More...
 
void rb_define_method_id (VALUE klass, ID mid, VALUE(*func)(ANYARGS), int arity)
 Identical to rb_define_method(), except it takes the name of the method in ID instead of C's string. More...
 
void rb_undef (VALUE mod, ID mid)
 Inserts a method entry that hides previous method definition of the given name. More...
 
void rb_define_protected_method (VALUE klass, const char *mid, VALUE(*func)(ANYARGS), int arity)
 Identical to rb_define_method(), except it defines a protected method. More...
 
void rb_define_private_method (VALUE klass, const char *mid, VALUE(*func)(ANYARGS), int arity)
 Identical to rb_define_method(), except it defines a private method. More...
 
void rb_define_singleton_method (VALUE obj, const char *mid, VALUE(*func)(ANYARGS), int arity)
 Identical to rb_define_method(), except it defines a singleton method. More...
 
VALUE rb_singleton_class (VALUE obj)
 Finds or creates the singleton class of the passed object. More...
 

Detailed Description

Public APIs related to rb_cClass/rb_cModule.

Author
Ruby developers ruby-.nosp@m.core.nosp@m.@ruby.nosp@m.-lan.nosp@m.g.org
Warning
Symbols prefixed with either RBIMPL or rbimpl are implementation details. Don't take them as canon. They could rapidly appear then vanish. The name (path) of this header file is also an implementation detail. Do not expect it to persist at the place it is now. Developers are free to move it anywhere anytime at will.
Note
To ruby-core: remember that this header can be possibly recursively included from extension libraries written in C++. Do not expect for instance __VA_ARGS__ is always available. We assume C99 for ruby itself but we don't assume languages of extension libraries. They could be written in C++98.

Definition in file class.h.

Function Documentation

◆ rb_class_descendants()

VALUE rb_class_descendants ( VALUE  klass)

Queries the class's descendants.

This routine gathers classes that are subclasses of the given class (or subclasses of those subclasses, etc.), returning an array of classes that have the given class as an ancestor. The returned array does not include the given class or singleton classes.

Parameters
[in]klassA class.
Returns
An array of classes where klass is an ancestor.

◆ rb_undef()

void rb_undef ( VALUE  mod,
ID  mid 
)

Inserts a method entry that hides previous method definition of the given name.

This is not a deletion of a method. Method of the same name defined in a parent class is kept invisible in this way.

Parameters
[out]modThe module to insert an undef.
[in]midName of the undef.
Exceptions
rb_eTypeErrorklass is a non-module.
rb_eFrozenErrorklass is frozen.
rb_eNameErrorNo such method named klass#name.
Postcondition
klass#name is undefined.
See also
rb_undef_method

Definition at line 1906 of file vm_method.c.