mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

mbed-mruby

How to use

Class

Committer:
mzta
Date:
Mon Apr 13 05:20:15 2015 +0000
Revision:
1:8ccd1d494a4b
Parent:
0:158c61bb030f
- code refactoring.; - add SPI, SPISlave, I2C class to mruby-mbed (Incomplete).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mzta 0:158c61bb030f 1 /*
mzta 0:158c61bb030f 2 ** print.c - Kernel.#p
mzta 0:158c61bb030f 3 **
mzta 0:158c61bb030f 4 ** See Copyright Notice in mruby.h
mzta 0:158c61bb030f 5 */
mzta 0:158c61bb030f 6
mzta 0:158c61bb030f 7 #include "mruby.h"
mzta 0:158c61bb030f 8 #include "mruby/string.h"
mzta 0:158c61bb030f 9 #include "mruby/variable.h"
mzta 0:158c61bb030f 10
mzta 0:158c61bb030f 11 static void
mzta 0:158c61bb030f 12 printstr(mrb_state *mrb, mrb_value obj)
mzta 0:158c61bb030f 13 {
mzta 0:158c61bb030f 14 #ifdef ENABLE_STDIO
mzta 0:158c61bb030f 15 char *s;
mzta 0:158c61bb030f 16 int len;
mzta 0:158c61bb030f 17
mzta 0:158c61bb030f 18 if (mrb_string_p(obj)) {
mzta 0:158c61bb030f 19 s = RSTRING_PTR(obj);
mzta 0:158c61bb030f 20 len = RSTRING_LEN(obj);
mzta 0:158c61bb030f 21 fwrite(s, len, 1, stdout);
mzta 0:158c61bb030f 22 }
mzta 0:158c61bb030f 23 #endif
mzta 0:158c61bb030f 24 }
mzta 0:158c61bb030f 25
mzta 0:158c61bb030f 26 MRB_API void
mzta 0:158c61bb030f 27 mrb_p(mrb_state *mrb, mrb_value obj)
mzta 0:158c61bb030f 28 {
mzta 0:158c61bb030f 29 #ifdef ENABLE_STDIO
mzta 0:158c61bb030f 30 obj = mrb_funcall(mrb, obj, "inspect", 0);
mzta 0:158c61bb030f 31 printstr(mrb, obj);
mzta 0:158c61bb030f 32 putc('\n', stdout);
mzta 0:158c61bb030f 33 #endif
mzta 0:158c61bb030f 34 }
mzta 0:158c61bb030f 35
mzta 0:158c61bb030f 36 MRB_API void
mzta 0:158c61bb030f 37 mrb_print_error(mrb_state *mrb)
mzta 0:158c61bb030f 38 {
mzta 0:158c61bb030f 39 #ifdef ENABLE_STDIO
mzta 0:158c61bb030f 40 mrb_value s;
mzta 0:158c61bb030f 41
mzta 0:158c61bb030f 42 mrb_print_backtrace(mrb);
mzta 0:158c61bb030f 43 s = mrb_funcall(mrb, mrb_obj_value(mrb->exc), "inspect", 0);
mzta 0:158c61bb030f 44 if (mrb_string_p(s)) {
mzta 0:158c61bb030f 45 fwrite(RSTRING_PTR(s), RSTRING_LEN(s), 1, stderr);
mzta 0:158c61bb030f 46 putc('\n', stderr);
mzta 0:158c61bb030f 47 }
mzta 0:158c61bb030f 48 #endif
mzta 0:158c61bb030f 49 }
mzta 0:158c61bb030f 50
mzta 0:158c61bb030f 51 MRB_API void
mzta 0:158c61bb030f 52 mrb_show_version(mrb_state *mrb)
mzta 0:158c61bb030f 53 {
mzta 0:158c61bb030f 54 mrb_value msg;
mzta 0:158c61bb030f 55
mzta 0:158c61bb030f 56 msg = mrb_const_get(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_DESCRIPTION"));
mzta 0:158c61bb030f 57 printstr(mrb, msg);
mzta 0:158c61bb030f 58 printstr(mrb, mrb_str_new_lit(mrb, "\n"));
mzta 0:158c61bb030f 59 }
mzta 0:158c61bb030f 60
mzta 0:158c61bb030f 61 MRB_API void
mzta 0:158c61bb030f 62 mrb_show_copyright(mrb_state *mrb)
mzta 0:158c61bb030f 63 {
mzta 0:158c61bb030f 64 mrb_value msg;
mzta 0:158c61bb030f 65
mzta 0:158c61bb030f 66 msg = mrb_const_get(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_COPYRIGHT"));
mzta 0:158c61bb030f 67 printstr(mrb, msg);
mzta 0:158c61bb030f 68 printstr(mrb, mrb_str_new_lit(mrb, "\n"));
mzta 0:158c61bb030f 69 }
mzta 0:158c61bb030f 70