summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/class.c4
-rw-r--r--src/symbol.c30
2 files changed, 29 insertions, 5 deletions
diff --git a/src/class.c b/src/class.c
index e8f9b7638..bbf64e8ea 100644
--- a/src/class.c
+++ b/src/class.c
@@ -575,7 +575,7 @@ mrb_vm_define_class(mrb_state *mrb, mrb_value outer, mrb_value super, mrb_sym id
MRB_API mrb_bool
mrb_class_defined(mrb_state *mrb, const char *name)
{
- mrb_sym sym = mrb_check_intern_cstr(mrb, name);
+ mrb_sym sym = mrb_intern_check_cstr(mrb, name);
if (!sym) return FALSE;
return mrb_const_defined(mrb, mrb_obj_value(mrb->object_class), sym);
}
@@ -589,7 +589,7 @@ mrb_class_defined_id(mrb_state *mrb, mrb_sym name)
MRB_API mrb_bool
mrb_class_defined_under(mrb_state *mrb, struct RClass *outer, const char *name)
{
- mrb_sym sym = mrb_check_intern_cstr(mrb, name);
+ mrb_sym sym = mrb_intern_check_cstr(mrb, name);
if (!sym) return FALSE;
return mrb_const_defined_at(mrb, mrb_obj_value(outer), sym);
}
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*