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

ruby-changes:5119

From: knu <ko1@a...>
Date: Mon, 26 May 2008 17:49:23 +0900 (JST)
Subject: [ruby-changes:5119] Ruby:r16614 (trunk): * enumerator.c (struct enumerator, enumerator_init)

knu	2008-05-26 17:49:08 +0900 (Mon, 26 May 2008)

  New Revision: 16614

  Modified files:
    trunk/ChangeLog
    trunk/enumerator.c

  Log:
    * enumerator.c (struct enumerator, enumerator_init)
      (enumerator_init_copy, enumerator_each): Eliminate iter.
      (enumerator_ptr): Do not hardcode the class name.
      (enumerator_with_index): Delay variable initialization after
      RETURN_ENUMERATOR().


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16614&r2=16613&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enumerator.c?r1=16614&r2=16613&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 16613)
+++ ChangeLog	(revision 16614)
@@ -1,3 +1,11 @@
+Mon May 26 17:48:42 2008  Akinori MUSHA  <knu@i...>
+
+	* enumerator.c (struct enumerator, enumerator_init)
+	  (enumerator_init_copy, enumerator_each): Eliminate iter.
+	  (enumerator_ptr): Do not hardcode the class name.
+	  (enumerator_with_index): Delay variable initialization after
+	  RETURN_ENUMERATOR().
+
 Mon May 26 17:23:49 2008  NAKAMURA Usaku  <usa@r...>
 
 	* file.c (file_expand_path): add more space for '/'.
Index: enumerator.c
===================================================================
--- enumerator.c	(revision 16613)
+++ enumerator.c	(revision 16614)
@@ -30,7 +30,6 @@
     VALUE obj;
     ID    meth;
     VALUE args;
-    rb_block_call_func *iter;
     VALUE fib;
     VALUE dst;
     VALUE no_next;
@@ -54,8 +53,8 @@
     Data_Get_Struct(obj, struct enumerator, ptr);
     if (RDATA(obj)->dmark != enumerator_mark) {
 	rb_raise(rb_eTypeError,
-		 "wrong argument type %s (expected Enumerable::Enumerator)",
-		 rb_obj_classname(obj));
+		 "wrong argument type %s (expected %s)",
+		 rb_obj_classname(obj), rb_class2name(rb_cEnumerator));
     }
     if (!ptr) {
 	rb_raise(rb_eArgError, "uninitialized enumerator");
@@ -222,7 +221,6 @@
 
     ptr->obj  = obj;
     ptr->meth = rb_to_id(meth);
-    ptr->iter = enumerator_each_i;
     if (argc) ptr->args = rb_ary_new4(argc, argv);
     ptr->fib = 0;
     ptr->dst = Qnil;
@@ -272,7 +270,6 @@
 
     ptr1->obj  = ptr0->obj;
     ptr1->meth = ptr0->meth;
-    ptr1->iter = ptr0->iter;
     ptr1->args = ptr0->args;
     ptr1->fib  = 0;
 
@@ -306,7 +303,8 @@
 	argc = RARRAY_LEN(e->args);
 	argv = RARRAY_PTR(e->args);
     }
-    return rb_block_call(e->obj, e->meth, argc, argv, e->iter, (VALUE)e);
+    return rb_block_call(e->obj, e->meth, argc, argv,
+			 enumerator_each_i, (VALUE)e);
 }
 
 static VALUE
@@ -329,12 +327,13 @@
 static VALUE
 enumerator_with_index(VALUE obj)
 {
-    struct enumerator *e = enumerator_ptr(obj);
+    struct enumerator *e;
     VALUE memo = 0;
     int argc = 0;
     VALUE *argv = 0;
 
     RETURN_ENUMERATOR(obj, 0, 0);
+    e = enumerator_ptr(obj);
     if (e->args) {
 	argc = RARRAY_LEN(e->args);
 	argv = RARRAY_PTR(e->args);

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

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