summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-random/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-03-09 01:21:57 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-03-09 01:21:57 +0900
commit9a89a82048ae799d737820012675e998001e1804 (patch)
treedcc7862a8a8ec278997fdbbf7216a98f58641293 /mrbgems/mruby-random/src
parentae65c7da58d3e3f88096b44984dd356b86283014 (diff)
downloadmruby-9a89a82048ae799d737820012675e998001e1804.tar.gz
mruby-9a89a82048ae799d737820012675e998001e1804.zip
refactoring mruby-random
Diffstat (limited to 'mrbgems/mruby-random/src')
-rw-r--r--mrbgems/mruby-random/src/random.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/mrbgems/mruby-random/src/random.c b/mrbgems/mruby-random/src/random.c
index fb2b531b5..50ea0ab4e 100644
--- a/mrbgems/mruby-random/src/random.c
+++ b/mrbgems/mruby-random/src/random.c
@@ -90,21 +90,31 @@ get_opt(mrb_state* mrb)
return arg;
}
+static mrb_value
+get_random(mrb_state *mrb) {
+ return mrb_const_get(mrb,
+ mrb_obj_value(mrb_class_get(mrb, "Random")),
+ mrb_intern_lit(mrb, "DEFAULT"));
+}
+
+static mt_state *
+get_random_state(mrb_state *mrb)
+{
+ mrb_value random_val = get_random(mrb);
+ return (mt_state*)DATA_PTR(random_val);
+}
+
static mrb_value
mrb_random_g_rand(mrb_state *mrb, mrb_value self)
{
- mrb_value random = mrb_const_get(mrb,
- mrb_obj_value(mrb_class_get(mrb, "Random")),
- mrb_intern_lit(mrb, "DEFAULT"));
+ mrb_value random = get_random(mrb);
return mrb_random_rand(mrb, random);
}
static mrb_value
mrb_random_g_srand(mrb_state *mrb, mrb_value self)
{
- mrb_value random = mrb_const_get(mrb,
- mrb_obj_value(mrb_class_get(mrb, "Random")),
- mrb_intern_lit(mrb, "DEFAULT"));
+ mrb_value random = get_random(mrb);
return mrb_random_srand(mrb, random);
}
@@ -200,10 +210,7 @@ mrb_ary_shuffle_bang(mrb_state *mrb, mrb_value ary)
mrb_get_args(mrb, "|d", &random, &mt_state_type);
if (random == NULL) {
- mrb_value random_val = mrb_const_get(mrb,
- mrb_obj_value(mrb_class_get(mrb, "Random")),
- mrb_intern_lit(mrb, "DEFAULT"));
- random = (mt_state *)DATA_PTR(random_val);
+ random = get_random_state(mrb);
}
mrb_random_rand_seed(mrb, random);
@@ -265,10 +272,7 @@ mrb_ary_sample(mrb_state *mrb, mrb_value ary)
mrb_get_args(mrb, "|i?d", &n, &given, &random, &mt_state_type);
if (random == NULL) {
- mrb_value random_val = mrb_const_get(mrb,
- mrb_obj_value(mrb_class_get(mrb, "Random")),
- mrb_intern_lit(mrb, "DEFAULT"));
- random = (mt_state *)DATA_PTR(random_val);
+ random = get_random_state(mrb);
}
mrb_random_rand_seed(mrb, random);
mt_rand(random);