prism-cli 0.0.1

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.
@@ -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) try {
19
+ #define MRB_CATCH(buf) } catch(mrb_jmpbuf_impl e) { if (e != (buf)->impl) { throw e; }
20
+ #define MRB_END_EXC(buf) }
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) if (MRB_SETJMP((buf)->impl) == 0) {
38
+ #define MRB_CATCH(buf) } else {
39
+ #define MRB_END_EXC(buf) }
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,313 @@
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
+ #if !defined(MRB_SYMBOL_BITSIZE)
164
+ #define MRB_SYMBOL_BITSIZE (sizeof(mrb_sym) * CHAR_BIT)
165
+ #define MRB_SYMBOL_MAX UINT32_MAX
166
+ #endif
167
+ #ifndef MRB_WITHOUT_FLOAT
168
+ #define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT)
169
+ #endif
170
+ #define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL)
171
+ #define mrb_array_p(o) (mrb_type(o) == MRB_TT_ARRAY)
172
+ #define mrb_string_p(o) (mrb_type(o) == MRB_TT_STRING)
173
+ #define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH)
174
+ #define mrb_cptr_p(o) (mrb_type(o) == MRB_TT_CPTR)
175
+ #define mrb_exception_p(o) (mrb_type(o) == MRB_TT_EXCEPTION)
176
+ #define mrb_test(o) mrb_bool(o)
177
+ MRB_API mrb_bool mrb_regexp_p(struct mrb_state*, mrb_value);
178
+
179
+ /*
180
+ * Returns a float in Ruby.
181
+ */
182
+ #ifndef MRB_WITHOUT_FLOAT
183
+ MRB_INLINE mrb_value mrb_float_value(struct mrb_state *mrb, mrb_float f)
184
+ {
185
+ mrb_value v;
186
+ (void) mrb;
187
+ SET_FLOAT_VALUE(mrb, v, f);
188
+ return v;
189
+ }
190
+ #endif
191
+
192
+ static inline mrb_value
193
+ mrb_cptr_value(struct mrb_state *mrb, void *p)
194
+ {
195
+ mrb_value v;
196
+ (void) mrb;
197
+ SET_CPTR_VALUE(mrb,v,p);
198
+ return v;
199
+ }
200
+
201
+ /*
202
+ * Returns a fixnum in Ruby.
203
+ */
204
+ MRB_INLINE mrb_value mrb_fixnum_value(mrb_int i)
205
+ {
206
+ mrb_value v;
207
+ SET_INT_VALUE(v, i);
208
+ return v;
209
+ }
210
+
211
+ static inline mrb_value
212
+ mrb_symbol_value(mrb_sym i)
213
+ {
214
+ mrb_value v;
215
+ SET_SYM_VALUE(v, i);
216
+ return v;
217
+ }
218
+
219
+ static inline mrb_value
220
+ mrb_obj_value(void *p)
221
+ {
222
+ mrb_value v;
223
+ SET_OBJ_VALUE(v, (struct RBasic*)p);
224
+ mrb_assert(p == mrb_ptr(v));
225
+ mrb_assert(((struct RBasic*)p)->tt == mrb_type(v));
226
+ return v;
227
+ }
228
+
229
+
230
+ /*
231
+ * Get a nil mrb_value object.
232
+ *
233
+ * @return
234
+ * nil mrb_value object reference.
235
+ */
236
+ MRB_INLINE mrb_value mrb_nil_value(void)
237
+ {
238
+ mrb_value v;
239
+ SET_NIL_VALUE(v);
240
+ return v;
241
+ }
242
+
243
+ /*
244
+ * Returns false in Ruby.
245
+ */
246
+ MRB_INLINE mrb_value mrb_false_value(void)
247
+ {
248
+ mrb_value v;
249
+ SET_FALSE_VALUE(v);
250
+ return v;
251
+ }
252
+
253
+ /*
254
+ * Returns true in Ruby.
255
+ */
256
+ MRB_INLINE mrb_value mrb_true_value(void)
257
+ {
258
+ mrb_value v;
259
+ SET_TRUE_VALUE(v);
260
+ return v;
261
+ }
262
+
263
+ static inline mrb_value
264
+ mrb_bool_value(mrb_bool boolean)
265
+ {
266
+ mrb_value v;
267
+ SET_BOOL_VALUE(v, boolean);
268
+ return v;
269
+ }
270
+
271
+ static inline mrb_value
272
+ mrb_undef_value(void)
273
+ {
274
+ mrb_value v;
275
+ SET_UNDEF_VALUE(v);
276
+ return v;
277
+ }
278
+
279
+ #ifdef MRB_USE_ETEXT_EDATA
280
+ #if (defined(__APPLE__) && defined(__MACH__))
281
+ #include <mach-o/getsect.h>
282
+ static inline mrb_bool
283
+ mrb_ro_data_p(const char *p)
284
+ {
285
+ return (const char*)get_etext() < p && p < (const char*)get_edata();
286
+ }
287
+ #else
288
+ extern char _etext[];
289
+ #ifdef MRB_NO_INIT_ARRAY_START
290
+ extern char _edata[];
291
+
292
+ static inline mrb_bool
293
+ mrb_ro_data_p(const char *p)
294
+ {
295
+ return _etext < p && p < _edata;
296
+ }
297
+ #else
298
+ extern char __init_array_start[];
299
+
300
+ static inline mrb_bool
301
+ mrb_ro_data_p(const char *p)
302
+ {
303
+ return _etext < p && p < (char*)&__init_array_start;
304
+ }
305
+ #endif
306
+ #endif
307
+ #else
308
+ # define mrb_ro_data_p(p) FALSE
309
+ #endif
310
+
311
+ MRB_END_DECL
312
+
313
+ #endif /* MRUBY_VALUE_H */
@@ -0,0 +1,141 @@
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_cv_get(mrb_state*, mrb_sym);
35
+ void mrb_vm_cv_set(mrb_state*, mrb_sym, mrb_value);
36
+ mrb_value mrb_vm_const_get(mrb_state*, mrb_sym);
37
+ void mrb_vm_const_set(mrb_state*, mrb_sym, mrb_value);
38
+ MRB_API mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym);
39
+ MRB_API void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value);
40
+ MRB_API mrb_bool mrb_const_defined(mrb_state*, mrb_value, mrb_sym);
41
+ MRB_API void mrb_const_remove(mrb_state*, mrb_value, mrb_sym);
42
+
43
+ MRB_API mrb_bool mrb_iv_name_sym_p(mrb_state *mrb, mrb_sym sym);
44
+ MRB_API void mrb_iv_name_sym_check(mrb_state *mrb, mrb_sym sym);
45
+ MRB_API mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
46
+ MRB_API void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v);
47
+ MRB_API mrb_bool mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym);
48
+ MRB_API mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym);
49
+ MRB_API void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v);
50
+ MRB_API mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym);
51
+ MRB_API mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym);
52
+ MRB_API void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src);
53
+ MRB_API mrb_bool mrb_const_defined_at(mrb_state *mrb, mrb_value mod, mrb_sym id);
54
+
55
+ /**
56
+ * Get a global variable. Will return nil if the var does not exist
57
+ *
58
+ * Example:
59
+ *
60
+ * !!!ruby
61
+ * # Ruby style
62
+ * var = $value
63
+ *
64
+ * !!!c
65
+ * // C style
66
+ * mrb_sym sym = mrb_intern_lit(mrb, "$value");
67
+ * mrb_value var = mrb_gv_get(mrb, sym);
68
+ *
69
+ * @param mrb The mruby state reference
70
+ * @param sym The name of the global variable
71
+ * @return The value of that global variable. May be nil
72
+ */
73
+ MRB_API mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym);
74
+
75
+ /**
76
+ * Set a global variable
77
+ *
78
+ * Example:
79
+ *
80
+ * !!!ruby
81
+ * # Ruby style
82
+ * $value = "foo"
83
+ *
84
+ * !!!c
85
+ * // C style
86
+ * mrb_sym sym = mrb_intern_lit(mrb, "$value");
87
+ * mrb_gv_set(mrb, sym, mrb_str_new_lit("foo"));
88
+ *
89
+ * @param mrb The mruby state reference
90
+ * @param sym The name of the global variable
91
+ * @param val The value of the global variable
92
+ */
93
+ MRB_API void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
94
+
95
+ /**
96
+ * Remove a global variable.
97
+ *
98
+ * Example:
99
+ *
100
+ * !!!ruby
101
+ * # Ruby style
102
+ * $value = nil
103
+ *
104
+ * !!!c
105
+ * // C style
106
+ * mrb_sym sym = mrb_intern_lit(mrb, "$value");
107
+ * mrb_gv_remove(mrb, sym);
108
+ *
109
+ * @param mrb The mruby state reference
110
+ * @param sym The name of the global variable
111
+ * @param val The value of the global variable
112
+ */
113
+ MRB_API void mrb_gv_remove(mrb_state *mrb, mrb_sym sym);
114
+
115
+ MRB_API mrb_value mrb_cv_get(mrb_state *mrb, mrb_value mod, mrb_sym sym);
116
+ MRB_API void mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v);
117
+ MRB_API void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v);
118
+ MRB_API mrb_bool mrb_cv_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym);
119
+ mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*);
120
+ mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod);
121
+ mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self);
122
+ mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value);
123
+ mrb_value mrb_mod_class_variables(mrb_state*, mrb_value);
124
+ mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym);
125
+ mrb_bool mrb_mod_cv_defined(mrb_state *mrb, struct RClass * c, mrb_sym sym);
126
+ mrb_bool mrb_ident_p(const char *s, mrb_int len);
127
+
128
+ /* GC functions */
129
+ void mrb_gc_mark_gv(mrb_state*);
130
+ void mrb_gc_free_gv(mrb_state*);
131
+ void mrb_gc_mark_iv(mrb_state*, struct RObject*);
132
+ size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*);
133
+ void mrb_gc_free_iv(mrb_state*, struct RObject*);
134
+
135
+ /* return non zero to break the loop */
136
+ typedef int (mrb_iv_foreach_func)(mrb_state*,mrb_sym,mrb_value,void*);
137
+ MRB_API void mrb_iv_foreach(mrb_state *mrb, mrb_value obj, mrb_iv_foreach_func *func, void *p);
138
+
139
+ MRB_END_DECL
140
+
141
+ #endif /* MRUBY_VARIABLE_H */