Ruby 1.9.3p327(2012-11-10revision37606)
Data Structures | Defines | Functions | Variables
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)
static int clone_const (ID key, const rb_const_entry_t *ce, st_table *tbl)
static int clone_const_i (st_data_t key, st_data_t value, st_data_t 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 (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 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
  • class: same as in Ruby.
  • singleton class: class for a particular object
  • eigenclass: = singleton class
  • metaclass: class of a class. metaclass is a kind of singleton class.
  • metametaclass: class of a metaclass.
  • meta^(n)-class: class of a meta^(n-1)-class.
  • attached object: A singleton class knows its unique instance. The instance is called the attached object for the singleton class.

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 294 of file class.c.

Referenced by make_metaclass(), and rb_singleton_class().

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

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

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

Definition at line 284 of file class.c.

Referenced by make_metaclass().

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

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

Referenced by singleton_class_of().

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

Definition at line 805 of file class.c.

Referenced by method_entry_i().

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

Definition at line 806 of file class.c.


Function Documentation

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

Allocates a struct RClass for a new class.

Parameters:
flagsinitial value for basic.flags of the returned class.
klassthe 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 50 of file class.c.

References ALLOC, NEWOBJ, OBJSETUP, RCLASS_CONST_TBL, 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(*)(st_data_t, st_data_t, st_data_t func 
) [static]
static int clone_const ( ID  key,
const rb_const_entry_t ce,
st_table tbl 
) [static]

Definition at line 148 of file class.c.

References ALLOC, ST_CONTINUE, and st_insert().

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 157 of file class.c.

References clone_const().

Referenced by rb_mod_init_copy(), and rb_singleton_class_clone().

static int clone_method ( ID  mid,
const rb_method_entry_t me,
struct clone_method_data data 
) [static]
static VALUE include_class_new ( VALUE  module,
VALUE  super 
) [static]
void Init_class_hierarchy ( void  )
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.
boottime-classes.png

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

Definition at line 2635 of file object.c.

References CLASS_OF, conv_method_names, false_and(), false_or(), false_to_s(), false_xor(), conv_method_tbl::id, 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_private_constant(), rb_mod_public_constant(), 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 ( st_data_t  name,
st_data_t  type,
st_data_t  ary 
) [static]

Definition at line 830 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 842 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 836 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 848 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]
static VALUE make_metaclass ( VALUE  klass) [inline, static]

Creates a metaclass of klass.

Parameters:
klassa 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 308 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 341 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_i ( st_data_t  key,
st_data_t  value,
st_data_t  data 
) [static]
void rb_check_inheritable ( VALUE  super)

Ensures a class can be derived from super.

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

Definition at line 94 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:
supera 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 75 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:
superA class which will be called #inherited. NULL means Object class.
klassA 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 441 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 208 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 934 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:
supera class from which the new class derives.
Exceptions:
TypeErrorsuper is not inheritable.
TypeErrorsuper is the Class class.

Definition at line 116 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 972 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 949 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 987 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:
namename of the class
supera class from which the new class will derive. NULL means Object class.
Returns:
the created class
Exceptions:
TypeErrorif the constant name name is already taken but the constant is not a Class.
NameErrorif 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 467 of file class.c.

References id, clone_method_data::klass, 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_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_date_core(), 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_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_Time(), Init_tkutil(), Init_VM(), Init_win32ole(), negate_lit(), 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:
idignored
superA class from which the new class will derive. NULL means Object class.
Returns:
the created class
Exceptions:
TypeErrorif 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 420 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:
outera class which contains the new class.
idname of the new class
supera class from which the new class will derive. NULL means Object class.
Returns:
the created class
Exceptions:
TypeErrorif the constant name name is already taken but the constant is not a Class.
NameErrorif 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 536 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:
outera class which contains the new class.
namename of the new class
supera class from which the new class will derive. NULL means Object class.
Returns:
the created class
Exceptions:
TypeErrorif the constant name name is already taken but the constant is not a Class.
NameErrorif 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 513 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_numhash(), 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_string(), 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)
VALUE rb_define_module_id ( ID  id)

Definition at line 574 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 
)
VALUE rb_define_module_under ( VALUE  outer,
const char *  name 
)
void rb_include_module ( VALUE  klass,
VALUE  module 
)
VALUE rb_iseq_clone ( VALUE  iseqval,
VALUE  newcbase 
)

Definition at line 1348 of file iseq.c.

Referenced by clone_method(), and vm_define_method().

VALUE rb_make_metaclass ( VALUE  obj,
VALUE  unused 
)

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:
objAn object.
unusedignored.
Returns:
The singleton class of the object.

Definition at line 398 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)
VALUE rb_mod_include_p ( VALUE  mod,
VALUE  mod2 
)

Definition at line 758 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 725 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 
)
VALUE rb_module_new ( void  )
VALUE rb_obj_methods ( int  argc,
VALUE argv,
VALUE  obj 
)
VALUE rb_obj_private_methods ( int  argc,
VALUE argv,
VALUE  obj 
)

Definition at line 1058 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 1043 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 1073 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 
)
VALUE rb_singleton_class ( VALUE  obj)

Returns the singleton class of obj.

Creates it if necessary.

Parameters:
objan arbitrary object.
Exceptions:
TypeErrorif 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 1312 of file class.c.

References ENSURE_EIGENCLASS, clone_method_data::klass, singleton_class_of(), T_CLASS, and TYPE.

Referenced by Init_date_core(), 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 265 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)
static VALUE singleton_class_of ( VALUE  obj) [static]

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 1254 of file class.c.

References FIXNUM_P, FL_SINGLETON, FL_TAINT, FL_TEST, FL_UNSET, FL_UNTRUSTED, id_attached, clone_method_data::klass, 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 35 of file class.c.

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

Definition at line 23 of file variable.c.

Referenced by boot_defclass().