Data Structures | |
| struct | clone_const_arg |
| struct | method_entry_arg |
Defines | |
| #define | id_attached id__attached__ |
| #define | METACLASS_OF(k) RBASIC(k)->klass |
| #define | SET_METACLASS_OF(k, cls) RBASIC_SET_CLASS(k, cls) |
| #define | META_CLASS_OF_CLASS_CLASS_P(k) (METACLASS_OF(k) == (k)) |
| whether k is a meta^(n)-class of Class class | |
| #define | HAVE_METACLASS_P(k) |
| whether k has a metaclass | |
| #define | ENSURE_EIGENCLASS(klass) (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass)) |
| ensures klass belongs to its own eigenclass. | |
| #define | VISI(x) ((x)&NOEX_MASK) |
| #define | VISI_CHECK(x, f) (VISI(x) == (f)) |
| #define | SPECIAL_SINGLETON(x, c) |
Functions | |
| int | rb_vm_add_root_module (ID id, VALUE module) |
| void | rb_class_subclass_add (VALUE super, VALUE klass) |
| static void | rb_module_add_to_subclasses_list (VALUE module, VALUE iclass) |
| void | rb_class_remove_from_super_subclasses (VALUE klass) |
| void | rb_class_remove_from_module_subclasses (VALUE klass) |
| void | rb_class_foreach_subclass (VALUE klass, void(*f)(VALUE)) |
| void | rb_class_detach_subclasses (VALUE klass) |
| void | rb_class_detach_module_subclasses (VALUE klass) |
| static VALUE | class_alloc (VALUE flags, VALUE klass) |
| Allocates a struct RClass for a new class. | |
| VALUE | rb_class_boot (VALUE super) |
| A utility function that wraps class_alloc. | |
| void | rb_check_inheritable (VALUE super) |
| Ensures a class can be derived from super. | |
| VALUE | rb_class_new (VALUE super) |
| Creates a new class. | |
| static void | clone_method (VALUE klass, ID mid, const rb_method_entry_t *me) |
| static int | clone_method_i (st_data_t key, st_data_t value, st_data_t data) |
| static int | clone_const (ID key, const rb_const_entry_t *ce, struct clone_const_arg *arg) |
| static int | clone_const_i (st_data_t key, st_data_t value, st_data_t data) |
| static void | class_init_copy_check (VALUE clone, VALUE orig) |
| VALUE | rb_mod_init_copy (VALUE clone, VALUE orig) |
| VALUE | rb_singleton_class_clone (VALUE obj) |
| VALUE | rb_singleton_class_clone_and_attach (VALUE obj, VALUE attach) |
| void | rb_singleton_class_attached (VALUE klass, VALUE obj) |
| Attach a object to a singleton class. | |
| static VALUE | make_metaclass (VALUE klass) |
| Creates a metaclass of klass. | |
| static VALUE | make_singleton_class (VALUE obj) |
| Creates a singleton class for obj. | |
| static VALUE | boot_defclass (const char *name, VALUE super) |
| void | Init_class_hierarchy (void) |
| VALUE | rb_make_metaclass (VALUE obj, VALUE unused) |
| VALUE | rb_define_class_id (ID id, VALUE super) |
| Defines a new class. | |
| VALUE | rb_class_inherited (VALUE super, VALUE klass) |
| Calls Class::inherited. | |
| VALUE | rb_define_class (const char *name, VALUE super) |
| Defines a top-level class. | |
| VALUE | rb_define_class_under (VALUE outer, const char *name, VALUE super) |
| Defines a class under the namespace of outer. | |
| VALUE | rb_define_class_id_under (VALUE outer, ID id, VALUE super) |
| Defines a class under the namespace of outer. | |
| VALUE | rb_module_new (void) |
| VALUE | rb_define_module_id (ID id) |
| VALUE | rb_define_module (const char *name) |
| VALUE | rb_define_module_under (VALUE outer, const char *name) |
| VALUE | rb_define_module_id_under (VALUE outer, ID id) |
| VALUE | rb_include_class_new (VALUE module, VALUE super) |
| static int | include_modules_at (const VALUE klass, VALUE c, VALUE module) |
| void | rb_include_module (VALUE klass, VALUE module) |
| static int | add_refined_method_entry_i (st_data_t key, st_data_t value, st_data_t data) |
| static int | move_refined_method (st_data_t key, st_data_t value, st_data_t data) |
| void | rb_prepend_module (VALUE klass, VALUE module) |
| VALUE | rb_mod_included_modules (VALUE mod) |
| VALUE | rb_mod_include_p (VALUE mod, VALUE mod2) |
| VALUE | rb_mod_ancestors (VALUE mod) |
| static int | ins_methods_push (ID name, long type, VALUE ary, long visi) |
| static int | ins_methods_i (st_data_t name, st_data_t type, st_data_t ary) |
| static int | ins_methods_prot_i (st_data_t name, st_data_t type, st_data_t ary) |
| static int | ins_methods_priv_i (st_data_t name, st_data_t type, st_data_t ary) |
| static int | ins_methods_pub_i (st_data_t name, st_data_t type, st_data_t ary) |
| static int | method_entry_i (st_data_t key, st_data_t value, st_data_t data) |
| static VALUE | class_instance_method_list (int argc, VALUE *argv, VALUE mod, int obj, int(*func)(st_data_t, st_data_t, st_data_t)) |
| VALUE | rb_class_instance_methods (int argc, VALUE *argv, VALUE mod) |
| VALUE | rb_class_protected_instance_methods (int argc, VALUE *argv, VALUE mod) |
| VALUE | rb_class_private_instance_methods (int argc, VALUE *argv, VALUE mod) |
| VALUE | rb_class_public_instance_methods (int argc, VALUE *argv, VALUE mod) |
| VALUE | rb_obj_methods (int argc, VALUE *argv, VALUE obj) |
| VALUE | rb_obj_protected_methods (int argc, VALUE *argv, VALUE obj) |
| VALUE | rb_obj_private_methods (int argc, VALUE *argv, VALUE obj) |
| VALUE | rb_obj_public_methods (int argc, VALUE *argv, VALUE obj) |
| VALUE | rb_obj_singleton_methods (int argc, VALUE *argv, VALUE obj) |
| static VALUE | special_singleton_class_of (VALUE obj) |
| VALUE | rb_special_singleton_class (VALUE obj) |
| static VALUE | singleton_class_of (VALUE obj) |
| VALUE | rb_singleton_class_get (VALUE obj) |
| Returns the singleton class of obj, or nil if obj is not a singleton object. | |
| VALUE | rb_singleton_class (VALUE obj) |
| Returns the singleton class of obj. | |
| void | Init_Object (void) |
| Initializes the world of objects and classes. | |
| #define ENSURE_EIGENCLASS | ( | klass | ) | (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass)) |
ensures klass belongs to its own eigenclass.
Definition at line 442 of file class.c.
Referenced by make_metaclass(), and rb_singleton_class().
| #define HAVE_METACLASS_P | ( | k | ) |
(FL_TEST(METACLASS_OF(k), FL_SINGLETON) && \ rb_ivar_get(METACLASS_OF(k), id_attached) == (k))
whether k has a metaclass
| 1 | if k has a metaclass | |
| 0 | otherwise |
| #define id_attached id__attached__ |
Definition at line 37 of file class.c.
Referenced by rb_singleton_class_attached(), rb_singleton_class_get(), and singleton_class_of().
| #define META_CLASS_OF_CLASS_CLASS_P | ( | k | ) | (METACLASS_OF(k) == (k)) |
whether k is a meta^(n)-class of Class class
| 1 | if k is a meta^(n)-class of Class class (n >= 0) | |
| 0 | otherwise |
Definition at line 424 of file class.c.
Referenced by make_metaclass().
| #define METACLASS_OF | ( | k | ) | RBASIC(k)->klass |
Definition at line 416 of file class.c.
Referenced by make_metaclass(), and make_singleton_class().
| #define SET_METACLASS_OF | ( | k, | |||
| cls | ) | RBASIC_SET_CLASS(k, cls) |
Definition at line 417 of file class.c.
Referenced by make_metaclass(), and make_singleton_class().
| #define SPECIAL_SINGLETON | ( | x, | |||
| c | ) |
do {\ if (obj == (x)) {\ return (c);\ }\ } while (0)
Definition at line 1510 of file class.c.
Referenced by special_singleton_class_of().
| #define VISI | ( | x | ) | ((x)&NOEX_MASK) |
Definition at line 1052 of file class.c.
Referenced by method_entry_i().
| #define VISI_CHECK | ( | x, | |||
| f | ) | (VISI(x) == (f)) |
Definition at line 1053 of file class.c.
Referenced by check_definition().
| static int add_refined_method_entry_i | ( | st_data_t | key, | |
| st_data_t | value, | |||
| st_data_t | data | |||
| ) | [static] |
Definition at line 826 of file class.c.
References rb_add_refined_method_entry().
Referenced by include_modules_at().
| static VALUE boot_defclass | ( | const char * | name, | |
| VALUE | super | |||
| ) | [static] |
Definition at line 505 of file class.c.
References rb_class_boot(), rb_cObject, rb_const_set(), rb_intern, and rb_name_class().
Referenced by Init_class_hierarchy().
| static VALUE class_alloc | ( | VALUE | flags, | |
| VALUE | klass | |||
| ) | [static] |
Allocates a struct RClass for a new class.
| flags | initial value for basic.flags of the returned class. | |
| klass | the class of the returned class. |
klass must refer Class class or an ancestor of Class. (flags | T_CLASS) != 0
initialize 'd.Definition at line 155 of file class.c.
References ALLOC, FL_WB_PROTECTED, NEWOBJ_OF, NULL, Qnil, rb_next_class_serial(), RCLASS_CONST_TBL, RCLASS_EXT, RCLASS_IV_INDEX_TBL, RCLASS_IV_TBL, RCLASS_M_TBL_WRAPPER, RCLASS_ORIGIN, RCLASS_REFINED_CLASS, RCLASS_SERIAL, RGENGC_WB_PROTECTED_CLASS, and T_MASK.
Referenced by rb_class_boot(), rb_include_class_new(), rb_module_new(), rb_prepend_module(), and rb_singleton_class_clone_and_attach().
| static void class_init_copy_check | ( | VALUE | clone, | |
| VALUE | orig | |||
| ) | [static] |
Definition at line 285 of file class.c.
References FL_SINGLETON, FL_TEST, rb_cBasicObject, rb_eTypeError, rb_raise(), and RCLASS_SUPER.
Referenced by rb_mod_init_copy().
| static VALUE class_instance_method_list | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | mod, | |||
| int | obj, | |||
| int(*)(st_data_t, st_data_t, st_data_t) | func | |||
| ) | [static] |
Definition at line 1131 of file class.c.
References BUILTIN_TYPE, FL_SINGLETON, FL_TEST, func, method_entry_arg::list, method_entry_i(), rb_ary_new(), rb_scan_args(), RCLASS_M_TBL, RCLASS_ORIGIN, RCLASS_SUPER, method_entry_arg::recur, recur, RTEST, st_foreach(), st_free_table(), st_init_numtable(), T_ICLASS, and TRUE.
Referenced by rb_class_instance_methods(), rb_class_private_instance_methods(), rb_class_protected_instance_methods(), rb_class_public_instance_methods(), rb_obj_methods(), rb_obj_private_methods(), rb_obj_protected_methods(), and rb_obj_public_methods().
| static int clone_const | ( | ID | key, | |
| const rb_const_entry_t * | ce, | |||
| struct clone_const_arg * | arg | |||
| ) | [static] |
Definition at line 267 of file class.c.
References ALLOC, rb_const_entry_struct::file, clone_const_arg::klass, MEMCPY, Qundef, RB_OBJ_WRITTEN, st_insert(), clone_const_arg::tbl, and rb_const_entry_struct::value.
Referenced by clone_const_i().
| static int clone_const_i | ( | st_data_t | key, | |
| st_data_t | value, | |||
| st_data_t | data | |||
| ) | [static] |
Definition at line 279 of file class.c.
References clone_const().
Referenced by rb_mod_init_copy(), and rb_singleton_class_clone_and_attach().
| static void clone_method | ( | VALUE | klass, | |
| ID | mid, | |||
| const rb_method_entry_t * | me | |||
| ) | [static] |
Definition at line 236 of file class.c.
References rb_method_definition_struct::body, rb_iseq_struct::cref_stack, rb_method_entry_struct::def, rb_method_entry_struct::flag, GetISeqPtr, rb_method_definition_struct::iseq, rb_method_entry_struct::klass, rb_add_method(), RB_GC_GUARD, rb_iseq_clone(), rb_method_entry_set(), RB_OBJ_WRITE, rb_vm_rewrite_cref_stack(), rb_iseq_struct::self, rb_method_definition_struct::type, and VM_METHOD_TYPE_ISEQ.
Referenced by clone_method_i().
| static int clone_method_i | ( | st_data_t | key, | |
| st_data_t | value, | |||
| st_data_t | data | |||
| ) | [static] |
Definition at line 255 of file class.c.
References clone_method().
Referenced by rb_mod_init_copy(), and rb_singleton_class_clone_and_attach().
| static int include_modules_at | ( | const VALUE | klass, | |
| VALUE | c, | |||
| VALUE | module | |||
| ) | [static] |
Definition at line 833 of file class.c.
References add_refined_method_entry_i(), BUILTIN_TYPE, FALSE, FL_SET, FL_TEST, rb_clear_constant_cache(), rb_clear_method_cache_by_class(), rb_include_class_new(), rb_module_add_to_subclasses_list(), rb_refinement_module_get_refined_class(), RBASIC, RCLASS_M_TBL, RCLASS_M_TBL_WRAPPER, RCLASS_ORIGIN, RCLASS_SUPER, RMODULE_CONST_TBL, RMODULE_INCLUDED_INTO_REFINEMENT, RMODULE_IS_REFINEMENT, RMODULE_M_TBL, st_foreach(), T_CLASS, T_ICLASS, and TRUE.
Referenced by rb_include_module(), and rb_prepend_module().
| void Init_class_hierarchy | ( | void | ) |
Definition at line 516 of file class.c.
References boot_defclass(), rb_cBasicObject, rb_cClass, rb_cModule, rb_cObject, rb_const_set(), rb_intern, and RBASIC_SET_CLASS.
Referenced by Init_Object().
| void Init_Object | ( | void | ) |
Initializes the world of objects and classes.
At first, the function bootstraps the class hierarchy. It initializes the most fundamental classes and their metaclasses.
BasicObject Object Module Class After the bootstrap step, the class hierarchy becomes as the following diagram.
Then, the function defines classes, modules and methods as usual.
Definition at line 3257 of file object.c.
References CLASS_OF, conv_method_names, false_and(), false_or(), false_to_s(), false_xor(), conv_method_tbl::id, Init_class_hierarchy(), conv_method_tbl::method, nil_inspect(), nil_to_a(), nil_to_f(), nil_to_h(), nil_to_i(), nil_to_s(), Qfalse, Qnil, Qtrue, rb_any_to_s(), rb_cBasicObject, rb_cClass, rb_cData, rb_cFalseClass, rb_class_allocate_instance(), rb_class_inherited_p(), rb_class_initialize(), rb_class_instance_methods(), rb_class_new_instance(), rb_class_private_instance_methods(), rb_class_protected_instance_methods(), rb_class_public_instance_methods(), rb_class_s_alloc(), rb_class_superclass(), rb_cModule, rb_cNilClass, rb_cObject, rb_cTrueClass, rb_define_alias(), rb_define_alloc_func(), rb_define_class(), rb_define_global_const(), rb_define_global_function(), rb_define_method(), rb_define_module(), rb_define_private_method(), rb_equal(), rb_f_array(), rb_f_float(), rb_f_hash(), rb_f_integer(), rb_f_sprintf(), rb_f_string(), rb_false(), rb_include_module(), rb_intern, rb_mKernel, rb_mod_ancestors(), rb_mod_attr(), rb_mod_attr_accessor(), rb_mod_attr_reader(), rb_mod_attr_writer(), rb_mod_class_variables(), rb_mod_cmp(), rb_mod_const_defined(), rb_mod_const_get(), rb_mod_const_missing(), rb_mod_const_set(), rb_mod_constants(), rb_mod_cvar_defined(), rb_mod_cvar_get(), rb_mod_cvar_set(), rb_mod_eqq(), rb_mod_freeze(), rb_mod_ge(), rb_mod_gt(), rb_mod_include_p(), rb_mod_included_modules(), rb_mod_init_copy(), rb_mod_initialize(), rb_mod_lt(), rb_mod_name(), rb_mod_private_constant(), rb_mod_public_constant(), rb_mod_remove_const(), rb_mod_remove_cvar(), rb_mod_singleton_p(), rb_mod_to_s(), rb_module_s_alloc(), rb_obj_alloc(), rb_obj_class(), rb_obj_clone(), rb_obj_cmp(), rb_obj_dummy(), rb_obj_dup(), rb_obj_equal(), rb_obj_freeze(), rb_obj_frozen_p(), rb_obj_hash(), rb_obj_init_copy(), rb_obj_init_dup_clone(), rb_obj_inspect(), rb_obj_instance_variables, rb_obj_is_instance_of(), rb_obj_is_kind_of(), rb_obj_ivar_defined(), rb_obj_ivar_get(), rb_obj_ivar_set(), rb_obj_match(), rb_obj_methods(), rb_obj_not(), rb_obj_not_equal(), rb_obj_not_match(), rb_obj_private_methods(), rb_obj_protected_methods(), rb_obj_public_methods(), rb_obj_remove_instance_variable(), rb_obj_singleton_class(), rb_obj_singleton_methods(), rb_obj_taint(), rb_obj_tainted(), rb_obj_tap(), rb_obj_trust(), rb_obj_untaint(), rb_obj_untrust(), rb_obj_untrusted(), rb_true(), rb_undef_alloc_func(), rb_undef_method(), true_and(), true_or(), true_to_s(), and true_xor().
| static int ins_methods_i | ( | st_data_t | name, | |
| st_data_t | type, | |||
| st_data_t | ary | |||
| ) | [static] |
Definition at line 1077 of file class.c.
References ins_methods_push().
Referenced by rb_class_instance_methods(), rb_obj_methods(), and rb_obj_singleton_methods().
| static int ins_methods_priv_i | ( | st_data_t | name, | |
| st_data_t | type, | |||
| st_data_t | ary | |||
| ) | [static] |
Definition at line 1089 of file class.c.
References ins_methods_push(), and NOEX_PRIVATE.
Referenced by rb_class_private_instance_methods(), and rb_obj_private_methods().
| static int ins_methods_prot_i | ( | st_data_t | name, | |
| st_data_t | type, | |||
| st_data_t | ary | |||
| ) | [static] |
Definition at line 1083 of file class.c.
References ins_methods_push(), and NOEX_PROTECTED.
Referenced by rb_class_protected_instance_methods(), and rb_obj_protected_methods().
| static int ins_methods_pub_i | ( | st_data_t | name, | |
| st_data_t | type, | |||
| st_data_t | ary | |||
| ) | [static] |
Definition at line 1095 of file class.c.
References ins_methods_push(), and NOEX_PUBLIC.
Referenced by rb_class_public_instance_methods(), and rb_obj_public_methods().
| static int ins_methods_push | ( | ID | name, | |
| long | type, | |||
| VALUE | ary, | |||
| long | visi | |||
| ) | [static] |
Definition at line 1056 of file class.c.
References ID2SYM, NOEX_PRIVATE, NOEX_PROTECTED, NOEX_PUBLIC, and rb_ary_push().
Referenced by ins_methods_i(), ins_methods_priv_i(), ins_methods_prot_i(), and ins_methods_pub_i().
| static VALUE make_metaclass | ( | VALUE | klass | ) | [inline, static] |
Creates a metaclass of klass.
| klass | a class |
Definition at line 456 of file class.c.
References ENSURE_EIGENCLASS, FL_SET, FL_SINGLETON, META_CLASS_OF_CLASS_CLASS_P, METACLASS_OF, OBJ_INFECT, Qundef, rb_cClass, rb_class_boot(), rb_singleton_class_attached(), RB_TYPE_P, RCLASS_SUPER, SET_METACLASS_OF, and T_ICLASS.
Referenced by rb_make_metaclass().
| static VALUE make_singleton_class | ( | VALUE | obj | ) | [inline, static] |
Creates a singleton class for obj.
Definition at line 490 of file class.c.
References FL_SET, FL_SINGLETON, METACLASS_OF, rb_class_boot(), rb_class_real(), rb_singleton_class_attached(), RBASIC, RBASIC_SET_CLASS, and SET_METACLASS_OF.
Referenced by rb_make_metaclass().
| static int method_entry_i | ( | st_data_t | key, | |
| st_data_t | value, | |||
| st_data_t | data | |||
| ) | [static] |
Definition at line 1106 of file class.c.
References rb_method_entry_struct::def, rb_method_entry_struct::flag, rb_method_entry_struct::klass, method_entry_arg::list, NULL, Qnil, rb_resolve_refined_method(), method_entry_arg::recur, st_add_direct(), st_lookup(), rb_method_definition_struct::type, type, UNDEFINED_METHOD_ENTRY_P, VISI, and VM_METHOD_TYPE_REFINED.
Referenced by class_instance_method_list(), and rb_obj_singleton_methods().
| static int move_refined_method | ( | st_data_t | key, | |
| st_data_t | value, | |||
| st_data_t | data | |||
| ) | [static] |
Definition at line 894 of file class.c.
References ALLOC, rb_method_definition_struct::body, rb_method_entry_struct::def, NULL, rb_method_definition_struct::orig_me, st_add_direct(), clone_const_arg::tbl, rb_method_definition_struct::type, VM_METHOD_TYPE_REFINED, and xfree.
Referenced by rb_prepend_module().
| void rb_check_inheritable | ( | VALUE | super | ) |
Ensures a class can be derived from super.
| super | a reference to an object. |
| TypeError | if super is not a Class or super is a singleton class. |
Definition at line 206 of file class.c.
References FL_SINGLETON, rb_cClass, rb_eTypeError, rb_obj_classname(), rb_raise(), RB_TYPE_P, RBASIC, and T_CLASS.
Referenced by rb_class_initialize(), and rb_class_new().
| VALUE rb_class_boot | ( | VALUE | super | ) |
A utility function that wraps class_alloc.
allocates a class and initializes safely.
| super | a class from which the new class derives. |
Definition at line 187 of file class.c.
References class_alloc(), OBJ_INFECT, rb_cClass, and T_CLASS.
Referenced by boot_defclass(), make_metaclass(), make_singleton_class(), rb_class_new(), and rb_class_s_alloc().
| void rb_class_detach_module_subclasses | ( | VALUE | klass | ) |
Definition at line 137 of file class.c.
References rb_class_foreach_subclass(), and rb_class_remove_from_module_subclasses().
Referenced by obj_free().
| void rb_class_detach_subclasses | ( | VALUE | klass | ) |
Definition at line 131 of file class.c.
References rb_class_foreach_subclass(), and rb_class_remove_from_super_subclasses().
Referenced by obj_free().
| void rb_class_foreach_subclass | ( | VALUE | klass, | |
| void(*)(VALUE) | f | |||
| ) |
Definition at line 117 of file class.c.
References f, and RCLASS_EXT.
Referenced by rb_class_clear_method_cache(), rb_class_detach_module_subclasses(), and rb_class_detach_subclasses().
| VALUE rb_class_inherited | ( | VALUE | super, | |
| VALUE | klass | |||
| ) |
Calls Class::inherited.
| super | A class which will be called inherited. NULL means Object class. | |
| klass | A Class object which derived from super |
Class::inherited's returns Class object. Definition at line 585 of file class.c.
References CONST_ID, rb_cObject, and rb_funcall().
Referenced by anonymous_struct(), rb_class_initialize(), rb_define_class(), and rb_define_class_id_under().
| VALUE rb_class_instance_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | mod | |||
| ) |
Definition at line 1194 of file class.c.
References class_instance_method_list(), and ins_methods_i().
Referenced by Init_Object().
| VALUE rb_class_new | ( | VALUE | super | ) |
Creates a new class.
| super | a class from which the new class derives. |
| TypeError | super is not inheritable. | |
| TypeError | super is the Class class. |
Definition at line 228 of file class.c.
References Check_Type, rb_check_inheritable(), rb_class_boot(), and T_CLASS.
Referenced by anonymous_struct(), Init_IO(), Init_VM(), and rb_define_class_id().
| VALUE rb_class_private_instance_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | mod | |||
| ) |
Definition at line 1232 of file class.c.
References class_instance_method_list(), and ins_methods_priv_i().
Referenced by Init_Object().
| VALUE rb_class_protected_instance_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | mod | |||
| ) |
Definition at line 1209 of file class.c.
References class_instance_method_list(), and ins_methods_prot_i().
Referenced by Init_Object().
| VALUE rb_class_public_instance_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | mod | |||
| ) |
Definition at line 1247 of file class.c.
References class_instance_method_list(), and ins_methods_pub_i().
Referenced by Init_Object().
| void rb_class_remove_from_module_subclasses | ( | VALUE | klass | ) |
Definition at line 98 of file class.c.
References NULL, RCLASS_EXT, and xfree.
Referenced by obj_free(), and rb_class_detach_module_subclasses().
| void rb_class_remove_from_super_subclasses | ( | VALUE | klass | ) |
Definition at line 80 of file class.c.
References NULL, RCLASS_EXT, and xfree.
Referenced by obj_free(), and rb_class_detach_subclasses().
| void rb_class_subclass_add | ( | VALUE | super, | |
| VALUE | klass | |||
| ) |
| VALUE rb_define_class | ( | const char * | name, | |
| VALUE | super | |||
| ) |
Defines a top-level class.
| name | name of the class | |
| super | a class from which the new class will derive. NULL means Object class. |
| TypeError | if the constant name name is already taken but the constant is not a Class. | |
| NameError | if the class is already defined but the class can not be reopened because its superclass is not super. |
Definition at line 611 of file class.c.
References id, rb_class_inherited(), rb_class_real(), rb_cObject, rb_const_defined(), rb_const_get(), rb_const_set(), rb_define_class_id(), rb_eTypeError, rb_intern, rb_name_class(), rb_raise(), RB_TYPE_P, rb_vm_add_root_module(), rb_warn(), RCLASS_SUPER, and T_CLASS.
Referenced by Init_Array(), Init_bigdecimal(), Init_Bignum(), Init_Binding(), Init_Complex(), Init_Cont(), Init_date_core(), Init_dbm(), Init_Dir(), Init_Encoding(), Init_Exception(), Init_File(), Init_gdbm(), Init_Hash(), Init_IO(), Init_Numeric(), Init_Object(), Init_pathname(), Init_Proc(), Init_Random(), Init_Rational(), Init_Regexp(), Init_sdbm(), Init_socket(), Init_String(), Init_stringio(), Init_strscan(), Init_Struct(), Init_tcltklib(), Init_Thread(), Init_thread(), Init_Time(), Init_tkutil(), Init_VM(), Init_vm_trace(), Init_win32ole(), InitVM_Enumerator(), rsock_init_addrinfo(), rsock_init_basicsocket(), rsock_init_ipsocket(), rsock_init_socket_init(), rsock_init_sockssocket(), rsock_init_tcpserver(), rsock_init_tcpsocket(), rsock_init_udpsocket(), rsock_init_unixserver(), rsock_init_unixsocket(), ruby_Init_Continuation_body(), and struct_define_without_accessor().
| VALUE rb_define_class_id | ( | ID | id, | |
| VALUE | super | |||
| ) |
Defines a new class.
| id | ignored | |
| super | A class from which the new class will derive. NULL means Object class. |
| TypeError | if super is not a Class object. |
Definition at line 564 of file class.c.
References rb_class_new(), rb_cObject, rb_make_metaclass(), and RBASIC.
Referenced by rb_define_class(), and rb_define_class_id_under().
| VALUE rb_define_class_id_under | ( | VALUE | outer, | |
| ID | id, | |||
| VALUE | super | |||
| ) |
Defines a class under the namespace of outer.
| outer | a class which contains the new class. | |
| id | name of the new class | |
| super | a class from which the new class will derive. NULL means Object class. |
| TypeError | if the constant name name is already taken but the constant is not a Class. | |
| NameError | if the class is already defined but the class can not be reopened because its superclass is not super. |
Definition at line 680 of file class.c.
References rb_class2name(), rb_class_inherited(), rb_class_real(), rb_const_defined_at(), rb_const_get_at(), rb_const_set(), rb_define_class_id(), rb_eTypeError, rb_gc_register_mark_object(), rb_id2name(), rb_id2str(), rb_name_error(), rb_raise(), rb_set_class_path_string(), RB_TYPE_P, rb_warn(), RCLASS_SUPER, and T_CLASS.
Referenced by new_struct(), and rb_define_class_under().
| VALUE rb_define_class_under | ( | VALUE | outer, | |
| const char * | name, | |||
| VALUE | super | |||
| ) |
Defines a class under the namespace of outer.
| outer | a class which contains the new class. | |
| name | name of the new class | |
| super | a class from which the new class will derive. NULL means Object class. |
| TypeError | if the constant name name is already taken but the constant is not a Class. | |
| NameError | if the class is already defined but the class can not be reopened because its superclass is not super. |
Definition at line 657 of file class.c.
References rb_define_class_id_under(), and rb_intern.
Referenced by exp1(), Init_bubblebabble(), Init_Complex(), Init_cparse(), Init_digest(), Init_dl(), Init_dlcfunc(), Init_dlhandle(), Init_dlptr(), Init_Exception(), Init_fiddle(), Init_fiddle_closure(), Init_fiddle_function(), Init_fiddle_handle(), Init_fiddle_pointer(), Init_File(), Init_GC(), Init_generator(), Init_IO(), Init_ISeq(), Init_md5(), Init_objspace(), Init_openssl(), Init_ossl_asn1(), Init_ossl_cipher(), Init_ossl_config(), Init_ossl_dh(), Init_ossl_digest(), Init_ossl_dsa(), Init_ossl_hmac(), Init_ossl_ns_spki(), Init_ossl_pkcs12(), Init_ossl_pkcs5(), Init_ossl_pkcs7(), Init_ossl_pkey(), Init_ossl_rand(), Init_ossl_rsa(), Init_ossl_ssl(), Init_ossl_ssl_session(), Init_ossl_x509attr(), Init_ossl_x509cert(), Init_ossl_x509crl(), Init_ossl_x509ext(), Init_ossl_x509name(), Init_ossl_x509req(), Init_ossl_x509revoked(), Init_ossl_x509store(), Init_parser(), Init_process(), Init_psych_emitter(), Init_psych_parser(), Init_psych_to_ruby(), Init_psych_yaml_tree(), Init_pty(), Init_Rational(), Init_rmd160(), Init_sha1(), Init_strscan(), Init_tkutil(), Init_transcode(), Init_VM(), Init_vm_backtrace(), Init_zlib(), InitVM_Enumerator(), rb_struct_define_under(), rsock_init_ancdata(), rsock_init_sockifaddr(), rsock_init_sockopt(), set_syserr(), and struct_define_without_accessor().
| VALUE rb_define_module | ( | const char * | name | ) |
Definition at line 727 of file class.c.
References id, rb_cObject, rb_const_defined(), rb_const_get(), rb_const_set(), rb_define_module_id(), rb_eTypeError, rb_intern, rb_obj_classname(), rb_raise(), RB_TYPE_P, rb_vm_add_root_module(), and T_MODULE.
Referenced by exp1(), Init_bigdecimal(), Init_bubblebabble(), Init_Comparable(), Init_coverage(), Init_cparse(), Init_digest(), Init_dl(), Init_Enumerable(), Init_etc(), Init_Exception(), Init_fcntl(), Init_fiddle(), Init_fiddle_closure(), Init_File(), Init_GC(), Init_generator(), Init_marshal(), Init_md5(), Init_nkf(), Init_Object(), Init_object_tracing(), Init_objspace(), Init_objspace_dump(), Init_openssl(), Init_ossl_asn1(), Init_ossl_cipher(), Init_ossl_dh(), Init_ossl_digest(), Init_ossl_dsa(), Init_ossl_hmac(), Init_ossl_ns_spki(), Init_ossl_pkcs5(), Init_ossl_pkey(), Init_ossl_rand(), Init_ossl_rsa(), Init_ossl_ssl(), Init_ossl_ssl_session(), Init_ossl_x509cert(), Init_ossl_x509store(), Init_parser(), Init_process(), Init_psych(), Init_psych_emitter(), Init_psych_parser(), Init_psych_to_ruby(), Init_psych_yaml_tree(), Init_pty(), Init_readline(), Init_rmd160(), Init_sha1(), Init_signal(), Init_sizeof(), Init_syslog(), Init_tcltklib(), Init_tkutil(), Init_zlib(), and process_options().
| VALUE rb_define_module_id | ( | ID | id | ) |
Definition at line 716 of file class.c.
References rb_module_new(), and rb_name_class().
Referenced by rb_define_module(), and rb_define_module_id_under().
| VALUE rb_define_module_id_under | ( | VALUE | outer, | |
| ID | id | |||
| ) |
Definition at line 753 of file class.c.
References rb_class2name(), rb_const_defined_at(), rb_const_get_at(), rb_const_set(), rb_define_module_id(), rb_eTypeError, rb_gc_register_mark_object(), rb_id2str(), rb_obj_classname(), rb_raise(), rb_set_class_path_string(), RB_TYPE_P, and T_MODULE.
Referenced by rb_define_module_under().
| VALUE rb_define_module_under | ( | VALUE | outer, | |
| const char * | name | |||
| ) |
Definition at line 747 of file class.c.
References rb_define_module_id_under(), and rb_intern.
Referenced by Init_bubblebabble(), Init_digest(), Init_File(), Init_GC(), Init_generator(), Init_IO(), Init_ossl_asn1(), Init_ossl_dh(), Init_ossl_dsa(), Init_ossl_ns_spki(), Init_ossl_pkcs5(), Init_ossl_pkey(), Init_ossl_rand(), Init_ossl_rsa(), Init_ossl_ssl(), Init_ossl_ssl_session(), Init_ossl_x509(), Init_ossl_x509cert(), Init_ossl_x509store(), Init_parser(), Init_process(), Init_psych_to_ruby(), Init_psych_yaml_tree(), Init_stringio(), Init_syslog(), Init_tcltklib(), Init_win32ole(), and InitVM_console().
| VALUE rb_include_class_new | ( | VALUE | module, | |
| VALUE | super | |||
| ) |
Definition at line 773 of file class.c.
References BUILTIN_TYPE, class_alloc(), OBJ_INFECT, OBJ_WB_UNPROTECT, rb_cClass, RB_TYPE_P, RBASIC, RBASIC_SET_CLASS, RCLASS_CONST_TBL, RCLASS_IV_TBL, RCLASS_M_TBL_WRAPPER, RCLASS_ORIGIN, st_init_numtable(), and T_ICLASS.
Referenced by add_activated_refinement(), include_modules_at(), rb_using_refinement(), and umethod_bind().
| void rb_include_module | ( | VALUE | klass, | |
| VALUE | module | |||
| ) |
Definition at line 808 of file class.c.
References Check_Type, include_modules_at(), OBJ_INFECT, rb_eArgError, rb_frozen_class_p(), rb_raise(), RB_TYPE_P, RCLASS_ORIGIN, and T_MODULE.
Referenced by Init_Array(), Init_date_core(), Init_dbm(), Init_digest(), Init_Dir(), Init_File(), Init_GC(), Init_gdbm(), Init_Hash(), Init_IO(), Init_Numeric(), Init_Object(), Init_ossl_asn1(), Init_ossl_ssl(), Init_ossl_x509name(), Init_Range(), Init_sdbm(), Init_String(), Init_stringio(), Init_Struct(), Init_syslog(), Init_Time(), Init_zlib(), InitVM_Enumerator(), rb_extend_object(), and rb_mod_append_features().
| VALUE rb_make_metaclass | ( | VALUE | obj, | |
| VALUE | unused | |||
| ) |
For internal use only.
Creates a new *singleton class* for an object.
| obj | An object. | |
| unused | ignored. |
Definition at line 542 of file class.c.
References BUILTIN_TYPE, make_metaclass(), make_singleton_class(), and T_CLASS.
Referenced by anonymous_struct(), rb_class_initialize(), rb_define_class_id(), and singleton_class_of().
| VALUE rb_mod_ancestors | ( | VALUE | mod | ) |
Definition at line 1037 of file class.c.
References BUILTIN_TYPE, rb_ary_new(), rb_ary_push(), RBASIC, RCLASS_ORIGIN, RCLASS_SUPER, and T_ICLASS.
Referenced by Init_Object(), and rb_threadptr_pending_interrupt_check_mask().
| VALUE rb_mod_include_p | ( | VALUE | mod, | |
| VALUE | mod2 | |||
| ) |
Definition at line 1007 of file class.c.
References BUILTIN_TYPE, Check_Type, Qfalse, Qtrue, RBASIC, RCLASS_SUPER, T_ICLASS, and T_MODULE.
Referenced by Init_Object().
| VALUE rb_mod_included_modules | ( | VALUE | mod | ) |
Definition at line 971 of file class.c.
References BUILTIN_TYPE, rb_ary_new(), rb_ary_push(), RB_TYPE_P, RBASIC, RCLASS_ORIGIN, RCLASS_SUPER, T_ICLASS, and T_MODULE.
Referenced by Init_Object().
| VALUE rb_mod_init_copy | ( | VALUE | clone, | |
| VALUE | orig | |||
| ) |
Definition at line 300 of file class.c.
References class_init_copy_check(), CLASS_OF, clone_const_i(), clone_method_i(), CONST_ID, FL_SINGLETON, FL_TEST, id, clone_const_arg::klass, OBJ_INIT_COPY, rb_free_const_table(), rb_free_m_tbl_wrapper(), rb_singleton_class_attached(), rb_singleton_class_clone(), rb_st_copy(), RB_TYPE_P, RBASIC, RBASIC_SET_CLASS, RCLASS_CONST_TBL, RCLASS_EXT, RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_M_TBL_WRAPPER, RCLASS_SUPER, st_delete(), st_foreach(), st_free_table(), st_init_numtable(), T_CLASS, and clone_const_arg::tbl.
Referenced by Init_Object().
| static void rb_module_add_to_subclasses_list | ( | VALUE | module, | |
| VALUE | iclass | |||
| ) | [static] |
Definition at line 61 of file class.c.
References head, NULL, RCLASS_EXT, and xmalloc.
Referenced by include_modules_at().
| VALUE rb_module_new | ( | void | ) |
Definition at line 708 of file class.c.
References class_alloc(), rb_cModule, and T_MODULE.
Referenced by rb_define_module_id(), rb_eval_string_wrap(), rb_load_internal0(), rb_mod_refine(), and rb_module_s_alloc().
| VALUE rb_obj_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | obj | |||
| ) |
Definition at line 1283 of file class.c.
References class_instance_method_list(), CLASS_OF, ins_methods_i(), rb_obj_singleton_methods(), rb_scan_args(), recur, and RTEST.
Referenced by Init_Object().
| VALUE rb_obj_private_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | obj | |||
| ) |
Definition at line 1326 of file class.c.
References class_instance_method_list(), CLASS_OF, and ins_methods_priv_i().
Referenced by Init_Object().
| VALUE rb_obj_protected_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | obj | |||
| ) |
Definition at line 1311 of file class.c.
References class_instance_method_list(), CLASS_OF, and ins_methods_prot_i().
Referenced by Init_Object().
| VALUE rb_obj_public_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | obj | |||
| ) |
Definition at line 1341 of file class.c.
References class_instance_method_list(), CLASS_OF, and ins_methods_pub_i().
Referenced by Init_Object().
| VALUE rb_obj_singleton_methods | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | obj | |||
| ) |
Definition at line 1380 of file class.c.
References CLASS_OF, FL_SINGLETON, FL_TEST, ins_methods_i(), method_entry_arg::list, method_entry_i(), Qtrue, rb_ary_new(), rb_scan_args(), RB_TYPE_P, RCLASS_M_TBL, RCLASS_ORIGIN, RCLASS_SUPER, method_entry_arg::recur, recur, RTEST, st_foreach(), st_free_table(), st_init_numtable(), and T_ICLASS.
Referenced by Init_Object(), and rb_obj_methods().
| void rb_prepend_module | ( | VALUE | klass, | |
| VALUE | module | |||
| ) |
Definition at line 921 of file class.c.
References Check_Type, class_alloc(), include_modules_at(), move_refined_method(), OBJ_INFECT, OBJ_WB_UNPROTECT, rb_eArgError, rb_frozen_class_p(), RB_OBJ_WRITE, rb_raise(), rb_vm_check_redefinition_by_prepend(), RCLASS_M_TBL, RCLASS_M_TBL_WRAPPER, RCLASS_ORIGIN, RCLASS_SUPER, st_foreach(), T_ICLASS, and T_MODULE.
Referenced by r_object0(), and rb_mod_prepend_features().
| VALUE rb_singleton_class | ( | VALUE | obj | ) |
Returns the singleton class of obj.
Creates it if necessary.
| obj | an arbitrary object. |
| TypeError | if obj is a Fixnum or a Symbol. |
Definition at line 1619 of file class.c.
References ENSURE_EIGENCLASS, RB_TYPE_P, singleton_class_of(), and T_CLASS.
Referenced by Init_date_core(), Init_eval(), Init_eval_method(), Init_nkf(), Init_Proc(), Init_process(), Init_Time(), Init_top_self(), Init_VM(), num_sadded(), r_object0(), rb_extend_object(), rb_mod_define_method(), rb_mod_modfunc(), rb_mod_private_method(), rb_mod_public_method(), rb_obj_define_method(), rb_obj_instance_eval(), rb_obj_instance_exec(), rb_obj_singleton_class(), and vm_define_method().
| void rb_singleton_class_attached | ( | VALUE | klass, | |
| VALUE | obj | |||
| ) |
Attach a object to a singleton class.
Definition at line 404 of file class.c.
References FL_SINGLETON, FL_TEST, id_attached, rb_st_insert_id_and_value(), RCLASS_IV_TBL, and st_init_numtable().
Referenced by make_metaclass(), make_singleton_class(), rb_mod_init_copy(), rb_obj_clone(), and rb_singleton_class_clone_and_attach().
| VALUE rb_singleton_class_clone | ( | VALUE | obj | ) |
Definition at line 352 of file class.c.
References Qundef, and rb_singleton_class_clone_and_attach().
Referenced by rb_mod_init_copy(), and rb_singleton_class_clone_and_attach().
| VALUE rb_singleton_class_clone_and_attach | ( | VALUE | obj, | |
| VALUE | attach | |||
| ) |
Definition at line 358 of file class.c.
References BUILTIN_TYPE, class_alloc(), clone_const_i(), clone_method_i(), FL_SET, FL_SINGLETON, FL_TEST, clone_const_arg::klass, Qundef, rb_singleton_class_attached(), rb_singleton_class_clone(), rb_st_copy(), RBASIC, RBASIC_SET_CLASS, RCLASS_CONST_TBL, RCLASS_EXT, RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, st_foreach(), st_init_numtable(), T_CLASS, and clone_const_arg::tbl.
Referenced by rb_obj_clone(), and rb_singleton_class_clone().
| VALUE rb_singleton_class_get | ( | VALUE | obj | ) |
Returns the singleton class of obj, or nil if obj is not a singleton object.
| obj | an arbitrary object. |
Definition at line 1588 of file class.c.
References FL_SINGLETON, FL_TEST, id_attached, Qnil, rb_ivar_get(), rb_special_singleton_class(), RBASIC, and SPECIAL_CONST_P.
Referenced by rb_obj_singleton_method().
| VALUE rb_special_singleton_class | ( | VALUE | obj | ) |
Definition at line 1526 of file class.c.
References special_singleton_class_of().
Referenced by rb_obj_instance_eval(), rb_obj_instance_exec(), and rb_singleton_class_get().
| int rb_vm_add_root_module | ( | ID | id, | |
| VALUE | module | |||
| ) |
Definition at line 1810 of file vm.c.
References rb_vm_struct::defined_module_hash, GET_VM, ID2SYM, rb_hash_aset(), and TRUE.
Referenced by rb_define_class(), and rb_define_module().
| static VALUE singleton_class_of | ( | VALUE | obj | ) | [static] |
For internal use only.
Returns the singleton class of obj. Creates it if necessary.
Definition at line 1541 of file class.c.
References BUILTIN_TYPE, FIXNUM_P, FL_SINGLETON, FL_TAINT, FL_TEST, FL_UNSET, FLONUM_P, id_attached, NIL_P, OBJ_FREEZE, OBJ_FROZEN, OBJ_TAINT, OBJ_TAINTED, rb_bug(), rb_eTypeError, rb_ivar_get(), rb_make_metaclass(), rb_raise(), RBASIC, SPECIAL_CONST_P, special_singleton_class_of(), SYMBOL_P, T_BIGNUM, T_FLOAT, and type.
Referenced by rb_define_singleton_method(), and rb_singleton_class().
| static VALUE special_singleton_class_of | ( | VALUE | obj | ) | [inline, static] |
Definition at line 1517 of file class.c.
References Qfalse, Qnil, Qtrue, rb_cFalseClass, rb_cNilClass, rb_cTrueClass, and SPECIAL_SINGLETON.
Referenced by rb_special_singleton_class(), and singleton_class_of().
1.6.1