diff options
| author | mimaki <[email protected]> | 2012-04-20 09:39:03 +0900 |
|---|---|---|
| committer | mimaki <[email protected]> | 2012-04-20 09:39:03 +0900 |
| commit | e0d6430f63c4cbe0c71ce82ee23284671389a818 (patch) | |
| tree | 41abad7f12eced98d9ac14d141cea62464c3332f /src/init.c | |
| parent | 54ad561098ed353ada70205c39b2c42a2a2eb9e5 (diff) | |
| download | mruby-e0d6430f63c4cbe0c71ce82ee23284671389a818.tar.gz mruby-e0d6430f63c4cbe0c71ce82ee23284671389a818.zip | |
add mruby sources
Diffstat (limited to 'src/init.c')
| -rw-r--r-- | src/init.c | 105 |
1 files changed, 105 insertions, 0 deletions
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 <stdio.h> +#include <math.h> +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); +} |
