1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
/*
** init.c - initialize mruby core
**
** See Copyright Notice in mruby.h
*/
#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);
void mrb_init_math(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);
mrb_init_time(mrb);
mrb_init_math(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);
}
|