[前][次][番号順一覧][スレッド一覧]

ruby-changes:7815

From: yugui <ko1@a...>
Date: Sun, 14 Sep 2008 13:50:54 +0900 (JST)
Subject: [ruby-changes:7815] Ruby:r19336 (trunk): * object.c (Init_Object): added metameta-class initialization for

yugui	2008-09-14 13:48:56 +0900 (Sun, 14 Sep 2008)

  New Revision: 19336

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19336

  Log:
    * object.c (Init_Object): added metameta-class initialization for
      BasicObject, Object, and Module.
      The metameta-classes of them are now the metaclass of Class, as the
      metameta-calss of Class is.
    
    * object.c (boot_defmetametaclass): added.

  Modified files:
    trunk/ChangeLog
    trunk/object.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19335)
+++ ChangeLog	(revision 19336)
@@ -1,3 +1,12 @@
+Sun Sep 14 13:48:03 2008  Yuki Sonoda (Yugui)  <yugui@y...>
+
+	* object.c (Init_Object): added metameta-class initialization for 
+	  BasicObject, Object, and Module.
+	  The metameta-classes of them are now the metaclass of Class, as the 
+	  metameta-calss of Class is. 
+
+	* object.c (boot_defmetametaclass): added.
+
 Sun Sep 14 10:10:43 2008  Tadayoshi Funaba  <tadf@d...>
 
 	* complex.c (f_{add,mul,sub}): omitted some shortcuts for preserve
Index: object.c
===================================================================
--- object.c	(revision 19335)
+++ object.c	(revision 19336)
@@ -2369,6 +2369,12 @@
     return obj;
 }
 
+static void
+boot_defmetametaclass(VALUE klass, VALUE metametaclass)
+{
+    RBASIC(RBASIC(klass)->klass)->klass = metametaclass;
+}
+
 /*
  *  Document-class: Class
  *
@@ -2467,6 +2473,9 @@
     metaclass = rb_make_metaclass(rb_cObject, metaclass);
     metaclass = rb_make_metaclass(rb_cModule, metaclass);
     metaclass = rb_make_metaclass(rb_cClass, metaclass);
+    boot_defmetametaclass(rb_cModule, metaclass);
+    boot_defmetametaclass(rb_cObject, metaclass);
+    boot_defmetametaclass(rb_cBasicObject, metaclass);
 
     rb_define_private_method(rb_cBasicObject, "initialize", rb_obj_dummy, 0);
     rb_define_alloc_func(rb_cBasicObject, rb_class_allocate_instance);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]