Sha256: dfb712354f065b021efe4d080ba10f9515d14e4de57c30a2fac36382d9c6559f

Contents?: true

Size: 1.32 KB

Versions: 8

Compression:

Stored size: 1.32 KB

Contents

/*
 * driver - driver for loading mruby source code
 */

#include <stdint.h>
#include <stdio.h>

#include "mruby.h"
#include "mruby/compile.h"
#include "mruby/irep.h"

/* The generated mruby bytecodes are stored in this array */
extern const uint8_t app_irep[];

#ifdef HAS_REQUIRE
void mrb_enable_require(mrb_state *mrb);
#endif

/*
 * Print levels:
 * 0 - Do not print anything
 * 1 - Print errors only
 * 2 - Print errors and results
 */
static int check_and_print_errors(mrb_state* mrb, mrb_value result,
                                  int print_level)
{
  if (mrb->exc && (print_level > 0)) {
    mrb_p(mrb, mrb_obj_value(mrb->exc));
    mrb->exc = 0;
    return 1;
  }

  if (print_level > 1) {
    mrb_p(mrb, result);
  }
  return 0;
}

int webruby_internal_run_bytecode(mrb_state* mrb, const uint8_t *bc,
                                  int print_level)
{
  return check_and_print_errors(mrb, mrb_load_irep(mrb, bc), print_level);
}

int webruby_internal_run(mrb_state* mrb, int print_level)
{
  return webruby_internal_run_bytecode(mrb, app_irep, print_level);
}

int webruby_internal_run_source(mrb_state* mrb, const char *s, int print_level)
{
  return check_and_print_errors(mrb, mrb_load_string(mrb, s), print_level);
}

int webruby_internal_setup(mrb_state* mrb)
{
#ifdef HAS_REQUIRE
  mrb_enable_require(mrb);
#endif
  return 0;
}

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
webruby-0.9.3 driver/driver.c
webruby-0.9.2 driver/driver.c
webruby-0.9.1 driver/driver.c
webruby-0.2.7 driver/driver.c
webruby-0.2.5 driver/driver.c
webruby-0.2.4 driver/driver.c
webruby-0.2.2 driver/driver.c
webruby-0.2.1 driver/driver.c