diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-09-21 17:06:18 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-10-12 18:20:26 +0900 |
| commit | 896338e21969284ceb576f1665ea33aa54797493 (patch) | |
| tree | 4227020a582bdadc8141c94c83b8f48cfce181f7 | |
| parent | bff79112a61959902c89757e473ea62346685847 (diff) | |
| download | mruby-896338e21969284ceb576f1665ea33aa54797493.tar.gz mruby-896338e21969284ceb576f1665ea33aa54797493.zip | |
Unify `mrb_str_to_str` to `mrb_obj_as_string`.
Redirect `mrb_str_to_str` to `mrb_obj_as_string` via C macro.
Inspired by #5082
| -rw-r--r-- | include/mruby/string.h | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-print/src/print.c | 4 | ||||
| -rw-r--r-- | src/string.c | 38 |
3 files changed, 20 insertions, 25 deletions
diff --git a/include/mruby/string.h b/include/mruby/string.h index 81b1c0ed1..8384128c7 100644 --- a/include/mruby/string.h +++ b/include/mruby/string.h @@ -377,8 +377,9 @@ MRB_API double mrb_cstr_to_dbl(mrb_state *mrb, const char *s, mrb_bool badcheck) /** * Returns a converted string type. * For type checking, non converting `mrb_to_str` is recommended. + * obsolete: use `mrb_obj_as_string()` instead. */ -MRB_API mrb_value mrb_str_to_str(mrb_state *mrb, mrb_value str); +#define mrb_str_to_str(mrb, str) mrb_obj_as_string(mrb, str) /** * Returns true if the strings match and false if the strings don't match. diff --git a/mrbgems/mruby-print/src/print.c b/mrbgems/mruby-print/src/print.c index 9dfdde346..6e91e1941 100644 --- a/mrbgems/mruby-print/src/print.c +++ b/mrbgems/mruby-print/src/print.c @@ -57,7 +57,7 @@ mrb_print(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "*", &argv, &argc); for (i=0; i<argc; i++) { - mrb_value s = mrb_str_to_str(mrb, argv[i]); + mrb_value s = mrb_obj_as_string(mrb, argv[i]); printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s)); } return mrb_nil_value(); @@ -73,7 +73,7 @@ mrb_puts(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "*", &argv, &argc); for (i=0; i<argc; i++) { - mrb_value s = mrb_str_to_str(mrb, argv[i]); + mrb_value s = mrb_obj_as_string(mrb, argv[i]); mrb_int len = RSTRING_LEN(s); printstr(mrb, RSTRING_PTR(s), len); if (len == 0 || RSTRING_PTR(s)[len-1] != '\n') { diff --git a/src/string.c b/src/string.c index 706995354..f27145296 100644 --- a/src/string.c +++ b/src/string.c @@ -872,7 +872,7 @@ mrb_str_to_cstr(mrb_state *mrb, mrb_value str0) MRB_API void mrb_str_concat(mrb_state *mrb, mrb_value self, mrb_value other) { - other = mrb_str_to_str(mrb, other); + other = mrb_obj_as_string(mrb, other); mrb_str_cat_str(mrb, self, other); } @@ -1085,30 +1085,11 @@ mrb_str_equal_m(mrb_state *mrb, mrb_value str1) } /* ---------------------------------- */ -MRB_API mrb_value -mrb_str_to_str(mrb_state *mrb, mrb_value str) -{ - switch (mrb_type(str)) { - case MRB_TT_STRING: - return str; - case MRB_TT_SYMBOL: - return mrb_sym_str(mrb, mrb_symbol(str)); - case MRB_TT_INTEGER: - return mrb_fixnum_to_str(mrb, str, 10); - case MRB_TT_SCLASS: - case MRB_TT_CLASS: - case MRB_TT_MODULE: - return mrb_mod_to_s(mrb, str); - default: - return mrb_type_convert(mrb, str, MRB_TT_STRING, MRB_SYM(to_s)); - } -} - /* obslete: use RSTRING_PTR() */ MRB_API const char* mrb_string_value_ptr(mrb_state *mrb, mrb_value str) { - str = mrb_str_to_str(mrb, str); + str = mrb_obj_as_string(mrb, str); return RSTRING_PTR(str); } @@ -1937,7 +1918,20 @@ mrb_str_intern(mrb_state *mrb, mrb_value self) MRB_API mrb_value mrb_obj_as_string(mrb_state *mrb, mrb_value obj) { - return mrb_str_to_str(mrb, obj); + switch (mrb_type(obj)) { + case MRB_TT_STRING: + return obj; + case MRB_TT_SYMBOL: + return mrb_sym_str(mrb, mrb_symbol(obj)); + case MRB_TT_INTEGER: + return mrb_fixnum_to_str(mrb, obj, 10); + case MRB_TT_SCLASS: + case MRB_TT_CLASS: + case MRB_TT_MODULE: + return mrb_mod_to_s(mrb, obj); + default: + return mrb_type_convert(mrb, obj, MRB_TT_STRING, MRB_SYM(to_s)); + } } MRB_API mrb_value |
