wasm 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/assets/mruby/include/mrbconf.h +143 -0
- data/assets/mruby/include/mruby.h +1284 -0
- data/assets/mruby/include/mruby/array.h +279 -0
- data/assets/mruby/include/mruby/boxing_nan.h +102 -0
- data/assets/mruby/include/mruby/boxing_no.h +56 -0
- data/assets/mruby/include/mruby/boxing_word.h +136 -0
- data/assets/mruby/include/mruby/class.h +94 -0
- data/assets/mruby/include/mruby/common.h +72 -0
- data/assets/mruby/include/mruby/compile.h +194 -0
- data/assets/mruby/include/mruby/data.h +75 -0
- data/assets/mruby/include/mruby/debug.h +66 -0
- data/assets/mruby/include/mruby/dump.h +196 -0
- data/assets/mruby/include/mruby/error.h +75 -0
- data/assets/mruby/include/mruby/gc.h +91 -0
- data/assets/mruby/include/mruby/hash.h +182 -0
- data/assets/mruby/include/mruby/irep.h +62 -0
- data/assets/mruby/include/mruby/istruct.h +47 -0
- data/assets/mruby/include/mruby/khash.h +274 -0
- data/assets/mruby/include/mruby/numeric.h +161 -0
- data/assets/mruby/include/mruby/object.h +45 -0
- data/assets/mruby/include/mruby/opcode.h +161 -0
- data/assets/mruby/include/mruby/proc.h +131 -0
- data/assets/mruby/include/mruby/range.h +49 -0
- data/assets/mruby/include/mruby/re.h +16 -0
- data/assets/mruby/include/mruby/string.h +440 -0
- data/assets/mruby/include/mruby/throw.h +55 -0
- data/assets/mruby/include/mruby/value.h +309 -0
- data/assets/mruby/include/mruby/variable.h +138 -0
- data/assets/mruby/include/mruby/version.h +110 -0
- data/assets/mruby/libmruby.a +0 -0
- data/assets/mruby_init.c +16 -0
- data/assets/template.html +17 -0
- data/bin/ruby-wasm +150 -0
- data/build_config.rb +13 -0
- data/lib/wasm.rb +0 -5
- data/lib/wasm/version.rb +4 -2
- metadata +46 -65
- data/.gitignore +0 -9
- data/.travis.yml +0 -5
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -21
- data/README.md +0 -40
- data/Rakefile +0 -10
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/wasm.gemspec +0 -26
@@ -0,0 +1,55 @@
|
|
1
|
+
/*
|
2
|
+
** mruby/throw.h - mruby exception throwing handler
|
3
|
+
**
|
4
|
+
** See Copyright Notice in mruby.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef MRB_THROW_H
|
8
|
+
#define MRB_THROW_H
|
9
|
+
|
10
|
+
#if defined(MRB_ENABLE_CXX_ABI)
|
11
|
+
# if !defined(__cplusplus)
|
12
|
+
# error Trying to use C++ exception handling in C code
|
13
|
+
# endif
|
14
|
+
#endif
|
15
|
+
|
16
|
+
#if defined(MRB_ENABLE_CXX_EXCEPTION) && defined(__cplusplus)
|
17
|
+
|
18
|
+
#define MRB_TRY(buf) do { try {
|
19
|
+
#define MRB_CATCH(buf) } catch(mrb_jmpbuf_impl e) { if (e != (buf)->impl) { throw e; }
|
20
|
+
#define MRB_END_EXC(buf) } } while(0)
|
21
|
+
|
22
|
+
#define MRB_THROW(buf) throw((buf)->impl)
|
23
|
+
typedef mrb_int mrb_jmpbuf_impl;
|
24
|
+
|
25
|
+
#else
|
26
|
+
|
27
|
+
#include <setjmp.h>
|
28
|
+
|
29
|
+
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
30
|
+
#define MRB_SETJMP _setjmp
|
31
|
+
#define MRB_LONGJMP _longjmp
|
32
|
+
#else
|
33
|
+
#define MRB_SETJMP setjmp
|
34
|
+
#define MRB_LONGJMP longjmp
|
35
|
+
#endif
|
36
|
+
|
37
|
+
#define MRB_TRY(buf) do { if (MRB_SETJMP((buf)->impl) == 0) {
|
38
|
+
#define MRB_CATCH(buf) } else {
|
39
|
+
#define MRB_END_EXC(buf) } } while(0)
|
40
|
+
|
41
|
+
#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
|
42
|
+
#define mrb_jmpbuf_impl jmp_buf
|
43
|
+
|
44
|
+
#endif
|
45
|
+
|
46
|
+
struct mrb_jmpbuf {
|
47
|
+
mrb_jmpbuf_impl impl;
|
48
|
+
|
49
|
+
#if defined(MRB_ENABLE_CXX_EXCEPTION) && defined(__cplusplus)
|
50
|
+
static mrb_int jmpbuf_id;
|
51
|
+
mrb_jmpbuf() : impl(jmpbuf_id++) {}
|
52
|
+
#endif
|
53
|
+
};
|
54
|
+
|
55
|
+
#endif /* MRB_THROW_H */
|
@@ -0,0 +1,309 @@
|
|
1
|
+
/*
|
2
|
+
** mruby/value.h - mruby value definitions
|
3
|
+
**
|
4
|
+
** See Copyright Notice in mruby.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef MRUBY_VALUE_H
|
8
|
+
#define MRUBY_VALUE_H
|
9
|
+
|
10
|
+
#include "common.h"
|
11
|
+
|
12
|
+
/**
|
13
|
+
* MRuby Value definition functions and macros.
|
14
|
+
*/
|
15
|
+
MRB_BEGIN_DECL
|
16
|
+
|
17
|
+
typedef uint32_t mrb_sym;
|
18
|
+
typedef uint8_t mrb_bool;
|
19
|
+
struct mrb_state;
|
20
|
+
|
21
|
+
#if defined(MRB_INT16) && defined(MRB_INT64)
|
22
|
+
# error "You can't define MRB_INT16 and MRB_INT64 at the same time."
|
23
|
+
#endif
|
24
|
+
|
25
|
+
#if defined _MSC_VER && _MSC_VER < 1800
|
26
|
+
# define PRIo64 "llo"
|
27
|
+
# define PRId64 "lld"
|
28
|
+
# define PRIx64 "llx"
|
29
|
+
# define PRIo16 "ho"
|
30
|
+
# define PRId16 "hd"
|
31
|
+
# define PRIx16 "hx"
|
32
|
+
# define PRIo32 "o"
|
33
|
+
# define PRId32 "d"
|
34
|
+
# define PRIx32 "x"
|
35
|
+
#else
|
36
|
+
# include <inttypes.h>
|
37
|
+
#endif
|
38
|
+
|
39
|
+
#if defined(MRB_INT64)
|
40
|
+
typedef int64_t mrb_int;
|
41
|
+
# define MRB_INT_BIT 64
|
42
|
+
# define MRB_INT_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT)
|
43
|
+
# define MRB_INT_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT)
|
44
|
+
# define MRB_PRIo PRIo64
|
45
|
+
# define MRB_PRId PRId64
|
46
|
+
# define MRB_PRIx PRIx64
|
47
|
+
#elif defined(MRB_INT16)
|
48
|
+
typedef int16_t mrb_int;
|
49
|
+
# define MRB_INT_BIT 16
|
50
|
+
# define MRB_INT_MIN (INT16_MIN>>MRB_FIXNUM_SHIFT)
|
51
|
+
# define MRB_INT_MAX (INT16_MAX>>MRB_FIXNUM_SHIFT)
|
52
|
+
# define MRB_PRIo PRIo16
|
53
|
+
# define MRB_PRId PRId16
|
54
|
+
# define MRB_PRIx PRIx16
|
55
|
+
#else
|
56
|
+
typedef int32_t mrb_int;
|
57
|
+
# define MRB_INT_BIT 32
|
58
|
+
# define MRB_INT_MIN (INT32_MIN>>MRB_FIXNUM_SHIFT)
|
59
|
+
# define MRB_INT_MAX (INT32_MAX>>MRB_FIXNUM_SHIFT)
|
60
|
+
# define MRB_PRIo PRIo32
|
61
|
+
# define MRB_PRId PRId32
|
62
|
+
# define MRB_PRIx PRIx32
|
63
|
+
#endif
|
64
|
+
|
65
|
+
|
66
|
+
#ifndef MRB_WITHOUT_FLOAT
|
67
|
+
MRB_API double mrb_float_read(const char*, char**);
|
68
|
+
#ifdef MRB_USE_FLOAT
|
69
|
+
typedef float mrb_float;
|
70
|
+
#else
|
71
|
+
typedef double mrb_float;
|
72
|
+
#endif
|
73
|
+
#endif
|
74
|
+
|
75
|
+
#if defined _MSC_VER && _MSC_VER < 1900
|
76
|
+
# ifndef __cplusplus
|
77
|
+
# define inline __inline
|
78
|
+
# endif
|
79
|
+
# include <stdarg.h>
|
80
|
+
MRB_API int mrb_msvc_vsnprintf(char *s, size_t n, const char *format, va_list arg);
|
81
|
+
MRB_API int mrb_msvc_snprintf(char *s, size_t n, const char *format, ...);
|
82
|
+
# define vsnprintf(s, n, format, arg) mrb_msvc_vsnprintf(s, n, format, arg)
|
83
|
+
# define snprintf(s, n, format, ...) mrb_msvc_snprintf(s, n, format, __VA_ARGS__)
|
84
|
+
# if _MSC_VER < 1800 && !defined MRB_WITHOUT_FLOAT
|
85
|
+
# include <float.h>
|
86
|
+
# define isfinite(n) _finite(n)
|
87
|
+
# define isnan _isnan
|
88
|
+
# define isinf(n) (!_finite(n) && !_isnan(n))
|
89
|
+
# define signbit(n) (_copysign(1.0, (n)) < 0.0)
|
90
|
+
static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000;
|
91
|
+
# define INFINITY (*(float *)&IEEE754_INFINITY_BITS_SINGLE)
|
92
|
+
# define NAN ((float)(INFINITY - INFINITY))
|
93
|
+
# endif
|
94
|
+
#endif
|
95
|
+
|
96
|
+
enum mrb_vtype {
|
97
|
+
MRB_TT_FALSE = 0, /* 0 */
|
98
|
+
MRB_TT_FREE, /* 1 */
|
99
|
+
MRB_TT_TRUE, /* 2 */
|
100
|
+
MRB_TT_FIXNUM, /* 3 */
|
101
|
+
MRB_TT_SYMBOL, /* 4 */
|
102
|
+
MRB_TT_UNDEF, /* 5 */
|
103
|
+
MRB_TT_FLOAT, /* 6 */
|
104
|
+
MRB_TT_CPTR, /* 7 */
|
105
|
+
MRB_TT_OBJECT, /* 8 */
|
106
|
+
MRB_TT_CLASS, /* 9 */
|
107
|
+
MRB_TT_MODULE, /* 10 */
|
108
|
+
MRB_TT_ICLASS, /* 11 */
|
109
|
+
MRB_TT_SCLASS, /* 12 */
|
110
|
+
MRB_TT_PROC, /* 13 */
|
111
|
+
MRB_TT_ARRAY, /* 14 */
|
112
|
+
MRB_TT_HASH, /* 15 */
|
113
|
+
MRB_TT_STRING, /* 16 */
|
114
|
+
MRB_TT_RANGE, /* 17 */
|
115
|
+
MRB_TT_EXCEPTION, /* 18 */
|
116
|
+
MRB_TT_FILE, /* 19 */
|
117
|
+
MRB_TT_ENV, /* 20 */
|
118
|
+
MRB_TT_DATA, /* 21 */
|
119
|
+
MRB_TT_FIBER, /* 22 */
|
120
|
+
MRB_TT_ISTRUCT, /* 23 */
|
121
|
+
MRB_TT_BREAK, /* 24 */
|
122
|
+
MRB_TT_MAXDEFINE /* 25 */
|
123
|
+
};
|
124
|
+
|
125
|
+
#include <mruby/object.h>
|
126
|
+
|
127
|
+
#ifdef MRB_DOCUMENTATION_BLOCK
|
128
|
+
|
129
|
+
/**
|
130
|
+
* @abstract
|
131
|
+
* MRuby value boxing.
|
132
|
+
*
|
133
|
+
* Actual implementation depends on configured boxing type.
|
134
|
+
*
|
135
|
+
* @see mruby/boxing_no.h Default boxing representation
|
136
|
+
* @see mruby/boxing_word.h Word representation
|
137
|
+
* @see mruby/boxing_nan.h Boxed double representation
|
138
|
+
*/
|
139
|
+
typedef void mrb_value;
|
140
|
+
|
141
|
+
#endif
|
142
|
+
|
143
|
+
#if defined(MRB_NAN_BOXING)
|
144
|
+
#include "boxing_nan.h"
|
145
|
+
#elif defined(MRB_WORD_BOXING)
|
146
|
+
#include "boxing_word.h"
|
147
|
+
#else
|
148
|
+
#include "boxing_no.h"
|
149
|
+
#endif
|
150
|
+
|
151
|
+
#ifndef mrb_fixnum_p
|
152
|
+
#define mrb_fixnum_p(o) (mrb_type(o) == MRB_TT_FIXNUM)
|
153
|
+
#endif
|
154
|
+
#ifndef mrb_undef_p
|
155
|
+
#define mrb_undef_p(o) (mrb_type(o) == MRB_TT_UNDEF)
|
156
|
+
#endif
|
157
|
+
#ifndef mrb_nil_p
|
158
|
+
#define mrb_nil_p(o) (mrb_type(o) == MRB_TT_FALSE && !mrb_fixnum(o))
|
159
|
+
#endif
|
160
|
+
#ifndef mrb_bool
|
161
|
+
#define mrb_bool(o) (mrb_type(o) != MRB_TT_FALSE)
|
162
|
+
#endif
|
163
|
+
#ifndef MRB_WITHOUT_FLOAT
|
164
|
+
#define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT)
|
165
|
+
#endif
|
166
|
+
#define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL)
|
167
|
+
#define mrb_array_p(o) (mrb_type(o) == MRB_TT_ARRAY)
|
168
|
+
#define mrb_string_p(o) (mrb_type(o) == MRB_TT_STRING)
|
169
|
+
#define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH)
|
170
|
+
#define mrb_cptr_p(o) (mrb_type(o) == MRB_TT_CPTR)
|
171
|
+
#define mrb_exception_p(o) (mrb_type(o) == MRB_TT_EXCEPTION)
|
172
|
+
#define mrb_test(o) mrb_bool(o)
|
173
|
+
MRB_API mrb_bool mrb_regexp_p(struct mrb_state*, mrb_value);
|
174
|
+
|
175
|
+
/*
|
176
|
+
* Returns a float in Ruby.
|
177
|
+
*/
|
178
|
+
#ifndef MRB_WITHOUT_FLOAT
|
179
|
+
MRB_INLINE mrb_value mrb_float_value(struct mrb_state *mrb, mrb_float f)
|
180
|
+
{
|
181
|
+
mrb_value v;
|
182
|
+
(void) mrb;
|
183
|
+
SET_FLOAT_VALUE(mrb, v, f);
|
184
|
+
return v;
|
185
|
+
}
|
186
|
+
#endif
|
187
|
+
|
188
|
+
static inline mrb_value
|
189
|
+
mrb_cptr_value(struct mrb_state *mrb, void *p)
|
190
|
+
{
|
191
|
+
mrb_value v;
|
192
|
+
(void) mrb;
|
193
|
+
SET_CPTR_VALUE(mrb,v,p);
|
194
|
+
return v;
|
195
|
+
}
|
196
|
+
|
197
|
+
/*
|
198
|
+
* Returns a fixnum in Ruby.
|
199
|
+
*/
|
200
|
+
MRB_INLINE mrb_value mrb_fixnum_value(mrb_int i)
|
201
|
+
{
|
202
|
+
mrb_value v;
|
203
|
+
SET_INT_VALUE(v, i);
|
204
|
+
return v;
|
205
|
+
}
|
206
|
+
|
207
|
+
static inline mrb_value
|
208
|
+
mrb_symbol_value(mrb_sym i)
|
209
|
+
{
|
210
|
+
mrb_value v;
|
211
|
+
SET_SYM_VALUE(v, i);
|
212
|
+
return v;
|
213
|
+
}
|
214
|
+
|
215
|
+
static inline mrb_value
|
216
|
+
mrb_obj_value(void *p)
|
217
|
+
{
|
218
|
+
mrb_value v;
|
219
|
+
SET_OBJ_VALUE(v, (struct RBasic*)p);
|
220
|
+
mrb_assert(p == mrb_ptr(v));
|
221
|
+
mrb_assert(((struct RBasic*)p)->tt == mrb_type(v));
|
222
|
+
return v;
|
223
|
+
}
|
224
|
+
|
225
|
+
|
226
|
+
/*
|
227
|
+
* Get a nil mrb_value object.
|
228
|
+
*
|
229
|
+
* @return
|
230
|
+
* nil mrb_value object reference.
|
231
|
+
*/
|
232
|
+
MRB_INLINE mrb_value mrb_nil_value(void)
|
233
|
+
{
|
234
|
+
mrb_value v;
|
235
|
+
SET_NIL_VALUE(v);
|
236
|
+
return v;
|
237
|
+
}
|
238
|
+
|
239
|
+
/*
|
240
|
+
* Returns false in Ruby.
|
241
|
+
*/
|
242
|
+
MRB_INLINE mrb_value mrb_false_value(void)
|
243
|
+
{
|
244
|
+
mrb_value v;
|
245
|
+
SET_FALSE_VALUE(v);
|
246
|
+
return v;
|
247
|
+
}
|
248
|
+
|
249
|
+
/*
|
250
|
+
* Returns true in Ruby.
|
251
|
+
*/
|
252
|
+
MRB_INLINE mrb_value mrb_true_value(void)
|
253
|
+
{
|
254
|
+
mrb_value v;
|
255
|
+
SET_TRUE_VALUE(v);
|
256
|
+
return v;
|
257
|
+
}
|
258
|
+
|
259
|
+
static inline mrb_value
|
260
|
+
mrb_bool_value(mrb_bool boolean)
|
261
|
+
{
|
262
|
+
mrb_value v;
|
263
|
+
SET_BOOL_VALUE(v, boolean);
|
264
|
+
return v;
|
265
|
+
}
|
266
|
+
|
267
|
+
static inline mrb_value
|
268
|
+
mrb_undef_value(void)
|
269
|
+
{
|
270
|
+
mrb_value v;
|
271
|
+
SET_UNDEF_VALUE(v);
|
272
|
+
return v;
|
273
|
+
}
|
274
|
+
|
275
|
+
#ifdef MRB_USE_ETEXT_EDATA
|
276
|
+
#if (defined(__APPLE__) && defined(__MACH__))
|
277
|
+
#include <mach-o/getsect.h>
|
278
|
+
static inline mrb_bool
|
279
|
+
mrb_ro_data_p(const char *p)
|
280
|
+
{
|
281
|
+
return (const char*)get_etext() < p && p < (const char*)get_edata();
|
282
|
+
}
|
283
|
+
#else
|
284
|
+
extern char _etext[];
|
285
|
+
#ifdef MRB_NO_INIT_ARRAY_START
|
286
|
+
extern char _edata[];
|
287
|
+
|
288
|
+
static inline mrb_bool
|
289
|
+
mrb_ro_data_p(const char *p)
|
290
|
+
{
|
291
|
+
return _etext < p && p < _edata;
|
292
|
+
}
|
293
|
+
#else
|
294
|
+
extern char __init_array_start[];
|
295
|
+
|
296
|
+
static inline mrb_bool
|
297
|
+
mrb_ro_data_p(const char *p)
|
298
|
+
{
|
299
|
+
return _etext < p && p < (char*)&__init_array_start;
|
300
|
+
}
|
301
|
+
#endif
|
302
|
+
#endif
|
303
|
+
#else
|
304
|
+
# define mrb_ro_data_p(p) FALSE
|
305
|
+
#endif
|
306
|
+
|
307
|
+
MRB_END_DECL
|
308
|
+
|
309
|
+
#endif /* MRUBY_VALUE_H */
|
@@ -0,0 +1,138 @@
|
|
1
|
+
/*
|
2
|
+
** mruby/variable.h - mruby variables
|
3
|
+
**
|
4
|
+
** See Copyright Notice in mruby.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef MRUBY_VARIABLE_H
|
8
|
+
#define MRUBY_VARIABLE_H
|
9
|
+
|
10
|
+
#include "common.h"
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Functions to access mruby variables.
|
14
|
+
*/
|
15
|
+
MRB_BEGIN_DECL
|
16
|
+
|
17
|
+
typedef struct global_variable {
|
18
|
+
int counter;
|
19
|
+
mrb_value *data;
|
20
|
+
mrb_value (*getter)(void);
|
21
|
+
void (*setter)(void);
|
22
|
+
/* void (*marker)(); */
|
23
|
+
/* int block_trace; */
|
24
|
+
/* struct trace_var *trace; */
|
25
|
+
} global_variable;
|
26
|
+
|
27
|
+
struct global_entry {
|
28
|
+
global_variable *var;
|
29
|
+
mrb_sym id;
|
30
|
+
};
|
31
|
+
|
32
|
+
mrb_value mrb_vm_special_get(mrb_state*, mrb_sym);
|
33
|
+
void mrb_vm_special_set(mrb_state*, mrb_sym, mrb_value);
|
34
|
+
mrb_value mrb_vm_iv_get(mrb_state*, mrb_sym);
|
35
|
+
void mrb_vm_iv_set(mrb_state*, mrb_sym, mrb_value);
|
36
|
+
mrb_value mrb_vm_cv_get(mrb_state*, mrb_sym);
|
37
|
+
void mrb_vm_cv_set(mrb_state*, mrb_sym, mrb_value);
|
38
|
+
mrb_value mrb_vm_const_get(mrb_state*, mrb_sym);
|
39
|
+
void mrb_vm_const_set(mrb_state*, mrb_sym, mrb_value);
|
40
|
+
MRB_API mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym);
|
41
|
+
MRB_API void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value);
|
42
|
+
MRB_API mrb_bool mrb_const_defined(mrb_state*, mrb_value, mrb_sym);
|
43
|
+
MRB_API void mrb_const_remove(mrb_state*, mrb_value, mrb_sym);
|
44
|
+
|
45
|
+
MRB_API mrb_bool mrb_iv_p(mrb_state *mrb, mrb_sym sym);
|
46
|
+
MRB_API void mrb_iv_check(mrb_state *mrb, mrb_sym sym);
|
47
|
+
MRB_API mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
|
48
|
+
MRB_API void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
|
49
|
+
MRB_API mrb_bool mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
|
50
|
+
MRB_API mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym);
|
51
|
+
MRB_API void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v);
|
52
|
+
MRB_API mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym);
|
53
|
+
MRB_API mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym);
|
54
|
+
MRB_API void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src);
|
55
|
+
MRB_API mrb_bool mrb_const_defined_at(mrb_state *mrb, mrb_value mod, mrb_sym id);
|
56
|
+
|
57
|
+
/**
|
58
|
+
* Get a global variable. Will return nil if the var does not exist
|
59
|
+
*
|
60
|
+
* Example:
|
61
|
+
*
|
62
|
+
* !!!ruby
|
63
|
+
* # Ruby style
|
64
|
+
* var = $value
|
65
|
+
*
|
66
|
+
* !!!c
|
67
|
+
* // C style
|
68
|
+
* mrb_sym sym = mrb_intern_lit(mrb, "$value");
|
69
|
+
* mrb_value var = mrb_gv_get(mrb, sym);
|
70
|
+
*
|
71
|
+
* @param mrb The mruby state reference
|
72
|
+
* @param sym The name of the global variable
|
73
|
+
* @return The value of that global variable. May be nil
|
74
|
+
*/
|
75
|
+
MRB_API mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym);
|
76
|
+
|
77
|
+
/**
|
78
|
+
* Set a global variable
|
79
|
+
*
|
80
|
+
* Example:
|
81
|
+
*
|
82
|
+
* !!!ruby
|
83
|
+
* # Ruby style
|
84
|
+
* $value = "foo"
|
85
|
+
*
|
86
|
+
* !!!c
|
87
|
+
* // C style
|
88
|
+
* mrb_sym sym = mrb_intern_lit(mrb, "$value");
|
89
|
+
* mrb_gv_set(mrb, sym, mrb_str_new_lit("foo"));
|
90
|
+
*
|
91
|
+
* @param mrb The mruby state reference
|
92
|
+
* @param sym The name of the global variable
|
93
|
+
* @param val The value of the global variable
|
94
|
+
*/
|
95
|
+
MRB_API void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
|
96
|
+
|
97
|
+
/**
|
98
|
+
* Remove a global variable.
|
99
|
+
*
|
100
|
+
* Example:
|
101
|
+
*
|
102
|
+
* !!!ruby
|
103
|
+
* # Ruby style
|
104
|
+
* $value = nil
|
105
|
+
*
|
106
|
+
* !!!c
|
107
|
+
* // C style
|
108
|
+
* mrb_sym sym = mrb_intern_lit(mrb, "$value");
|
109
|
+
* mrb_gv_remove(mrb, sym);
|
110
|
+
*
|
111
|
+
* @param mrb The mruby state reference
|
112
|
+
* @param sym The name of the global variable
|
113
|
+
* @param val The value of the global variable
|
114
|
+
*/
|
115
|
+
MRB_API void mrb_gv_remove(mrb_state *mrb, mrb_sym sym);
|
116
|
+
|
117
|
+
MRB_API mrb_value mrb_cv_get(mrb_state *mrb, mrb_value mod, mrb_sym sym);
|
118
|
+
MRB_API void mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v);
|
119
|
+
MRB_API void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v);
|
120
|
+
MRB_API mrb_bool mrb_cv_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym);
|
121
|
+
mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*);
|
122
|
+
mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod);
|
123
|
+
mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self);
|
124
|
+
mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value);
|
125
|
+
mrb_value mrb_mod_class_variables(mrb_state*, mrb_value);
|
126
|
+
mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym);
|
127
|
+
mrb_bool mrb_mod_cv_defined(mrb_state *mrb, struct RClass * c, mrb_sym sym);
|
128
|
+
|
129
|
+
/* GC functions */
|
130
|
+
void mrb_gc_mark_gv(mrb_state*);
|
131
|
+
void mrb_gc_free_gv(mrb_state*);
|
132
|
+
void mrb_gc_mark_iv(mrb_state*, struct RObject*);
|
133
|
+
size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*);
|
134
|
+
void mrb_gc_free_iv(mrb_state*, struct RObject*);
|
135
|
+
|
136
|
+
MRB_END_DECL
|
137
|
+
|
138
|
+
#endif /* MRUBY_VARIABLE_H */
|