From e0d6430f63c4cbe0c71ce82ee23284671389a818 Mon Sep 17 00:00:00 2001 From: mimaki Date: Fri, 20 Apr 2012 09:39:03 +0900 Subject: add mruby sources --- src/init.c | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/init.c (limited to 'src/init.c') diff --git a/src/init.c b/src/init.c new file mode 100644 index 000000000..ce039ce30 --- /dev/null +++ b/src/init.c @@ -0,0 +1,105 @@ +#include "mruby.h" + +void mrb_init_class(mrb_state*); +void mrb_init_symtbl(mrb_state*); +void mrb_init_symbols(mrb_state*); +void mrb_init_object(mrb_state*); +void mrb_init_kernel(mrb_state*); +void mrb_init_enumerable(mrb_state*); +void mrb_init_comparable(mrb_state*); +void mrb_init_array(mrb_state*); +void mrb_init_hash(mrb_state*); +void mrb_init_numeric(mrb_state*); +void mrb_init_proc(mrb_state*); +void mrb_init_range(mrb_state*); +void mrb_init_string(mrb_state*); +void mrb_init_regexp(mrb_state*); +void mrb_init_encoding(mrb_state*); +void mrb_init_exception(mrb_state*); +void mrb_init_time(mrb_state *); +void mrb_init_io(mrb_state *); +void mrb_init_file(mrb_state *); +void mrb_init_thread(mrb_state *); +void mrb_init_struct(mrb_state *); +void mrb_init_gc(mrb_state *); +void Init_var_tables(mrb_state *mrb); +void Init_version(mrb_state *mrb); +void mrb_init_print(mrb_state *mrb); +void mrb_init_mrblib(mrb_state *mrb); + +#define MANDEL +#ifdef MANDEL +#include +#include +static mrb_value +mpow(mrb_state *mrb, mrb_value obj) +{ + mrb_float x, y; + + mrb_get_args(mrb, "ff", &x, &y); + x = pow(x, y); + + return mrb_float_value(x); +} + +static mrb_value +msqrt(mrb_state *mrb, mrb_value obj) +{ + mrb_float x; + + mrb_get_args(mrb, "f", &x); + x = sqrt(x); + + return mrb_float_value(x); +} + +static mrb_value +mputc(mrb_state *mrb, mrb_value obj) +{ + int x; + + mrb_get_args(mrb, "i", &x); + putc(x, stdout); + + return mrb_nil_value(); +} +#endif + +void +mrb_init_core(mrb_state *mrb) +{ + mrb_init_symtbl(mrb); + + mrb_init_class(mrb); + mrb_init_object(mrb); + mrb_init_kernel(mrb); + mrb_init_comparable(mrb); + mrb_init_enumerable(mrb); + + mrb_init_symbols(mrb); + mrb_init_proc(mrb); + mrb_init_string(mrb); + Init_version(mrb); /* after init_string */ + mrb_init_array(mrb); + mrb_init_hash(mrb); + mrb_init_numeric(mrb); + mrb_init_range(mrb); + mrb_init_struct(mrb); + mrb_init_gc(mrb); +#ifdef INCLUDE_REGEXP + mrb_init_regexp(mrb); + mrb_init_encoding(mrb); +#endif + mrb_init_exception(mrb); + mrb_init_print(mrb); + +#ifdef MANDEL + mrb_define_method(mrb, mrb->kernel_module, "pow", mpow, ARGS_REQ(2)); + mrb_define_method(mrb, mrb->kernel_module, "sqrt", msqrt, ARGS_REQ(1)); + mrb_define_method(mrb, mrb->kernel_module, "putc", mputc, ARGS_REQ(1)); +#endif + + mrb_init_mrblib(mrb); + + mrb_gc_arena_restore(mrb, 0); +} -- cgit v1.2.3