Ruby
2.5.0dev(2017-10-22revision60238)
|
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__ |
Definition at line 33 of file class.c.
Referenced by rb_singleton_class_attached(), rb_singleton_class_get(), and rb_singleton_class_internal_p().
#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 | |||
) |
void Init_class_hierarchy | ( | void | ) |
Definition at line 546 of file class.c.
References rb_cBasicObject.
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 220 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 201 of file class.c.
Referenced by rb_class_new().
void rb_class_detach_module_subclasses | ( | VALUE | klass | ) |
Definition at line 145 of file class.c.
References rb_class_foreach_subclass().
void rb_class_detach_subclasses | ( | VALUE | klass | ) |
Definition at line 133 of file class.c.
References rb_class_foreach_subclass().
Definition at line 113 of file class.c.
References f, rb_subclass_entry::klass, rb_subclass_entry::next, and RCLASS_EXT.
Referenced by rb_class_detach_module_subclasses(), and rb_class_detach_subclasses().
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 620 of file class.c.
References CONST_ID, rb_cObject, and rb_funcall().
Referenced by rb_define_class(), and rb_define_class_id_under().
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 242 of file class.c.
References Check_Type, rb_check_inheritable(), rb_class_boot(), and T_CLASS.
Referenced by rb_define_class_id().
void rb_class_remove_from_module_subclasses | ( | VALUE | klass | ) |
Definition at line 94 of file class.c.
References rb_subclass_entry::klass, rb_subclass_entry::next, NULL, RCLASS_EXT, and xfree().
void rb_class_remove_from_super_subclasses | ( | VALUE | klass | ) |
Definition at line 76 of file class.c.
References rb_subclass_entry::klass, rb_subclass_entry::next, NULL, RCLASS_EXT, and xfree().
Definition at line 36 of file class.c.
References ALLOC, rb_subclass_entry::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 646 of file class.c.
References id, 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_name_class(), 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_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_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(), 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 599 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().
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 716 of file class.c.
References 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, 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 693 of file class.c.
References rb_define_class_id_under(), and rb_intern.
Referenced by exp1(), Init_cparse(), Init_fiddle(), Init_fiddle_closure(), Init_fiddle_function(), Init_fiddle_handle(), Init_ISeq(), Init_md5(), 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(), Init_rmd160(), Init_sha1(), InitVM_transcode(), rsock_init_ancdata(), rsock_init_sockifaddr(), and rsock_init_sockopt().
Definition at line 768 of file class.c.
References id, PRIsVALUE, rb_cObject, rb_const_defined(), rb_const_get(), rb_const_set(), rb_define_module_id(), rb_eTypeError, rb_intern, rb_obj_class(), rb_raise(), RB_TYPE_P, rb_vm_add_root_module(), and T_MODULE.
Referenced by exp1(), Init_Comparable(), Init_coverage(), Init_cparse(), Init_Enumerable(), Init_etc(), Init_fcntl(), Init_fiddle(), Init_fiddle_closure(), Init_File(), Init_GC(), Init_limits(), Init_marshal(), 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 757 of file class.c.
References rb_module_new(), and rb_name_class().
Referenced by rb_define_module(), and rb_define_module_id_under().
Definition at line 796 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 790 of file class.c.
References rb_define_module_id_under(), and rb_intern.
Referenced by 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 1596 of file eval.c.
References rb_include_module(), and rb_singleton_class().
Referenced by rb_eval_string_wrap(), rb_mod_syserr_fail(), and rb_mod_syserr_fail_str().
void rb_freeze_singleton_class | ( | VALUE | x | ) |
Definition at line 1638 of file class.c.
References FL_FREEZE, FL_SINGLETON, FL_TEST, OBJ_FREEZE_RAW, RBASIC, RBASIC_CLASS, and RCLASS_ORIGIN.
void rb_frozen_class_p | ( | VALUE | klass | ) |
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 404 of file eval.c.
References BUILTIN_TYPE, Check_Type, FL_SINGLETON, FL_TEST, NORETURN(), OBJ_FROZEN, rb_error_frozen(), rb_ivar_get(), SPECIAL_CONST_P, T_CLASS, T_ICLASS, and T_MODULE.
Referenced by rb_alias(), rb_deprecate_constant(), and rb_undef().
Definition at line 864 of file class.c.
Referenced by Init_Array(), Init_Dir(), Init_stringio(), InitVM_Struct(), and rb_extend_object().
Definition at line 577 of file class.c.
References BUILTIN_TYPE, and T_CLASS.
Referenced by rb_define_class_id().
Definition at line 1085 of file class.c.
References BUILTIN_TYPE, rb_ary_new(), rb_ary_push(), RBASIC, RCLASS_ORIGIN, RCLASS_SUPER, and T_ICLASS.
Definition at line 1053 of file class.c.
References BUILTIN_TYPE, Check_Type, Qfalse, Qtrue, RBASIC, RCLASS_SUPER, T_ICLASS, and T_MODULE.
Definition at line 1017 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.
VALUE rb_module_new | ( | void | ) |
Definition at line 749 of file class.c.
Referenced by rb_define_module_id(), and rb_eval_string_wrap().
Definition at line 1330 of file class.c.
References rb_check_arity, rb_obj_singleton_methods(), and RTEST.
Definition at line 1418 of file class.c.
References CLASS_OF, FL_SINGLETON, FL_TEST, method_entry_arg::list, Qtrue, rb_id_table_foreach(), rb_scan_args(), RCLASS_M_TBL, RCLASS_ORIGIN, recur, method_entry_arg::recur, RTEST, and st_init_numtable.
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 1689 of file class.c.
Referenced by InitVM_resolv(), and rb_extend_object().
Attach a object to a singleton class.
Definition at line 421 of file class.c.
References FL_SINGLETON, FL_TEST, id_attached, rb_class_ivar_set(), RCLASS_IV_TBL, and st_init_numtable.
Definition at line 365 of file class.c.
References Qundef, and rb_singleton_class_clone_and_attach().
Definition at line 371 of file class.c.
References FL_SINGLETON, FL_TEST, 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 1658 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().
int rb_singleton_class_internal_p | ( | VALUE | sklass | ) |
Definition at line 450 of file class.c.
References id_attached, rb_attr_get(), RB_TYPE_P, and T_CLASS.
Definition at line 1579 of file class.c.
Referenced by rb_singleton_class_get().