Ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5ad0e4688e963d9de019557c78feed9)
|
Data Structures | |
struct | clone_method_arg |
struct | clone_const_arg |
struct | method_entry_arg |
Macros | |
#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 More... | |
#define | HAVE_METACLASS_P(k) |
whether k has a metaclass More... | |
#define | ENSURE_EIGENCLASS(klass) (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass)) |
ensures klass belongs to its own eigenclass. More... | |
#define | SPECIAL_SINGLETON(x, c) |
#define ENSURE_EIGENCLASS | ( | klass | ) | (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass)) |
#define HAVE_METACLASS_P | ( | k | ) |
whether k has a metaclass
1 | if k has a metaclass |
0 | otherwise |
#define id_attached id__attached__ |
#define META_CLASS_OF_CLASS_CLASS_P | ( | k | ) | (METACLASS_OF(k) == (k)) |
#define SET_METACLASS_OF | ( | k, | |
cls | |||
) | RBASIC_SET_CLASS(k, cls) |
#define SPECIAL_SINGLETON | ( | x, | |
c | |||
) |
Definition at line 562 of file class.c.
References rb_cBasicObject.
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 222 of file class.c.
References FL_SINGLETON, PRIsVALUE, rb_cClass, rb_eTypeError, rb_obj_class(), rb_raise(), RB_TYPE_P, RBASIC, and T_CLASS.
Referenced by rb_class_new().
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 204 of file class.c.
References klass.
Referenced by rb_class_new().
Definition at line 148 of file class.c.
References klass, and rb_class_foreach_subclass().
Definition at line 136 of file class.c.
References klass, and rb_class_foreach_subclass().
Definition at line 116 of file class.c.
References arg, f, rb_subclass_entry::klass, klass, rb_subclass_entry::next, and RCLASS_EXT.
Referenced by rb_class_detach_module_subclasses(), and rb_class_detach_subclasses().
MJIT_FUNC_EXPORTED 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 636 of file class.c.
References CONST_ID, klass, rb_cObject, and rb_funcall.
Referenced by rb_define_class(), and rb_define_class_id_under().
Asserts that klass is not a frozen class.
[in] | klass | a Module object |
RuntimeError | if klass is not a class or frozen. |
Definition at line 438 of file eval.c.
References BUILTIN_TYPE, Check_Type, FL_SINGLETON, FL_TEST, id__attached__, klass, OBJ_FROZEN, PRIsVALUE, rb_frozen_error_raise(), rb_ivar_get(), SPECIAL_CONST_P, T_CLASS, T_ICLASS, and T_MODULE.
Referenced by rb_alias(), rb_deprecate_constant(), and rb_undef().
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 244 of file class.c.
References Check_Type, rb_check_inheritable(), rb_class_boot(), and T_CLASS.
Referenced by rb_define_class_id().
Definition at line 97 of file class.c.
References rb_subclass_entry::klass, klass, rb_subclass_entry::next, NULL, RCLASS_EXT, and xfree.
Definition at line 79 of file class.c.
References rb_subclass_entry::klass, klass, rb_subclass_entry::next, NULL, RCLASS_EXT, and xfree.
Definition at line 39 of file class.c.
References ALLOC, rb_subclass_entry::klass, klass, rb_subclass_entry::next, NULL, Qundef, and RCLASS_EXT.
Defines a top-level class.
name | name of the class |
super | a class from which the new class will derive. |
TypeError | if the constant name name is already taken but the constant is not a Class . |
TypeError | if the class is already defined but the class can not be reopened because its superclass is not super. |
ArgumentError | if the super is NULL. |
Definition at line 662 of file class.c.
References id, klass, name, PRIsVALUE, rb_class_inherited(), rb_class_real(), rb_cObject, rb_const_defined(), rb_const_get(), rb_const_set(), rb_define_class_id(), rb_eArgError, rb_eTypeError, rb_intern, rb_obj_class(), rb_raise(), RB_TYPE_P, rb_vm_add_root_module(), RCLASS_SUPER, and T_CLASS.
Referenced by Init_Array(), Init_Binding(), Init_Dir(), Init_Encoding(), Init_Exception(), Init_File(), Init_IO(), Init_monitor(), Init_Proc(), Init_Regexp(), Init_socket(), Init_String(), Init_stringio(), Init_VM(), Init_win32ole_error(), Init_win32ole_method(), Init_win32ole_param(), Init_win32ole_record(), Init_win32ole_type(), Init_win32ole_typelib(), Init_win32ole_variable(), Init_win32ole_variant(), InitVM_Struct(), 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(), and rsock_init_unixsocket().
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 615 of file class.c.
References klass, rb_class_new(), rb_cObject, rb_make_metaclass(), and RBASIC.
Referenced by rb_define_class(), and rb_define_class_id_under().
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 . |
TypeError | if the class is already defined but the class can not be reopened because its superclass is not super. |
Definition at line 734 of file class.c.
References klass, PRIsVALUE, rb_class_inherited(), rb_class_path(), rb_class_real(), rb_const_defined_at(), rb_const_get_at(), rb_const_set(), rb_define_class_id(), rb_eArgError, rb_eTypeError, rb_gc_register_mark_object(), rb_id2str, rb_obj_class(), rb_raise(), rb_set_class_path_string(), RB_TYPE_P, rb_vm_add_root_module(), RCLASS_SUPER, and T_CLASS.
Referenced by rb_define_class_under().
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 . |
TypeError | if the class is already defined but the class can not be reopened because its superclass is not super. |
Definition at line 711 of file class.c.
References name, rb_define_class_id_under(), and rb_intern.
Referenced by exp2(), Init_cparse(), Init_fiddle(), Init_fiddle_closure(), Init_fiddle_function(), Init_fiddle_handle(), Init_ISeq(), Init_ossl_asn1(), Init_ossl_bn(), Init_ossl_cipher(), Init_ossl_config(), Init_ossl_dh(), Init_ossl_digest(), Init_ossl_dsa(), Init_ossl_ec(), Init_ossl_engine(), Init_ossl_hmac(), Init_ossl_kdf(), Init_ossl_ns_spki(), Init_ossl_ocsp(), Init_ossl_pkcs12(), 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_x509req(), Init_ossl_x509revoked(), Init_ossl_x509store(), Init_psych_emitter(), Init_psych_parser(), Init_psych_to_ruby(), Init_psych_yaml_tree(), rsock_init_ancdata(), rsock_init_sockifaddr(), and rsock_init_sockopt().
Definition at line 785 of file class.c.
References id, name, PRIsVALUE, rb_cObject, rb_const_defined(), rb_const_get(), rb_const_set(), rb_define_module_id(), rb_eTypeError, rb_gc_register_mark_object(), rb_intern, rb_obj_class(), rb_raise(), RB_TYPE_P, rb_vm_add_root_module(), and T_MODULE.
Referenced by exp2(), Init_Comparable(), Init_coverage(), Init_cparse(), Init_Enumerable(), Init_etc(), Init_fcntl(), Init_fiddle(), Init_fiddle_closure(), Init_File(), Init_GC(), Init_limits(), Init_md5(), Init_nkf(), Init_object_tracing(), Init_objspace(), Init_objspace_dump(), Init_openssl(), Init_ossl_asn1(), Init_ossl_bn(), Init_ossl_cipher(), Init_ossl_config(), Init_ossl_digest(), Init_ossl_engine(), Init_ossl_hmac(), Init_ossl_kdf(), Init_ossl_ns_spki(), Init_ossl_ocsp(), Init_ossl_pkcs12(), Init_ossl_pkcs7(), Init_ossl_pkey(), Init_ossl_rand(), Init_ossl_ssl(), Init_ossl_ssl_session(), Init_ossl_x509(), Init_ossl_x509attr(), Init_ossl_x509cert(), Init_ossl_x509crl(), Init_ossl_x509ext(), Init_ossl_x509req(), Init_ossl_x509revoked(), Init_ossl_x509store(), Init_psych(), Init_psych_emitter(), Init_psych_parser(), Init_psych_to_ruby(), Init_psych_yaml_tree(), Init_rmd160(), Init_sha1(), Init_signal(), Init_sizeof(), Init_zlib(), and InitVM_resolv().
Definition at line 779 of file class.c.
References rb_module_new().
Referenced by rb_define_module(), and rb_define_module_id_under().
Definition at line 816 of file class.c.
References PRIsVALUE, 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_class(), rb_raise(), rb_set_class_path_string(), RB_TYPE_P, and T_MODULE.
Referenced by rb_define_module_under().
Definition at line 810 of file class.c.
References name, rb_define_module_id_under(), and rb_intern.
Referenced by Init_GC(), Init_ossl_dh(), Init_ossl_dsa(), Init_ossl_ec(), Init_ossl_ns_spki(), Init_ossl_ocsp(), Init_ossl_pkey(), Init_ossl_rand(), Init_ossl_rsa(), Init_ossl_ssl(), Init_ossl_ssl_session(), Init_ossl_x509(), Init_ossl_x509attr(), Init_ossl_x509cert(), Init_ossl_x509crl(), Init_ossl_x509ext(), Init_ossl_x509req(), Init_ossl_x509revoked(), Init_ossl_x509store(), Init_psych_to_ruby(), Init_psych_yaml_tree(), Init_win32ole_variant_m(), and InitVM_resolv().
Extend the object with the module.
Same as Module#extend_object
.
Definition at line 1701 of file eval.c.
References obj, rb_include_module(), and rb_singleton_class().
Referenced by rb_eval_string_wrap(), rb_mod_syserr_fail(), and rb_mod_syserr_fail_str().
Definition at line 1692 of file class.c.
References FL_FREEZE, FL_SINGLETON, FL_TEST, klass, OBJ_FREEZE_RAW, RBASIC, RBASIC_CLASS, and RCLASS_ORIGIN.
Definition at line 882 of file class.c.
Referenced by Init_Array(), Init_Dir(), Init_stringio(), InitVM_Struct(), and rb_extend_object().
Definition at line 593 of file class.c.
References BUILTIN_TYPE, obj, and T_CLASS.
Referenced by rb_define_class_id().
Definition at line 1117 of file class.c.
References BUILTIN_TYPE, klass, mod, rb_ary_new(), rb_ary_push(), RBASIC, RCLASS_ORIGIN, RCLASS_SUPER, and T_ICLASS.
Definition at line 1085 of file class.c.
References BUILTIN_TYPE, Check_Type, mod, Qfalse, Qtrue, RBASIC, RCLASS_SUPER, T_ICLASS, and T_MODULE.
Definition at line 1049 of file class.c.
References BUILTIN_TYPE, mod, rb_ary_new(), rb_ary_push(), RB_TYPE_P, RBASIC, RCLASS_ORIGIN, RCLASS_SUPER, T_ICLASS, and T_MODULE.
Definition at line 771 of file class.c.
Referenced by rb_define_module_id(), and rb_eval_string_wrap().
Definition at line 1379 of file class.c.
References argc, argv, obj, rb_check_arity, rb_obj_singleton_methods(), and RTEST.
Definition at line 1467 of file class.c.
References argc, argv, CLASS_OF, FL_SINGLETON, FL_TEST, klass, method_entry_arg::list, obj, rb_check_arity, rb_id_table_foreach(), rb_singleton_class(), RB_TYPE_P, RCLASS_M_TBL, RCLASS_ORIGIN, method_entry_arg::recur, recur, RTEST, st_init_numtable(), T_CLASS, and TRUE.
Referenced by rb_obj_methods().
Returns the singleton class of obj.
Creates it if necessary.
obj | an arbitrary object. |
TypeError | if obj is a Integer or a Symbol. |
Definition at line 1743 of file class.c.
References klass.
Referenced by InitVM_resolv(), rb_extend_object(), and rb_obj_singleton_methods().
Attach a object to a singleton class.
Definition at line 444 of file class.c.
References FL_SINGLETON, FL_TEST, id_attached, klass, obj, rb_class_ivar_set(), RCLASS_IV_TBL, and st_init_numtable().
Definition at line 373 of file class.c.
References obj, Qundef, and rb_singleton_class_clone_and_attach().
Definition at line 380 of file class.c.
References FL_SINGLETON, FL_TEST, id_attached, klass, obj, rb_attr_get(), and RBASIC.
Referenced by rb_singleton_class_clone().
Returns the singleton class of obj, or nil if obj is not a singleton object.
obj | an arbitrary object. |
Definition at line 1712 of file class.c.
References FL_SINGLETON, FL_TEST, id_attached, klass, obj, Qnil, rb_ivar_get(), rb_special_singleton_class(), RBASIC, and SPECIAL_CONST_P.
Referenced by rb_obj_singleton_method().
Definition at line 468 of file class.c.
References id_attached, rb_attr_get(), RB_TYPE_P, and T_CLASS.
Definition at line 1639 of file class.c.
Referenced by rb_singleton_class_get().