diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-12-29 16:23:33 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-12-29 16:39:29 +0900 |
| commit | 4f297ac29cec0c12aae1f7fd56390fdb6b925547 (patch) | |
| tree | 784efb6605d34bae3267be8908d35acbf5f96eb4 | |
| parent | b6283978c586702e1b2ff182b83ceb3e2bf691b3 (diff) | |
| download | mruby-4f297ac29cec0c12aae1f7fd56390fdb6b925547.tar.gz mruby-4f297ac29cec0c12aae1f7fd56390fdb6b925547.zip | |
object.c: introduce `mrb_ensure_{int,float}_type`.
Since `mrb_to_integer` and `mrb_to_float` does not convert the object
but checks types, they are named so by historical reason. We introduced
properly named functions.
This commit obsoletes the following functions:
* mrb_to_integer()
* mrb_to_int()
* mrb_to_float()
Use `mrb_ensure_int_type()` instead for the first 2 functions. Use
`mrb_ensure_float_type()` for the last.
| -rw-r--r-- | include/mruby.h | 12 | ||||
| -rw-r--r-- | src/kernel.c | 2 | ||||
| -rw-r--r-- | src/object.c | 4 |
3 files changed, 11 insertions, 7 deletions
diff --git a/include/mruby.h b/include/mruby.h index 21b96817a..465c944fd 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -1269,7 +1269,9 @@ MRB_API mrb_bool mrb_obj_eq(mrb_state *mrb, mrb_value a, mrb_value b); 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_to_float(mrb_state *mrb, mrb_value val); +MRB_API mrb_value mrb_ensure_float_type(mrb_state *mrb, mrb_value val); +/* obsolete: use mrb_ensure_float_type() instead */ +#define mrb_to_float(mrb, val) mrb_ensure_float_type(mrb, val) #endif MRB_API mrb_value mrb_inspect(mrb_state *mrb, mrb_value obj); MRB_API mrb_bool mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2); @@ -1398,9 +1400,11 @@ MRB_API mrb_value mrb_check_string_type(mrb_state *mrb, mrb_value str); #define mrb_to_str(mrb, str) mrb_ensure_string_type(mrb,str) /* obsolete: use mrb_obj_as_string() instead */ #define mrb_str_to_str(mrb, str) mrb_obj_as_string(mrb, str) -MRB_API mrb_value mrb_to_integer(mrb_state *mrb, mrb_value val); -#define mrb_to_int(mrb, val) mrb_to_integer(mrb, val) -#define mrb_as_int(mrb, val) mrb_integer(mrb_to_integer(mrb, val)) +MRB_API mrb_value mrb_ensure_int_type(mrb_state *mrb, mrb_value val); +#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val)) +/* obsolete: use mrb_ensure_int_type() instead */ +#define mrb_to_integer(mrb, val) mrb_ensure_int_type(mrb, val) +#define mrb_to_int(mrb, val) mrb_ensure_int_type(mrb, val) /* string type checking (contrary to the name, it doesn't convert) */ MRB_API void mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t); diff --git a/src/kernel.c b/src/kernel.c index 5ecebabeb..7a261560f 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -659,7 +659,7 @@ mrb_init_kernel(mrb_state *mrb) mrb_define_method(mrb, krn, "respond_to?", obj_respond_to, MRB_ARGS_ARG(1,1)); /* 15.3.1.3.43 */ mrb_define_method(mrb, krn, "to_s", mrb_any_to_s, MRB_ARGS_NONE()); /* 15.3.1.3.46 */ mrb_define_method(mrb, krn, "__case_eqq", mrb_obj_ceqq, MRB_ARGS_REQ(1)); /* internal */ - mrb_define_method(mrb, krn, "__to_int", mrb_to_integer, MRB_ARGS_NONE()); /* internal */ + mrb_define_method(mrb, krn, "__to_int", mrb_ensure_int_type, MRB_ARGS_NONE()); /* internal */ mrb_define_method(mrb, krn, "__ENCODING__", mrb_encoding, MRB_ARGS_NONE()); mrb_include_module(mrb, mrb->object_class, mrb->kernel_module); diff --git a/src/object.c b/src/object.c index 44af8f745..2b0c4e11f 100644 --- a/src/object.c +++ b/src/object.c @@ -485,7 +485,7 @@ mrb_obj_is_kind_of(mrb_state *mrb, mrb_value obj, struct RClass *c) } MRB_API mrb_value -mrb_to_integer(mrb_state *mrb, mrb_value val) +mrb_ensure_int_type(mrb_state *mrb, mrb_value val) { if (!mrb_integer_p(val)) { #ifndef MRB_NO_FLOAT @@ -500,7 +500,7 @@ mrb_to_integer(mrb_state *mrb, mrb_value val) #ifndef MRB_NO_FLOAT MRB_API mrb_value -mrb_to_float(mrb_state *mrb, mrb_value val) +mrb_ensure_float_type(mrb_state *mrb, mrb_value val) { if (mrb_nil_p(val)) { mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Float"); |
