static int compile_rb2mrb(mrb_state *mrb0, const char *code, int code_len, const char *path, FILE* tmpfp) { mrb_state *mrb = mrb_open(); mrb_value result; mrbc_context *c; int ret = -1; int debuginfo = 1; mrb_irep *irep; c = mrbc_context_new(mrb); c->no_exec = 1; if (path != NULL) { mrbc_filename(mrb, c, path); } result = mrb_load_nstring_cxt(mrb, code, code_len, c); if (mrb_undef_p(result)) { mrbc_context_free(mrb, c); mrb_close(mrb); return MRB_DUMP_GENERAL_FAILURE; } irep = mrb_proc_ptr(result)->body.irep; ret = mrb_dump_irep_binary(mrb, irep, debuginfo, tmpfp); mrbc_context_free(mrb, c); mrb_close(mrb); return ret; }
mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *c) { return mrb_load_nstring_cxt(mrb, s, c); }
mrb_value mrb_load_nstring(mrb_state *mrb, const std::string & s) { return mrb_load_nstring_cxt(mrb, s, NULL); }