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

ruby-changes:16851

From: nobu <ko1@a...>
Date: Tue, 3 Aug 2010 21:16:25 +0900 (JST)
Subject: [ruby-changes:16851] Ruby:r28846 (trunk): * random.c (Init_Random): add Random::DEFAULT.

nobu	2010-08-03 21:16:06 +0900 (Tue, 03 Aug 2010)

  New Revision: 28846

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

  Log:
    * random.c (Init_Random): add Random::DEFAULT.

  Modified files:
    trunk/ChangeLog
    trunk/random.c
    trunk/test/ruby/test_rand.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 28845)
+++ ChangeLog	(revision 28846)
@@ -1,3 +1,7 @@
+Tue Aug  3 21:16:03 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* random.c (Init_Random): add Random::DEFAULT.
+
 Tue Aug  3 21:01:10 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* hash.c (rb_check_hash_type): added.
Index: test/ruby/test_rand.rb
===================================================================
--- test/ruby/test_rand.rb	(revision 28845)
+++ test/ruby/test_rand.rb	(revision 28846)
@@ -415,4 +415,16 @@
       assert_equal(r1, r2)
     }
   end
+
+  def test_default
+    r1 = Random::DEFAULT.dup
+    r2 = Random::DEFAULT.dup
+    3.times do
+      x0 = rand
+      x1 = r1.rand
+      x2 = r2.rand
+      assert_equal(x0, x1)
+      assert_equal(x0, x2)
+    end
+  end
 end
Index: random.c
===================================================================
--- random.c	(revision 28845)
+++ random.c	(revision 28846)
@@ -329,7 +329,12 @@
     rb_gc_mark(((rb_random_t *)ptr)->seed);
 }
 
-#define random_free RUBY_TYPED_DEFAULT_FREE
+static void
+random_free(void *ptr)
+{
+    if (ptr != &default_rand)
+	xfree(ptr);
+}
 
 static size_t
 random_memsize(const void *ptr)
@@ -1232,6 +1237,8 @@
     rb_define_private_method(rb_cRandom, "state", random_state, 0);
     rb_define_private_method(rb_cRandom, "left", random_left, 0);
     rb_define_method(rb_cRandom, "==", random_equal, 1);
+    rb_define_const(rb_cRandom, "DEFAULT",
+		    TypedData_Wrap_Struct(rb_cRandom, &random_data_type, &default_rand));
 
     rb_define_singleton_method(rb_cRandom, "srand", rb_f_srand, -1);
     rb_define_singleton_method(rb_cRandom, "rand", rb_f_rand, -1);

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

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