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/