diff options
| author | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-19 11:58:31 +0900 |
|---|---|---|
| committer | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-19 11:58:31 +0900 |
| commit | dc2e1c1ce8ae6da16532337b85ea1064db8d0624 (patch) | |
| tree | fc389b0c1bc23dea76e92c5747a8905a31966844 /src/numeric.c | |
| parent | 5217d889633fc556458b2327c30ba483e02ce6d7 (diff) | |
| parent | 6ab9c389c43bdad2311b384852a1f448e56a527c (diff) | |
| download | mruby-dc2e1c1ce8ae6da16532337b85ea1064db8d0624.tar.gz mruby-dc2e1c1ce8ae6da16532337b85ea1064db8d0624.zip | |
Merge branch 'pr-add-new-api-mrb_true_or_false_value' of https://github.com/monaka/mruby into monaka-pr-add-new-api-mrb_true_or_false_value
Diffstat (limited to 'src/numeric.c')
| -rw-r--r-- | src/numeric.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/numeric.c b/src/numeric.c index 2cd255a2d..262fa921a 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -380,15 +380,17 @@ static mrb_value num_eql(mrb_state *mrb, mrb_value x) { mrb_value y; + mrb_bool eql_p; mrb_get_args(mrb, "o", &y); - if (mrb_type(x) != mrb_type(y)) return mrb_false_value(); - if (mrb_equal(mrb, x, y)) { - return mrb_true_value(); + if (mrb_type(x) != mrb_type(y)) { + eql_p = 0; } else { - return mrb_false_value(); + eql_p = mrb_equal(mrb, x, y); } + + return mrb_true_or_false_value(eql_p); } static mrb_value @@ -430,7 +432,7 @@ flo_eq(mrb_state *mrb, mrb_value x) return num_equal(mrb, x, y); } a = mrb_float(x); - return (a == b)?mrb_true_value():mrb_false_value(); + return mrb_true_or_false_value(a == b); } /* 15.2.8.3.18 */ @@ -511,10 +513,11 @@ static mrb_value flo_finite_p(mrb_state *mrb, mrb_value num) { mrb_float value = mrb_float(num); + mrb_bool finite_p; + + finite_p = !(isinf(value) || isnan(value)); - if (isinf(value) || isnan(value)) - return mrb_false_value(); - return mrb_true_value(); + return mrb_true_or_false_value(finite_p); } /* 15.2.9.3.10 */ @@ -923,19 +926,15 @@ static mrb_value fix_equal(mrb_state *mrb, mrb_value x) { mrb_value y; + mrb_bool equal_p; mrb_get_args(mrb, "o", &y); - if (mrb_obj_equal(mrb, x, y)) return mrb_true_value(); - switch (mrb_type(y)) { - case MRB_TT_FLOAT: - if ((mrb_float)mrb_fixnum(x) == mrb_float(y)) - return mrb_true_value(); - /* fall through */ - case MRB_TT_FIXNUM: - default: - return mrb_false_value(); - } + equal_p = mrb_obj_equal(mrb, x, y) || + (mrb_type(y) == MRB_TT_FLOAT && + (mrb_float)mrb_fixnum(x) == mrb_float(y)); + + return mrb_true_or_false_value(equal_p); } /* 15.2.8.3.8 */ |
