Add new API mrb_ptr_as_string().

This commit is contained in:
Masaki Muranaka
2013-03-23 19:33:25 +09:00
parent 00c45e71c0
commit bbb367841a
2 changed files with 31 additions and 0 deletions
+30
View File
@@ -1534,6 +1534,36 @@ mrb_obj_as_string(mrb_state *mrb, mrb_value obj)
return str;
}
mrb_value
mrb_ptr_as_string(mrb_state *mrb, void *p)
{
struct RString *p_str;
char *p1;
char *p2;
intptr_t n = (intptr_t)p;
p_str = str_new(mrb, NULL, 2 + sizeof(uintptr_t) * CHAR_BIT / 4);
p1 = p_str->ptr;
*p1++ = '0';
*p1++ = 'x';
p2 = p1;
do {
*p2++ = mrb_digitmap[n % 16];
n /= 16;
} while (n > 0);
*p2 = '\0';
p_str->len = (mrb_int)(p2 - p_str->ptr);
while (p1 < p2) {
const char c = *p1;
*p1++ = *--p2;
*p2 = c;
}
return mrb_obj_value(p_str);
}
mrb_value
mrb_check_string_type(mrb_state *mrb, mrb_value str)
{