mbed I/F binding for mruby
Dependents: mruby_mbed_web mirb_mbed
print.c
00001 /* 00002 ** print.c - Kernel.#p 00003 ** 00004 ** See Copyright Notice in mruby.h 00005 */ 00006 00007 #include "mruby.h" 00008 #include "mruby/string.h" 00009 #include "mruby/variable.h" 00010 00011 static void 00012 printstr(mrb_state *mrb, mrb_value obj) 00013 { 00014 #ifdef ENABLE_STDIO 00015 char *s; 00016 int len; 00017 00018 if (mrb_string_p(obj)) { 00019 s = RSTRING_PTR(obj); 00020 len = RSTRING_LEN(obj); 00021 fwrite(s, len, 1, stdout); 00022 } 00023 #endif 00024 } 00025 00026 MRB_API void 00027 mrb_p(mrb_state *mrb, mrb_value obj) 00028 { 00029 #ifdef ENABLE_STDIO 00030 obj = mrb_funcall(mrb, obj, "inspect", 0); 00031 printstr(mrb, obj); 00032 putc('\n', stdout); 00033 #endif 00034 } 00035 00036 MRB_API void 00037 mrb_print_error(mrb_state *mrb) 00038 { 00039 #ifdef ENABLE_STDIO 00040 mrb_value s; 00041 00042 mrb_print_backtrace(mrb); 00043 s = mrb_funcall(mrb, mrb_obj_value(mrb->exc), "inspect", 0); 00044 if (mrb_string_p(s)) { 00045 fwrite(RSTRING_PTR(s), RSTRING_LEN(s), 1, stderr); 00046 putc('\n', stderr); 00047 } 00048 #endif 00049 } 00050 00051 MRB_API void 00052 mrb_show_version(mrb_state *mrb) 00053 { 00054 mrb_value msg; 00055 00056 msg = mrb_const_get(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_DESCRIPTION")); 00057 printstr(mrb, msg); 00058 printstr(mrb, mrb_str_new_lit(mrb, "\n")); 00059 } 00060 00061 MRB_API void 00062 mrb_show_copyright(mrb_state *mrb) 00063 { 00064 mrb_value msg; 00065 00066 msg = mrb_const_get(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_COPYRIGHT")); 00067 printstr(mrb, msg); 00068 printstr(mrb, mrb_str_new_lit(mrb, "\n")); 00069 } 00070
Generated on Tue Jul 12 2022 18:00:35 by 1.7.2