diff options
Diffstat (limited to 'src/symbol.c')
| -rw-r--r-- | src/symbol.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/symbol.c b/src/symbol.c index 9683d2f72..18ea49da5 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -268,7 +268,7 @@ mrb_intern_str(mrb_state *mrb, mrb_value str) } MRB_API mrb_sym -mrb_check_intern(mrb_state *mrb, const char *name, size_t len) +mrb_intern_check(mrb_state *mrb, const char *name, size_t len) { mrb_sym sym; @@ -278,16 +278,40 @@ mrb_check_intern(mrb_state *mrb, const char *name, size_t len) return 0; } +MRB_API mrb_value +mrb_check_intern(mrb_state *mrb, const char *name, size_t len) +{ + mrb_sym sym = mrb_intern_check(mrb, name, len); + if (sym == 0) return mrb_nil_value(); + return mrb_symbol_value(sym); +} + MRB_API mrb_sym +mrb_intern_check_cstr(mrb_state *mrb, const char *name) +{ + return mrb_intern_check(mrb, name, strlen(name)); +} + +MRB_API mrb_value mrb_check_intern_cstr(mrb_state *mrb, const char *name) { - return mrb_check_intern(mrb, name, strlen(name)); + mrb_sym sym = mrb_intern_check_cstr(mrb, name); + if (sym == 0) return mrb_nil_value(); + return mrb_symbol_value(sym); } MRB_API mrb_sym +mrb_intern_check_str(mrb_state *mrb, mrb_value str) +{ + return mrb_intern_check(mrb, RSTRING_PTR(str), RSTRING_LEN(str)); +} + +MRB_API mrb_value mrb_check_intern_str(mrb_state *mrb, mrb_value str) { - return mrb_check_intern(mrb, RSTRING_PTR(str), RSTRING_LEN(str)); + mrb_sym sym = mrb_intern_check_str(mrb, str); + if (sym == 0) return mrb_nil_value(); + return mrb_symbol_value(sym); } static const char* |
