예제 #1
0
파일: symbol.c 프로젝트: Hozum/mruby
mrb_value
mrb_sym2str(mrb_state *mrb, mrb_sym sym)
{
  size_t len;
  const char *name = mrb_sym2name_len(mrb, sym, &len);

  if (!name) return mrb_undef_value(); /* can't happen */
  if (symname_p(name) && strlen(name) == len) {
    return mrb_str_new(mrb, name, len);
  }
  else {
    return mrb_str_dump(mrb, mrb_str_new(mrb, name, len));
  }
}
예제 #2
0
파일: symbol.c 프로젝트: retrage/mruby
MRB_API const char*
mrb_sym2name(mrb_state *mrb, mrb_sym sym)
{
  mrb_int len;
  const char *name = mrb_sym2name_len(mrb, sym, &len);

  if (!name) return NULL;
  if (symname_p(name) && strlen(name) == (size_t)len) {
    return name;
  }
  else {
    mrb_value str = mrb_str_dump(mrb, mrb_str_new_static(mrb, name, len));
    return RSTRING_PTR(str);
  }
}
예제 #3
0
파일: symbol.c 프로젝트: Hozum/mruby
const char*
mrb_sym2name(mrb_state *mrb, mrb_sym sym)
{
  size_t len;
  const char *name = mrb_sym2name_len(mrb, sym, &len);

  if (!name) return NULL;
  if (symname_p(name) && strlen(name) == len) {
    return name;
  }
  else {
    mrb_value str = mrb_str_dump(mrb, mrb_str_new(mrb, name, len));
    return RSTRING(str)->ptr;
  }
}
예제 #4
0
파일: symbol.c 프로젝트: Hozum/mruby
static mrb_value
sym_inspect(mrb_state *mrb, mrb_value sym)
{
  mrb_value str;
  const char *name;
  size_t len;
  mrb_sym id = mrb_symbol(sym);

  name = mrb_sym2name_len(mrb, id, &len);
  str = mrb_str_new(mrb, 0, len+1);
  RSTRING(str)->ptr[0] = ':';
  memcpy(RSTRING(str)->ptr+1, name, len);
  if (!symname_p(name) || strlen(name) != len) {
    str = mrb_str_dump(mrb, str);
    memcpy(RSTRING(str)->ptr, ":\"", 2);
  }
  return str;
}
예제 #5
0
파일: symbol.c 프로젝트: retrage/mruby
static mrb_value
sym_inspect(mrb_state *mrb, mrb_value sym)
{
  mrb_value str;
  const char *name;
  mrb_int len;
  mrb_sym id = mrb_symbol(sym);
  char *sp;

  name = mrb_sym2name_len(mrb, id, &len);
  str = mrb_str_new(mrb, 0, len+1);
  sp = RSTRING_PTR(str);
  RSTRING_PTR(str)[0] = ':';
  memcpy(sp+1, name, len);
  mrb_assert_int_fit(mrb_int, len, size_t, SIZE_MAX);
  if (!symname_p(name) || strlen(name) != (size_t)len) {
    str = mrb_str_dump(mrb, str);
    sp = RSTRING_PTR(str);
    sp[0] = ':';
    sp[1] = '"';
  }
  return str;
}