Commit 8682b069 authored by crimsonwoods's avatar crimsonwoods

add new functions to check if symbols are interned without registration.

parent 4faaef43
...@@ -195,6 +195,9 @@ mrb_value mrb_funcall_with_block(mrb_state*, mrb_value, mrb_sym, int, mrb_value* ...@@ -195,6 +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_intern_cstr(mrb_state*,const char*);
mrb_sym mrb_intern2(mrb_state*,const char*,size_t); mrb_sym mrb_intern2(mrb_state*,const char*,size_t);
mrb_sym mrb_intern_str(mrb_state*,mrb_value); 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);
const char *mrb_sym2name(mrb_state*,mrb_sym); const char *mrb_sym2name(mrb_state*,mrb_sym);
const char *mrb_sym2name_len(mrb_state*,mrb_sym,size_t*); const char *mrb_sym2name_len(mrb_state*,mrb_sym,size_t*);
mrb_value mrb_sym2str(mrb_state*,mrb_sym); mrb_value mrb_sym2str(mrb_state*,mrb_sym);
......
...@@ -72,6 +72,30 @@ mrb_intern_str(mrb_state *mrb, mrb_value str) ...@@ -72,6 +72,30 @@ mrb_intern_str(mrb_state *mrb, mrb_value str)
return mrb_intern2(mrb, RSTRING_PTR(str), RSTRING_LEN(str)); return mrb_intern2(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
} }
mrb_bool
mrb_cstr_interned(mrb_state *mrb, const char *name)
{
return mrb_interned(mrb, name, strlen(name));
}
mrb_bool
mrb_interned(mrb_state *mrb, const char *name, size_t len)
{
khash_t(n2s) *h = mrb->name2sym;
symbol_name sname;
sname.len = len;
sname.name = name;
return (kh_get(n2s, h, sname) != kh_end(h)) ? TRUE : FALSE;
}
mrb_bool
mrb_str_interned(mrb_state *mrb, mrb_value str)
{
return mrb_interned(mrb, RSTRING_PTR(str), RSTRING_LEN(str));
}
/* lenp must be a pointer to a size_t variable */ /* lenp must be a pointer to a size_t variable */
const char* const char*
mrb_sym2name_len(mrb_state *mrb, mrb_sym sym, size_t *lenp) mrb_sym2name_len(mrb_state *mrb, mrb_sym sym, size_t *lenp)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment