summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorcrimsonwoods <[email protected]>2013-04-25 09:51:20 +0900
committercrimsonwoods <[email protected]>2013-04-25 09:51:20 +0900
commitbd1b925931b2456cf19ee7296de554f518326c4e (patch)
tree001cb1f6f6f7324520616200ce575d608a479ab3
parent8682b06953e580d301bfc7b3b28fd03054e0875d (diff)
downloadmruby-bd1b925931b2456cf19ee7296de554f518326c4e.tar.gz
mruby-bd1b925931b2456cf19ee7296de554f518326c4e.zip
modify the type of return value (mrb_bool => mrb_value).
-rw-r--r--include/mruby.h6
-rw-r--r--src/symbol.c13
2 files changed, 12 insertions, 7 deletions
diff --git a/include/mruby.h b/include/mruby.h
index e249a0455..0d948b7a0 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -195,9 +195,9 @@ mrb_value mrb_funcall_with_block(mrb_state*, mrb_value, mrb_sym, int, mrb_value*
mrb_sym mrb_intern_cstr(mrb_state*,const char*);
mrb_sym mrb_intern2(mrb_state*,const char*,size_t);
mrb_sym mrb_intern_str(mrb_state*,mrb_value);
-mrb_bool mrb_cstr_interned(mrb_state*,const char*);
-mrb_bool mrb_interned(mrb_state*,const char*,size_t);
-mrb_bool mrb_str_interned(mrb_state*,mrb_value);
+mrb_value mrb_cstr_interned(mrb_state*,const char*);
+mrb_value mrb_interned(mrb_state*,const char*,size_t);
+mrb_value mrb_str_interned(mrb_state*,mrb_value);
const char *mrb_sym2name(mrb_state*,mrb_sym);
const char *mrb_sym2name_len(mrb_state*,mrb_sym,size_t*);
mrb_value mrb_sym2str(mrb_state*,mrb_sym);
diff --git a/src/symbol.c b/src/symbol.c
index 3d841a636..f1dff6a8d 100644
--- a/src/symbol.c
+++ b/src/symbol.c
@@ -72,25 +72,30 @@ mrb_intern_str(mrb_state *mrb, mrb_value str)
return mrb_intern2(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
}
-mrb_bool
+mrb_value
mrb_cstr_interned(mrb_state *mrb, const char *name)
{
return mrb_interned(mrb, name, strlen(name));
}
-mrb_bool
+mrb_value
mrb_interned(mrb_state *mrb, const char *name, size_t len)
{
khash_t(n2s) *h = mrb->name2sym;
symbol_name sname;
+ khiter_t k;
sname.len = len;
sname.name = name;
- return (kh_get(n2s, h, sname) != kh_end(h)) ? TRUE : FALSE;
+ k = kh_get(n2s, h, sname);
+ if (k != kh_end(h)) {
+ return mrb_symbol_value(kh_value(h, k));
+ }
+ return mrb_nil_value();
}
-mrb_bool
+mrb_value
mrb_str_interned(mrb_state *mrb, mrb_value str)
{
return mrb_interned(mrb, RSTRING_PTR(str), RSTRING_LEN(str));