From e0d6430f63c4cbe0c71ce82ee23284671389a818 Mon Sep 17 00:00:00 2001 From: mimaki Date: Fri, 20 Apr 2012 09:39:03 +0900 Subject: add mruby sources --- src/print.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/print.c (limited to 'src/print.c') diff --git a/src/print.c b/src/print.c new file mode 100644 index 000000000..a3e05b6f0 --- /dev/null +++ b/src/print.c @@ -0,0 +1,69 @@ +#include "mruby.h" +#include "mruby/string.h" +#include + +mrb_value +printstr(mrb_state *mrb, mrb_value obj) +{ + struct RString *str; + char *s; + size_t len; + + if (mrb_type(obj) == MRB_TT_STRING) { + str = mrb_str_ptr(obj); + s = str->buf; + len = str->len; + while (len--) { + putc(*s, stdout); + s++; + } + } + return obj; +} + +mrb_value +mrb_p(mrb_state *mrb, mrb_value obj) +{ + obj = mrb_funcall(mrb, obj, "inspect", 0); + printstr(mrb, obj); + putc('\n', stdout); + return obj; +} + +/* 15.3.1.2.9 */ +/* 15.3.1.3.34 */ +static mrb_value +p_m(mrb_state *mrb, mrb_value self) +{ + int argc, i; + mrb_value *argv; + + mrb_get_args(mrb, "*", &argv, &argc); + for (i=0; ikernel_module; + + mrb_define_method(mrb, krn, "__printstr__", mrb_printstr, ARGS_REQ(1)); + mrb_define_method(mrb, krn, "p", p_m, ARGS_ANY()); /* 15.3.1.3.34 */ +} -- cgit v1.2.3