summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-12-31 15:14:37 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-12-31 15:14:37 +0900
commitb9e1b9b32852e2fb5836c1d4fd622a5a9a41119e (patch)
tree7a0be15fff89343b2ab112268db3293c53bf071d
parent566a8d3fcb9e17c463e63927084112532bc09c0d (diff)
downloadmruby-b9e1b9b32852e2fb5836c1d4fd622a5a9a41119e.tar.gz
mruby-b9e1b9b32852e2fb5836c1d4fd622a5a9a41119e.zip
numeric.c: merge `mrb_as_float` implementation to `mrb_ensure_float_type`.
Since they are basically duplicated functionality. `mrb_as_float` is now a macro defined using `mrb_ensure_float_type`; #5620
-rw-r--r--include/mruby.h1
-rw-r--r--include/mruby/numeric.h1
-rw-r--r--src/numeric.c21
3 files changed, 1 insertions, 22 deletions
diff --git a/include/mruby.h b/include/mruby.h
index 465c944fd..806ceaff6 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -1270,6 +1270,7 @@ MRB_API mrb_bool mrb_obj_equal(mrb_state *mrb, mrb_value a, mrb_value b);
MRB_API mrb_bool mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
#ifndef MRB_NO_FLOAT
MRB_API mrb_value mrb_ensure_float_type(mrb_state *mrb, mrb_value val);
+#define mrb_as_float(mrb, x) mrb_float(mrb_ensure_float_type(mrb, x))
/* obsolete: use mrb_ensure_float_type() instead */
#define mrb_to_float(mrb, val) mrb_ensure_float_type(mrb, val)
#endif
diff --git a/include/mruby/numeric.h b/include/mruby/numeric.h
index 4b14588ac..aec46413c 100644
--- a/include/mruby/numeric.h
+++ b/include/mruby/numeric.h
@@ -160,7 +160,6 @@ mrb_int_mul_overflow(mrb_int a, mrb_int b, mrb_int *c)
# endif /* MRB_USE_FLOAT32 */
MRB_API mrb_value mrb_float_to_integer(mrb_state *mrb, mrb_value val);
-MRB_API mrb_float mrb_as_float(mrb_state *mrb, mrb_value x);
/* internal functions */
mrb_float mrb_div_float(mrb_float x, mrb_float y);
diff --git a/src/numeric.c b/src/numeric.c
index a3021b19e..fb3c0e48f 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -20,27 +20,6 @@
#endif
#endif
-#ifndef MRB_NO_FLOAT
-MRB_API mrb_float
-mrb_as_float(mrb_state *mrb, mrb_value val)
-{
- switch (mrb_type(val)) {
- case MRB_TT_INTEGER:
- return (mrb_float)mrb_integer(val);
- case MRB_TT_FLOAT:
- break;
- case MRB_TT_RATIONAL:
- case MRB_TT_COMPLEX:
- val = mrb_type_convert(mrb, val, MRB_TT_FLOAT, MRB_SYM(to_f));
- break;
- default:
- mrb_raise(mrb, E_TYPE_ERROR, "non float value");
- break;
- }
- return mrb_float(val);
-}
-#endif
-
static void
int_overflow(mrb_state *mrb, const char *reason)
{