43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/mruby_tools.rb', line 43
def self.wrapper(rb_files)
c_code = "#include <stdlib.h>\n#include <mruby.h>\n#include <mruby/compile.h>\n#include <mruby/string.h>\n\nvoid check_exc(mrb_state *mrb, char *filename) {\n if (mrb->exc) {\nmrb_value exc = mrb_obj_value(mrb->exc);\nmrb_value exc_msg = mrb_funcall(mrb, exc, \"to_s\", 0);\nfprintf(stderr, \"ERROR in %s - %s: %s\\n\",\n filename,\n mrb_obj_classname(mrb, exc),\n mrb_str_to_cstr(mrb, exc_msg));\n/* mrb_print_backtrace(mrb); # empty */\nexit(1);\n }\n}\n\nint\nmain(void)\n{\n mrb_state *mrb = mrb_open();\n if (!mrb) {\nprintf(\"mrb problem\");\nexit(1);\n }\n"
c_code += rb_files.map { |rbf|
"\n" + self.slurp_rb(rbf) + "\n\n"
}.join
c_code += " mrb_close(mrb);\n return 0;\n}\n"
c_code
end
|