1515#endif
1616#endif
1717
18- static mrb_value
19- mrb_printstr (mrb_state * mrb , mrb_value self )
18+ static void
19+ printstr (mrb_state * mrb , mrb_value s )
2020{
21- mrb_value s = mrb_get_arg1 (mrb );
22-
2321 if (mrb_string_p (s )) {
2422 const char * p = RSTRING_PTR (s );
2523 mrb_int len = RSTRING_LEN (s );
@@ -35,21 +33,33 @@ mrb_printstr(mrb_state *mrb, mrb_value self)
3533 utf16 , (DWORD )wlen , & written , NULL );
3634 }
3735 mrb_free (mrb , utf16 );
36+ return ;
3837 }
39- else
4038#endif
41- {
42- fwrite (p , (size_t )len , 1 , stdout );
43- }
39+ fwrite (p , (size_t )len , 1 , stdout );
4440 fflush (stdout );
4541 }
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+ }
4656 return mrb_nil_value ();
4757}
4858
4959void
5060mrb_mruby_print_gem_init (mrb_state * mrb )
5161{
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 */
5363}
5464
5565void
0 commit comments