@@ -15,11 +15,9 @@
|
15 | 15 | #endif |
16 | 16 | #endif |
17 | 17 | |
18 | | -static mrb_value |
19 | | -mrb_printstr(mrb_state *mrb, mrb_value self) |
| 18 | +static void |
| 19 | +printstr(mrb_state *mrb, mrb_value s) |
20 | 20 | { |
21 | | -mrb_value s = mrb_get_arg1(mrb); |
22 | | - |
23 | 21 | if (mrb_string_p(s)) { |
24 | 22 | const char *p = RSTRING_PTR(s); |
25 | 23 | mrb_int len = RSTRING_LEN(s); |
@@ -35,21 +33,33 @@ mrb_printstr(mrb_state *mrb, mrb_value self)
|
35 | 33 | utf16, (DWORD)wlen, &written, NULL); |
36 | 34 | } |
37 | 35 | mrb_free(mrb, utf16); |
| 36 | +return; |
38 | 37 | } |
39 | | -else |
40 | 38 | #endif |
41 | | - { |
42 | | -fwrite(p, (size_t)len, 1, stdout); |
43 | | - } |
| 39 | +fwrite(p, (size_t)len, 1, stdout); |
44 | 40 | fflush(stdout); |
45 | 41 | } |
| 42 | +} |
| 43 | + |
| 44 | +// ISO 15.3.1.2.10 Kernel.print |
| 45 | +// ISO 15.3.1.3.35 Kernel#print |
| 46 | +static mrb_value |
| 47 | +mrb_print(mrb_state *mrb, mrb_value self) |
| 48 | +{ |
| 49 | +mrb_int argc = mrb_get_argc(mrb); |
| 50 | +const mrb_value *argv = mrb_get_argv(mrb); |
| 51 | + |
| 52 | +for (mrb_int i=0; i<argc; i++) { |
| 53 | +mrb_value str = mrb_obj_as_string(mrb, argv[i]); |
| 54 | +printstr(mrb, str); |
| 55 | + } |
46 | 56 | return mrb_nil_value(); |
47 | 57 | } |
48 | 58 | |
49 | 59 | void |
50 | 60 | mrb_mruby_print_gem_init(mrb_state* mrb) |
51 | 61 | { |
52 | | -mrb_define_method(mrb, mrb->kernel_module, "__printstr", mrb_printstr, MRB_ARGS_REQ(1)); |
| 62 | +mrb_define_method(mrb, mrb->kernel_module, "print", mrb_print, MRB_ARGS_ANY()); /* 15.3.1.3.35 */ |
53 | 63 | } |
54 | 64 | |
55 | 65 | void |
|