summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-08-13 21:57:46 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-08-13 21:57:46 +0900
commit598ff395b4de8dd4e6ee21cbcaedfe428ca62b52 (patch)
tree7b23ff1eeb296c5c45f95e8e525618360af29ca6
parentad7085e47547a32102dff82981924407ed254769 (diff)
parenta9b37bff4b985f2e4ca9e76a4197b69c1fcfd057 (diff)
downloadmruby-598ff395b4de8dd4e6ee21cbcaedfe428ca62b52.tar.gz
mruby-598ff395b4de8dd4e6ee21cbcaedfe428ca62b52.zip
Merge pull request #2531 from kkkkkt/refactor-numeric-hash-method
refactor mrb_hash_shift, num_pow, flo_eq, flo_finite_p method
-rw-r--r--src/hash.c18
-rw-r--r--src/numeric.c18
2 files changed, 12 insertions, 24 deletions
diff --git a/src/hash.c b/src/hash.c
index d91f120bf..a43e8ae19 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -553,18 +553,16 @@ mrb_hash_shift(mrb_state *mrb, mrb_value hash)
mrb_value delKey, delVal;
mrb_hash_modify(mrb, hash);
- if (h) {
- if (kh_size(h) > 0) {
- for (k = kh_begin(h); k != kh_end(h); k++) {
- if (!kh_exist(h,k)) continue;
+ if (h && kh_size(h) > 0) {
+ for (k = kh_begin(h); k != kh_end(h); k++) {
+ if (!kh_exist(h,k)) continue;
- delKey = kh_key(h,k);
- mrb_gc_protect(mrb, delKey);
- delVal = mrb_hash_delete_key(mrb, hash, delKey);
- mrb_gc_protect(mrb, delVal);
+ delKey = kh_key(h,k);
+ mrb_gc_protect(mrb, delKey);
+ delVal = mrb_hash_delete_key(mrb, hash, delKey);
+ mrb_gc_protect(mrb, delVal);
- return mrb_assoc_new(mrb, delKey, delVal);
- }
+ return mrb_assoc_new(mrb, delKey, delVal);
}
}
diff --git a/src/numeric.c b/src/numeric.c
index f99447d86..6c77a20c9 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -54,13 +54,11 @@ static mrb_value
num_pow(mrb_state *mrb, mrb_value x)
{
mrb_value y;
- mrb_bool both_int = FALSE;
mrb_float d;
mrb_get_args(mrb, "o", &y);
- if (mrb_fixnum_p(x) && mrb_fixnum_p(y)) both_int = TRUE;
d = pow(mrb_to_flo(mrb, x), mrb_to_flo(mrb, y));
- if (both_int && FIXABLE(d))
+ if (mrb_fixnum_p(x) && mrb_fixnum_p(y) && FIXABLE(d))
return mrb_fixnum_value((mrb_int)d);
return mrb_float_value(mrb, d);
}
@@ -397,22 +395,16 @@ static mrb_value
flo_eq(mrb_state *mrb, mrb_value x)
{
mrb_value y;
- volatile mrb_float a, b;
-
mrb_get_args(mrb, "o", &y);
switch (mrb_type(y)) {
case MRB_TT_FIXNUM:
- b = (mrb_float)mrb_fixnum(y);
- break;
+ return mrb_bool_value(mrb_float(x) == (mrb_float)mrb_fixnum(y));
case MRB_TT_FLOAT:
- b = mrb_float(y);
- break;
+ return mrb_bool_value(mrb_float(x) == (mrb_float)mrb_float(y));
default:
return mrb_false_value();
}
- a = mrb_float(x);
- return mrb_bool_value(a == b);
}
/* 15.2.8.3.18 */
@@ -493,9 +485,7 @@ flo_infinite_p(mrb_state *mrb, mrb_value num)
static mrb_value
flo_finite_p(mrb_state *mrb, mrb_value num)
{
- mrb_float value = mrb_float(num);
-
- return mrb_bool_value(isfinite(value));
+ return mrb_bool_value(isfinite(mrb_float(num)));
}
/* 15.2.9.3.10 */