Classes and their hierarchy.


Data Structures

struct  clone_method_data

Defines

#define METACLASS_OF(k)   RBASIC(k)->klass
#define META_CLASS_OF_CLASS_CLASS_P(k)   (METACLASS_OF(k) == k)
 whether k is a meta^(n)-class of Class class
#define ENSURE_EIGENCLASS(klass)   (rb_ivar_get(METACLASS_OF(klass), id_attached) == 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

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.
VALUE rb_iseq_clone (VALUE iseqval, VALUE newcbase)
static int clone_method (ID mid, const rb_method_entry_t *me, struct clone_method_data *data)
VALUE rb_mod_init_copy (VALUE clone, VALUE orig)
VALUE rb_class_init_copy (VALUE clone, VALUE orig)
VALUE rb_singleton_class_clone (VALUE obj)
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)
static VALUE include_class_new (VALUE module, VALUE super)
void rb_include_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 (ID name, long type, VALUE ary)
static int ins_methods_prot_i (ID name, long type, VALUE ary)
static int ins_methods_priv_i (ID name, long type, VALUE ary)
static int ins_methods_pub_i (ID name, long type, VALUE ary)
static int method_entry (ID key, const rb_method_entry_t *me, st_table *list)
static VALUE class_instance_method_list (int argc, VALUE *argv, VALUE mod, int obj, int(*func)(ID, long, VALUE))
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 singleton_class_of (VALUE obj)
VALUE rb_singleton_class (VALUE obj)
 Returns the singleton class of obj.
void Init_Object (void)
 Initializes the world of objects and classes.

Variables

st_tablerb_class_tbl
static ID id_attached

Detailed Description

Terminology

Define Documentation

#define ENSURE_EIGENCLASS ( klass   )     (rb_ivar_get(METACLASS_OF(klass), id_attached) == klass ? METACLASS_OF(klass) : make_metaclass(klass))

ensures klass belongs to its own eigenclass.

Returns:
the eigenclass of klass
Postcondition:
klass belongs to the returned eigenclass. i.e. the attached object of the eigenclass is klass.
Note:
this macro creates a new eigenclass if necessary.

Definition at line 266 of file class.c.

Referenced by make_metaclass(), and rb_singleton_class().

#define META_CLASS_OF_CLASS_CLASS_P (  )     (METACLASS_OF(k) == k)

whether k is a meta^(n)-class of Class class

Return values:
1 if k is a meta^(n)-class of Class class (n >= 0)
0 otherwise

Definition at line 256 of file class.c.

Referenced by make_metaclass().

#define METACLASS_OF (  )     RBASIC(k)->klass

Definition at line 249 of file class.c.

Referenced by make_metaclass(), and make_singleton_class().

#define SPECIAL_SINGLETON ( x,
 ) 

Value:

do {\
    if (obj == (x)) {\
        return c;\
    }\
} while (0)

Definition at line 1201 of file class.c.

Referenced by singleton_class_of().

#define VISI (  )     ((x)&NOEX_MASK)

Definition at line 771 of file class.c.

Referenced by method_entry().

#define VISI_CHECK ( x,
 )     (VISI(x) == (f))

Definition at line 772 of file class.c.

Referenced by check_definition().


Function Documentation

static VALUE boot_defclass ( const char *  name,
VALUE  super 
) [static]

Definition at line 328 of file class.c.

References rb_class_boot(), rb_class_tbl, rb_cObject, rb_const_set(), rb_intern, rb_name_class(), and st_add_direct.

Referenced by Init_class_hierarchy().

static VALUE class_alloc ( VALUE  flags,
VALUE  klass 
) [static]

Allocates a struct RClass for a new class.

Parameters:
flags initial value for basic.flags of the returned class.
klass the class of the returned class.
Returns:
an uninitialized Class object.
Precondition:
klass must refer Class class or an ancestor of Class.

 (flags | T_CLASS) != 0  
Postcondition:
the returned class can safely be initialize 'd.
Note:
this function is not Class::allocate.

Definition at line 48 of file class.c.

References ALLOC, NEWOBJ, OBJSETUP, RCLASS_IV_INDEX_TBL, RCLASS_IV_TBL, RCLASS_M_TBL, and RCLASS_SUPER.

Referenced by include_class_new(), rb_class_boot(), rb_module_new(), and rb_singleton_class_clone().

static VALUE class_instance_method_list ( int  argc,
VALUE argv,
VALUE  mod,
int  obj,
int(*)(ID, long, VALUE func 
) [static]

Definition at line 841 of file class.c.

References BUILTIN_TYPE, FL_SINGLETON, FL_TEST, list, method_entry(), rb_ary_new(), rb_scan_args(), RCLASS_M_TBL, RCLASS_SUPER, 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_method ( ID  mid,
const rb_method_entry_t me,
struct clone_method_data data 
) [static]

Definition at line 128 of file class.c.

References rb_method_definition_struct::body, rb_method_entry_struct::def, rb_method_entry_struct::flag, GetISeqPtr, rb_method_definition_struct::iseq, clone_method_data::klass, rb_add_method(), RB_GC_GUARD, rb_iseq_clone(), rb_method_entry_set(), rb_iseq_struct::self, ST_CONTINUE, rb_method_definition_struct::type, and VM_METHOD_TYPE_ISEQ.

Referenced by rb_mod_init_copy(), and rb_singleton_class_clone().

static VALUE include_class_new ( VALUE  module,
VALUE  super 
) [static]

Definition at line 602 of file class.c.

References BUILTIN_TYPE, class_alloc(), clone_method_data::klass, OBJ_INFECT, rb_cClass, RBASIC, RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, st_init_numtable, T_ICLASS, and TYPE.

Referenced by rb_include_module().

void Init_class_hierarchy ( void   ) 

Definition at line 341 of file class.c.

References boot_defclass(), id_attached, rb_cBasicObject, rb_cClass, rb_cModule, rb_cObject, rb_intern, and RBASIC.

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.

boottime-classes.png

Then, the function defines classes, modules and methods as usual.

Definition at line 2481 of file object.c.

References CLASS_OF, conv_method_names, false_and(), false_or(), false_to_s(), false_xor(), id_eq, id_eql, id_init_clone, id_init_copy, id_init_dup, id_inspect, id_match, Init_class_hierarchy(), conv_method_tbl::method, nil_inspect(), nil_to_a(), nil_to_f(), 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_init_copy(), 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_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_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_remove_const(), rb_mod_remove_cvar(), 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 ( ID  name,
long  type,
VALUE  ary 
) [static]

Definition at line 796 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 ( ID  name,
long  type,
VALUE  ary 
) [static]

Definition at line 808 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 ( ID  name,
long  type,
VALUE  ary 
) [static]

Definition at line 802 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 ( ID  name,
long  type,
VALUE  ary 
) [static]

Definition at line 814 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 775 of file class.c.

References ID2SYM, NOEX_PRIVATE, NOEX_PROTECTED, NOEX_PUBLIC, rb_ary_push(), and ST_CONTINUE.

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.

Parameters:
klass a class
Returns:
created metaclass for the class
Precondition:
klass is a Class object

klass has no singleton class.

Postcondition:
the class of klass is the returned class.

the returned class is meta^(n+1)-class when klass is a meta^(n)-klass for n >= 0

Definition at line 280 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, and T_ICLASS.

Referenced by rb_make_metaclass().

static VALUE make_singleton_class ( VALUE  obj  )  [inline, static]

Creates a singleton class for obj.

Precondition:
obj must not a immediate nor a special const.

obj must not a Class object.

obj has no singleton class.

Definition at line 313 of file class.c.

References FL_SET, FL_SINGLETON, clone_method_data::klass, METACLASS_OF, rb_class_boot(), rb_class_real(), rb_singleton_class_attached(), and RBASIC.

Referenced by rb_make_metaclass().

static int method_entry ( ID  key,
const rb_method_entry_t me,
st_table list 
) [static]

Definition at line 820 of file class.c.

References rb_method_entry_struct::flag, ID_ALLOCATOR, list, st_add_direct, ST_CONTINUE, st_lookup, type, UNDEFINED_METHOD_ENTRY_P, and VISI.

Referenced by class_instance_method_list(), and rb_obj_singleton_methods().

void rb_check_inheritable ( VALUE  super  ) 

Ensures a class can be derived from super.

Parameters:
super a reference to an object.
Exceptions:
TypeError if super is not a Class or super is a singleton class.

Definition at line 91 of file class.c.

References FL_SINGLETON, rb_cClass, rb_eTypeError, rb_obj_classname(), rb_raise(), RBASIC, T_CLASS, and TYPE.

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.

Parameters:
super a class from which the new class derives.
Returns:
a class object.
Precondition:
super must be a class.
Postcondition:
the metaclass of the new class is Class.

Definition at line 72 of file class.c.

References class_alloc(), OBJ_INFECT, rb_cClass, RCLASS_M_TBL, RCLASS_SUPER, st_init_numtable, and T_CLASS.

Referenced by boot_defclass(), make_metaclass(), make_singleton_class(), rb_class_new(), and rb_class_s_alloc().

VALUE rb_class_inherited ( VALUE  super,
VALUE  klass 
)

Calls Class::inherited.

Parameters:
super A class which will be called inherited. NULL means Object class.
klass A Class object which derived from super
Returns:
the value Class::inherited's returns
Precondition:
Each of super and klass must be a Class object.

Definition at line 412 of file class.c.

References CONST_ID, rb_cObject, and rb_funcall().

Referenced by make_struct(), rb_class_initialize(), rb_define_class(), rb_define_class_id_under(), and rb_struct_define_without_accessor().

VALUE rb_class_init_copy ( VALUE  clone,
VALUE  orig 
)

Definition at line 184 of file class.c.

References FL_SINGLETON, FL_TEST, rb_cBasicObject, rb_eTypeError, rb_mod_init_copy(), rb_raise(), and RCLASS_SUPER.

Referenced by Init_Object().

VALUE rb_class_instance_methods ( int  argc,
VALUE argv,
VALUE  mod 
)

Definition at line 898 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.

Parameters:
super a class from which the new class derives.
Exceptions:
TypeError super is not inheritable.
TypeError super is the Class class.

Definition at line 113 of file class.c.

References Check_Type, rb_check_inheritable(), rb_class_boot(), and T_CLASS.

Referenced by Init_IO(), Init_VM(), make_struct(), rb_define_class_id(), and rb_struct_define_without_accessor().

VALUE rb_class_private_instance_methods ( int  argc,
VALUE argv,
VALUE  mod 
)

Definition at line 936 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 913 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 951 of file class.c.

References class_instance_method_list(), and ins_methods_pub_i().

Referenced by Init_Object().

VALUE rb_define_class ( const char *  name,
VALUE  super 
)

Defines a top-level class.

Parameters:
name name of the class
super a class from which the new class will derive. NULL means Object class.
Returns:
the created class
Exceptions:
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.
Postcondition:
top-level constant named name refers the returned class.
Note:
if a class named name is already defined and its superclass is super, the function just returns the defined class.

Definition at line 438 of file class.c.

References id, clone_method_data::klass, rb_class_inherited(), rb_class_real(), rb_class_tbl, 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_warn(), RCLASS_SUPER, st_add_direct, T_CLASS, and TYPE.

Referenced by Init_Array(), Init_bigdecimal(), Init_Bignum(), Init_Binding(), Init_Complex(), Init_Cont(), Init_dbm(), Init_Dir(), Init_Encoding(), Init_Enumerator(), Init_Exception(), Init_File(), Init_gdbm(), Init_Hash(), Init_iconv(), Init_IO(), Init_Numeric(), Init_Object(), 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_Time(), Init_tkutil(), Init_VM(), Init_win32ole(), rb_struct_define_without_accessor(), 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(), and ruby_Init_Continuation_body().

VALUE rb_define_class_id ( ID  id,
VALUE  super 
)

Defines a new class.

Parameters:
id ignored
super A class from which the new class will derive. NULL means Object class.
Returns:
the created class
Exceptions:
TypeError if super is not a Class object.
Note:
the returned class will not be associated with id. You must explicitly set a class name if necessary.

Definition at line 391 of file class.c.

References clone_method_data::klass, 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.

Parameters:
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.
Returns:
the created class
Exceptions:
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.
Postcondition:
top-level constant named name refers the returned class.
Note:
if a class named name is already defined and its superclass is super, the function just returns the defined class.

Definition at line 507 of file class.c.

References clone_method_data::klass, 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_warn(), RCLASS_SUPER, T_CLASS, and TYPE.

Referenced by make_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.

Parameters:
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.
Returns:
the created class
Exceptions:
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.
Postcondition:
top-level constant named name refers the returned class.
Note:
if a class named name is already defined and its superclass is super, the function just returns the defined class.

Definition at line 484 of file class.c.

References rb_define_class_id_under(), and rb_intern.

Referenced by exp1(), Init_cparse(), Init_curses(), Init_digest(), Init_dl(), Init_dlcfunc(), Init_dlhandle(), Init_dlptr(), Init_Enumerator(), Init_Exception(), Init_fiddle_closure(), Init_fiddle_function(), Init_File(), Init_generator(), Init_iconv(), Init_ISeq(), Init_md5(), 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_rmd160(), Init_sha1(), Init_strscan(), Init_syck(), Init_tkutil(), Init_transcode(), Init_VM(), Init_zlib(), rsock_init_ancdata(), rsock_init_sockopt(), and set_syserr().

VALUE rb_define_module ( const char *  name  ) 

Definition at line 556 of file class.c.

References id, rb_class_tbl, rb_cObject, rb_const_defined(), rb_const_get(), rb_const_set(), rb_define_module_id(), rb_eTypeError, rb_intern, rb_obj_classname(), rb_raise(), st_add_direct, T_MODULE, and TYPE.

Referenced by exp1(), Init_bug(), Init_Comparable(), Init_coverage(), Init_cparse(), Init_curses(), Init_digest(), Init_dl(), Init_Enumerable(), Init_etc(), Init_Exception(), Init_fcntl(), Init_fiddle(), Init_File(), Init_GC(), Init_generator(), Init_marshal(), Init_nkf(), Init_Object(), Init_openssl(), Init_ossl_asn1(), Init_ossl_cipher(), Init_ossl_dh(), Init_ossl_digest(), Init_ossl_dsa(), Init_ossl_hmac(), Init_ossl_pkey(), Init_ossl_rand(), Init_ossl_rsa(), Init_ossl_ssl(), Init_ossl_ssl_session(), 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_signal(), Init_syslog(), Init_tcltklib(), Init_tkutil(), Init_zlib(), and ruby_init_gems().

VALUE rb_define_module_id ( ID  id  ) 

Definition at line 545 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 582 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(), T_MODULE, and TYPE.

Referenced by rb_define_module_under().

VALUE rb_define_module_under ( VALUE  outer,
const char *  name 
)

Definition at line 576 of file class.c.

References rb_define_module_id_under(), and rb_intern.

Referenced by init_constants(), Init_curses(), Init_digest(), Init_File(), Init_GC(), Init_generator(), Init_iconv(), 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_parser(), Init_process(), Init_psych_to_ruby(), Init_psych_yaml_tree(), Init_syck(), Init_syslog(), Init_tcltklib(), and Init_win32ole().

void rb_include_module ( VALUE  klass,
VALUE  module 
)

Definition at line 628 of file class.c.

References BUILTIN_TYPE, Check_Type, FALSE, include_class_new(), OBJ_INFECT, OBJ_UNTRUSTED, rb_clear_cache(), rb_eArgError, rb_frozen_class_p(), rb_raise(), rb_secure(), RCLASS_M_TBL, RCLASS_SUPER, T_CLASS, T_ICLASS, T_MODULE, TRUE, and TYPE.

Referenced by Init_Array(), Init_dbm(), Init_digest(), Init_Dir(), Init_Enumerator(), Init_File(), Init_gdbm(), Init_Hash(), Init_iconv(), Init_IO(), Init_Numeric(), Init_Object(), Init_ossl_asn1(), Init_ossl_config(), Init_Range(), Init_sdbm(), Init_String(), Init_stringio(), Init_Struct(), Init_syck(), Init_syslog(), Init_Time(), Init_zlib(), rb_extend_object(), and rb_mod_append_features().

VALUE rb_iseq_clone ( VALUE  iseqval,
VALUE  newcbase 
)

Definition at line 1348 of file iseq.c.

References rb_iseq_struct::cref_stack, GetISeqPtr, iseq_alloc(), rb_iseq_struct::klass, rb_iseq_struct::local_iseq, NEW_BLOCK, rb_iseq_struct::orig, rb_cISeq, and rb_iseq_struct::self.

Referenced by clone_method().

VALUE rb_make_metaclass ( VALUE  obj,
VALUE  unused 
)

For internal use only.

Creates a new *singleton class* for an object.

Precondition:
obj has no singleton class.
Note:
DO NOT USE the function in an extension libraries. Use rb_singleton_class.
Parameters:
obj An object.
unused ignored.
Returns:
The singleton class of the object.

Definition at line 369 of file class.c.

References BUILTIN_TYPE, make_metaclass(), make_singleton_class(), and T_CLASS.

Referenced by make_struct(), rb_class_initialize(), rb_define_class_id(), rb_struct_define_without_accessor(), and singleton_class_of().

VALUE rb_mod_ancestors ( VALUE  mod  ) 

Definition at line 754 of file class.c.

References BUILTIN_TYPE, FL_SINGLETON, FL_TEST, clone_method_data::klass, rb_ary_new(), rb_ary_push(), RBASIC, RCLASS_SUPER, and T_ICLASS.

Referenced by Init_Object().

VALUE rb_mod_include_p ( VALUE  mod,
VALUE  mod2 
)

Definition at line 724 of file class.c.

References BUILTIN_TYPE, Check_Type, clone_method_data::klass, Qfalse, Qtrue, RBASIC, RCLASS_SUPER, T_ICLASS, and T_MODULE.

Referenced by Init_Object().

VALUE rb_mod_included_modules ( VALUE  mod  ) 

Definition at line 691 of file class.c.

References BUILTIN_TYPE, clone_method_data::klass, rb_ary_new(), rb_ary_push(), RBASIC, RCLASS_SUPER, and T_ICLASS.

Referenced by Init_Object().

VALUE rb_mod_init_copy ( VALUE  clone,
VALUE  orig 
)

Definition at line 146 of file class.c.

References CLASS_OF, clone_method(), CONST_ID, FL_SINGLETON, FL_TEST, id, clone_method_data::klass, rb_free_m_table(), rb_obj_init_copy(), rb_singleton_class_attached(), rb_singleton_class_clone(), RBASIC, RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, st_copy, st_delete, st_foreach, st_free_table, st_init_numtable, and clone_method_data::tbl.

Referenced by Init_Object(), and rb_class_init_copy().

VALUE rb_module_new ( void   ) 

Definition at line 535 of file class.c.

References class_alloc(), rb_cModule, RCLASS_M_TBL, st_init_numtable, and T_MODULE.

Referenced by rb_define_module_id(), rb_eval_string_wrap(), rb_load_internal(), and rb_module_s_alloc().

VALUE rb_obj_methods ( int  argc,
VALUE argv,
VALUE  obj 
)

Definition at line 976 of file class.c.

References class_instance_method_list(), CLASS_OF, ins_methods_i(), Qtrue, rb_obj_singleton_methods(), rb_scan_args(), and RTEST.

Referenced by Init_Object().

VALUE rb_obj_private_methods ( int  argc,
VALUE argv,
VALUE  obj 
)

Definition at line 1022 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 1007 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 1037 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 1076 of file class.c.

References CLASS_OF, FL_SINGLETON, FL_TEST, ins_methods_i(), clone_method_data::klass, list, method_entry(), Qtrue, rb_ary_new(), rb_scan_args(), RCLASS_M_TBL, RCLASS_SUPER, RTEST, st_foreach, st_free_table, st_init_numtable, T_ICLASS, and TYPE.

Referenced by Init_Object(), and rb_obj_methods().

VALUE rb_singleton_class ( VALUE  obj  ) 

Returns the singleton class of obj.

Creates it if necessary.

Parameters:
obj an arbitrary object.
Exceptions:
TypeError if obj is a Fixnum or a Symbol.
Returns:
the singleton class.
Postcondition:
obj has its own singleton class.

if obj is a class, the returned singleton class also has its own singleton class in order to keep consistency of the inheritance structure of metaclasses.

Note:
a new singleton class will be created if obj does not have it.

the singleton classes for nil, true and false are: NilClass, TrueClass and FalseClass.

Definition at line 1276 of file class.c.

References ENSURE_EIGENCLASS, singleton_class_of(), T_CLASS, and TYPE.

Referenced by Init_nkf(), Init_process(), Init_VM(), num_sadded(), rb_define_alloc_func(), rb_extend_object(), rb_mod_modfunc(), rb_obj_define_method(), rb_obj_instance_eval(), rb_obj_instance_exec(), rb_obj_singleton_class(), rb_undef_alloc_func(), and vm_define_method().

void rb_singleton_class_attached ( VALUE  klass,
VALUE  obj 
)

Attach a object to a singleton class.

Precondition:
klass is the singleton class of obj.

Definition at line 237 of file class.c.

References FL_SINGLETON, FL_TEST, id_attached, RCLASS_IV_TBL, st_init_numtable, and st_insert.

Referenced by make_metaclass(), make_singleton_class(), rb_mod_init_copy(), and rb_singleton_class_clone().

VALUE rb_singleton_class_clone ( VALUE  obj  ) 

Definition at line 199 of file class.c.

References BUILTIN_TYPE, class_alloc(), clone_method(), FL_SET, FL_SINGLETON, FL_TEST, clone_method_data::klass, rb_singleton_class_attached(), rb_singleton_class_clone(), RBASIC, RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, st_copy, st_foreach, st_init_numtable, T_CLASS, and clone_method_data::tbl.

Referenced by rb_mod_init_copy(), rb_obj_clone(), and rb_singleton_class_clone().

static VALUE singleton_class_of ( VALUE  obj  )  [static]

For internal use only.

Returns the singleton class of obj. Creates it if necessary.

Note:
DO NOT expose the returned singleton class to outside of class.c. Use rb_singleton_class instead for consistency of the metaclass hierarchy.

Definition at line 1218 of file class.c.

References FIXNUM_P, FL_SINGLETON, FL_TAINT, FL_TEST, FL_UNSET, FL_UNTRUSTED, id_attached, OBJ_FREEZE, OBJ_FROZEN, OBJ_TAINT, OBJ_TAINTED, OBJ_UNTRUST, OBJ_UNTRUSTED, Qfalse, Qnil, Qtrue, rb_bug(), rb_cFalseClass, rb_cNilClass, rb_cTrueClass, rb_eTypeError, rb_ivar_get(), rb_make_metaclass(), rb_raise(), rb_special_const_p(), RBASIC, SPECIAL_SINGLETON, and SYMBOL_P.

Referenced by rb_define_singleton_method(), and rb_singleton_class().


Variable Documentation

ID id_attached [static]

Definition at line 33 of file class.c.

Referenced by Init_class_hierarchy(), rb_singleton_class_attached(), and singleton_class_of().

st_table* rb_class_tbl

Definition at line 24 of file variable.c.

Referenced by boot_defclass(), find_class_path(), garbage_collect(), Init_var_tables(), rb_define_class(), and rb_define_module().


Generated on Wed Aug 10 09:19:09 2011 for Ruby by  doxygen 1.4.7