diff options
Diffstat (limited to 'mrbgems/mruby-test/driver.c')
| -rw-r--r-- | mrbgems/mruby-test/driver.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/mrbgems/mruby-test/driver.c b/mrbgems/mruby-test/driver.c index 6b91b7457..fd180b1bb 100644 --- a/mrbgems/mruby-test/driver.c +++ b/mrbgems/mruby-test/driver.c @@ -45,29 +45,21 @@ eval_test(mrb_state *mrb) } } -static void -t_printstr(mrb_state *mrb, mrb_value obj) -{ - char *s; - mrb_int len; - - if (mrb_string_p(obj)) { - s = RSTRING_PTR(obj); - len = RSTRING_LEN(obj); - fwrite(s, len, 1, stdout); - fflush(stdout); - } -} - -mrb_value -mrb_t_printstr(mrb_state *mrb, mrb_value self) +/* Implementation of print due to the reason that there might be no print */ +static mrb_value +t_print(mrb_state *mrb, mrb_value self) { - mrb_value argv; + mrb_value *argv; + mrb_int argc; - mrb_get_args(mrb, "o", &argv); - t_printstr(mrb, argv); + mrb_get_args(mrb, "*!", &argv, &argc); + for (mrb_int i = 0; i < argc; ++i) { + mrb_value s = mrb_obj_as_string(mrb, argv[i]); + fwrite(RSTRING_PTR(s), RSTRING_LEN(s), 1, stdout); + } + fflush(stdout); - return argv; + return mrb_nil_value(); } void @@ -76,7 +68,7 @@ mrb_init_test_driver(mrb_state *mrb, mrb_bool verbose) struct RClass *krn, *mrbtest; krn = mrb->kernel_module; - mrb_define_method(mrb, krn, "__t_printstr__", mrb_t_printstr, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, krn, "t_print", t_print, MRB_ARGS_ANY()); mrbtest = mrb_define_module(mrb, "Mrbtest"); |
