36 #define __STDC_LIMIT_MACROS 37 #define __STDC_CONSTANT_MACROS 38 #define __STDC_FORMAT_MACROS 49 #define SIZE_MAX __SIZE_MAX__ 51 #define SIZE_MAX std::numeric_limits<size_t>::max() 58 #define mrb_assert(p) assert(p) 59 #define mrb_assert_int_fit(t1,n,t2,max) assert((n)>=0 && ((sizeof(n)<=sizeof(t2))||(n<=(t1)(max)))) 61 #define mrb_assert(p) ((void)0) 62 #define mrb_assert_int_fit(t1,n,t2,max) ((void)0) 65 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L 66 #define mrb_static_assert(exp, str) _Static_assert(exp, str) 68 #define mrb_static_assert(exp, str) mrb_assert(exp) 73 #ifndef MRB_WITHOUT_FLOAT 75 #define FLT_EPSILON (1.19209290e-07f) 78 #define DBL_EPSILON ((double)2.22044604925031308085e-16L) 81 #define LDBL_EPSILON (1.08420217248550443401e-19L) 85 #define MRB_FLOAT_EPSILON FLT_EPSILON 87 #define MRB_FLOAT_EPSILON DBL_EPSILON 124 typedef void* (*mrb_allocf) (
struct mrb_state *mrb,
void*, size_t,
void *ud);
126 #ifndef MRB_FIXED_STATE_ATEXIT_STACK_SIZE 127 #define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5 141 struct RClass *target_class;
144 enum mrb_fiber_state {
145 MRB_FIBER_CREATED = 0,
149 MRB_FIBER_TRANSFERRED,
150 MRB_FIBER_TERMINATED,
164 struct RProc **ensure;
165 uint16_t esize, eidx;
167 enum mrb_fiber_state status;
172 #ifdef MRB_METHOD_CACHE_SIZE 173 # define MRB_METHOD_CACHE 177 # define MRB_METHOD_CACHE_SIZE (1<<7) 191 #ifdef MRB_METHOD_TABLE_INLINE 203 #ifdef MRB_METHOD_CACHE 204 struct mrb_cache_entry {
213 typedef void (*mrb_atexit_func)(
struct mrb_state*);
228 struct RClass *object_class;
229 struct RClass *class_class;
230 struct RClass *module_class;
231 struct RClass *proc_class;
232 struct RClass *string_class;
233 struct RClass *array_class;
234 struct RClass *hash_class;
235 struct RClass *range_class;
237 #ifndef MRB_WITHOUT_FLOAT 238 struct RClass *float_class;
240 struct RClass *fixnum_class;
241 struct RClass *true_class;
242 struct RClass *false_class;
244 struct RClass *symbol_class;
245 struct RClass *kernel_module;
249 #ifdef MRB_METHOD_CACHE 250 struct mrb_cache_entry cache[MRB_METHOD_CACHE_SIZE];
257 #ifndef MRB_ENABLE_SYMBOLL_ALL 261 #ifdef MRB_ENABLE_DEBUG_HOOK 266 #ifdef MRB_BYTECODE_DECODE_OPTION 270 struct RClass *eException_class;
271 struct RClass *eStandardError_class;
274 #ifdef MRB_GC_FIXED_ARENA 280 #ifdef MRB_FIXED_STATE_ATEXIT_STACK 281 mrb_atexit_func atexit_stack[MRB_FIXED_STATE_ATEXIT_STACK_SIZE];
283 mrb_atexit_func *atexit_stack;
285 uint16_t atexit_stack_len;
804 #define MRB_ARGS_REQ(n) ((mrb_aspec)((n)&0x1f) << 18) 812 #define MRB_ARGS_OPT(n) ((mrb_aspec)((n)&0x1f) << 13) 822 #define MRB_ARGS_ARG(n1,n2) (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2)) 825 #define MRB_ARGS_REST() ((mrb_aspec)(1 << 12)) 828 #define MRB_ARGS_POST(n) ((mrb_aspec)((n)&0x1f) << 7) 831 #define MRB_ARGS_KEY(n1,n2) ((mrb_aspec)((((n1)&0x1f) << 2) | ((n2)?(1<<1):0))) 836 #define MRB_ARGS_BLOCK() ((mrb_aspec)1) 841 #define MRB_ARGS_ANY() MRB_ARGS_REST() 846 #define MRB_ARGS_NONE() ((mrb_aspec)0) 892 return mrb->c->ci->mid;
910 #define mrb_strlen_lit(lit) (sizeof(lit "") - 1) 995 #define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb, lit, mrb_strlen_lit(lit)) 1019 #define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit)) 1022 MRB_API char* mrb_utf8_from_locale(
const char *p,
int len);
1023 MRB_API char* mrb_locale_from_utf8(
const char *p,
int len);
1024 #define mrb_locale_free(p) free(p) 1025 #define mrb_utf8_free(p) free(p) 1027 #define mrb_utf8_from_locale(p, l) ((char*)(p)) 1028 #define mrb_locale_from_utf8(p, l) ((char*)(p)) 1029 #define mrb_locale_free(p) 1030 #define mrb_utf8_free(p) 1089 #define mrb_toplevel_run_keep(m,p,k) mrb_top_run((m),(p),mrb_top_self(m),(k)) 1090 #define mrb_toplevel_run(m,p) mrb_toplevel_run_keep((m),(p),0) 1091 #define mrb_context_run(m,p,s,k) mrb_vm_run((m),(p),(s),(k)) 1102 #ifndef MRB_WITHOUT_FLOAT 1111 return mrb->gc.arena_idx;
1115 mrb_gc_arena_restore(
mrb_state *mrb,
int idx)
1117 mrb->gc.arena_idx = idx;
1124 #define mrb_gc_mark_value(mrb,val) do {\ 1125 if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \ 1128 #define mrb_field_write_barrier_value(mrb, obj, val) do{\ 1129 if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \ 1144 #define ISASCII(c) ((unsigned)(c) <= 0x7f) 1145 #define ISPRINT(c) (((unsigned)(c) - 0x20) < 0x5f) 1146 #define ISSPACE(c) ((c) == ' ' || (unsigned)(c) - '\t' < 5) 1147 #define ISUPPER(c) (((unsigned)(c) - 'A') < 26) 1148 #define ISLOWER(c) (((unsigned)(c) - 'a') < 26) 1149 #define ISALPHA(c) ((((unsigned)(c) | 0x20) - 'a') < 26) 1150 #define ISDIGIT(c) (((unsigned)(c) - '0') < 10) 1151 #define ISXDIGIT(c) (ISDIGIT(c) || ((unsigned)(c) | 0x20) - 'a' < 6) 1152 #define ISALNUM(c) (ISALPHA(c) || ISDIGIT(c)) 1153 #define ISBLANK(c) ((c) == ' ' || (c) == '\t') 1154 #define ISCNTRL(c) ((unsigned)(c) < 0x20 || (c) == 0x7f) 1155 #define TOUPPER(c) (ISLOWER(c) ? ((c) & 0x5f) : (c)) 1156 #define TOLOWER(c) (ISUPPER(c) ? ((c) | 0x20) : (c)) 1178 #define E_RUNTIME_ERROR (mrb_exc_get(mrb, "RuntimeError")) 1179 #define E_TYPE_ERROR (mrb_exc_get(mrb, "TypeError")) 1180 #define E_ARGUMENT_ERROR (mrb_exc_get(mrb, "ArgumentError")) 1181 #define E_INDEX_ERROR (mrb_exc_get(mrb, "IndexError")) 1182 #define E_RANGE_ERROR (mrb_exc_get(mrb, "RangeError")) 1183 #define E_NAME_ERROR (mrb_exc_get(mrb, "NameError")) 1184 #define E_NOMETHOD_ERROR (mrb_exc_get(mrb, "NoMethodError")) 1185 #define E_SCRIPT_ERROR (mrb_exc_get(mrb, "ScriptError")) 1186 #define E_SYNTAX_ERROR (mrb_exc_get(mrb, "SyntaxError")) 1187 #define E_LOCALJUMP_ERROR (mrb_exc_get(mrb, "LocalJumpError")) 1188 #define E_REGEXP_ERROR (mrb_exc_get(mrb, "RegexpError")) 1189 #define E_FROZEN_ERROR (mrb_exc_get(mrb, "FrozenError")) 1191 #define E_NOTIMP_ERROR (mrb_exc_get(mrb, "NotImplementedError")) 1192 #ifndef MRB_WITHOUT_FLOAT 1193 #define E_FLOATDOMAIN_ERROR (mrb_exc_get(mrb, "FloatDomainError")) 1196 #define E_KEY_ERROR (mrb_exc_get(mrb, "KeyError")) 1215 #define mrb_int(mrb, val) mrb_fixnum(mrb_to_int(mrb, val)) 1222 if (MRB_FROZEN_P((
struct RBasic*)o)) mrb_frozen_error(mrb, o);
1225 typedef enum call_type {
1269 #define E_FIBER_ERROR (mrb_exc_get(mrb, "FiberError")) 1277 MRB_API void* mrb_pool_realloc(
struct mrb_pool*,
void*,
size_t oldlen,
size_t newlen);
1295 mrbmemcpy(
void *dst,
const void *src,
size_t n)
1297 char *d = (
char*)dst;
1298 const char *s = (
const char*)src;
1303 #define memcpy(a,b,c) mrbmemcpy(a,b,c) 1306 mrbmemset(
void *s,
int c,
size_t n)
1313 #define memset(a,b,c) mrbmemset(a,b,c) void mrb_undef_method(mrb_state *mrb, struct RClass *cla, const char *name)
Undefines a method.
Definition: class.c:1841
void mrb_close(mrb_state *mrb)
Closes and frees a mrb_state.
Definition: state.c:158
void mrb_define_const(mrb_state *mrb, struct RClass *cla, const char *name, mrb_value val)
Defines a constant.
Definition: variable.c:864
struct RClass * mrb_define_class(mrb_state *mrb, const char *name, struct RClass *super)
Defines a new class.
Definition: class.c:272
Definition: variable.c:25
void mrb_define_singleton_method(mrb_state *mrb, struct RObject *cla, const char *name, mrb_func_t fun, mrb_aspec aspec)
Defines a singleton method.
Definition: class.c:1228
uint8_t mrb_code
MRuby C API entry point.
Definition: mruby.h:101
mrb_state * mrb_open_core(mrb_allocf f, void *ud)
Create new mrb_state with just the MRuby core.
Definition: state.c:23
mrb_value mrb_obj_new(mrb_state *mrb, struct RClass *c, mrb_int argc, const mrb_value *argv)
Initialize a new object instance of c class.
Definition: class.c:1502
struct RClass * mrb_class_get_under(mrb_state *mrb, struct RClass *outer, const char *name)
Gets a child class.
Definition: class.c:364
mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value val, mrb_sym name_sym, mrb_int argc, const mrb_value *obj)
Call existing ruby functions.
Definition: vm.c:537
mrb_int mrb_get_argc(mrb_state *mrb)
Retrieve number of arguments from mrb_state.
Definition: class.c:518
Proc class.
Definition: proc.h:18
static mrb_value mrb_class_new_instance(mrb_state *mrb, mrb_int argc, const mrb_value *argv, struct RClass *c)
Definition: mruby.h:584
garbage collector for mruby
void mrb_define_class_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t fun, mrb_aspec aspec)
Defines a class method.
Definition: class.c:1235
#define mrb_noreturn
Shared compiler macros.
Definition: common.h:44
mrb_int mrb_get_args(mrb_state *mrb, mrb_args_format format,...)
Retrieve arguments from mrb_state.
Definition: class.c:577
mrb_value mrb_obj_dup(mrb_state *mrb, mrb_value obj)
Duplicate an object.
Definition: kernel.c:363
mrb_value mrb_fiber_yield(mrb_state *mrb, mrb_int argc, const mrb_value *argv)
Yield a Fiber.
Class class.
Definition: class.h:17
mrb_value mrb_funcall_with_block(mrb_state *, mrb_value, mrb_sym, mrb_int, const mrb_value *, mrb_value)
Call existing ruby functions with a block.
Definition: vm.c:428
struct RClass * mrb_module_new(mrb_state *mrb)
Creates a new module, Module.
Definition: class.c:1733
mrb_value mrb_str_new_cstr(mrb_state *, const char *)
Turns a C string into a Ruby string value.
Definition: string.c:214
void mrb_undef_class_method(mrb_state *mrb, struct RClass *cls, const char *name)
Undefine a class method.
Definition: class.c:1847
void mrb_define_alias(mrb_state *mrb, struct RClass *c, const char *a, const char *b)
Definition: class.c:1776
const char * mrb_args_format
Format specifiers for {mrb_get_args} function.
Definition: mruby.h:876
#define MRB_BEGIN_DECL
Start declarations in C mode.
Definition: common.h:26
mrb_value mrb_funcall(mrb_state *mrb, mrb_value val, const char *name, mrb_int argc,...)
Call existing ruby functions.
Definition: vm.c:384
mrb_bool mrb_class_defined_under(mrb_state *mrb, struct RClass *outer, const char *name)
Returns an mrb_bool.
Definition: class.c:354
mrb_value(* mrb_func_t)(struct mrb_state *mrb, mrb_value self)
Function pointer type for a function callable by mruby.
Definition: mruby.h:189
void mrb_prepend_module(mrb_state *mrb, struct RClass *cla, struct RClass *prepended)
Prepends a module in another class or module.
Definition: class.c:1065
struct RClass * mrb_class_new(mrb_state *mrb, struct RClass *super)
Creates a new instance of Class, Class.
Definition: class.c:1713
#define MRB_API
Declare a public MRuby API function.
Definition: common.h:73
struct RClass * mrb_define_module(mrb_state *mrb, const char *name)
Defines a new module.
Definition: class.c:204
void * mrb_default_allocf(mrb_state *, void *, size_t, void *)
The default allocation function.
Definition: state.c:49
struct RClass * mrb_module_get(mrb_state *mrb, const char *name)
Gets a module.
Definition: class.c:402
Specifies the number of arguments a function takes.
struct RClass * mrb_class_get(mrb_state *mrb, const char *name)
Gets a class.
Definition: class.c:370
mrb_bool mrb_class_defined(mrb_state *mrb, const char *name)
Returns an mrb_bool.
Definition: class.c:344
struct RClass * mrb_define_class_under(mrb_state *mrb, struct RClass *outer, const char *name, struct RClass *super)
Defines a new class under a given module.
Definition: class.c:424
#define MRB_END_DECL
End declarations in C mode.
Definition: common.h:28
mruby common platform definition"
mrb_state * mrb_open_allocf(mrb_allocf f, void *ud)
Create new mrb_state with custom allocators.
Definition: state.c:69
void *(* mrb_allocf)(struct mrb_state *mrb, void *, size_t, void *ud)
Function pointer type of custom allocator used in.
Definition: mruby.h:124
struct RClass * mrb_exc_get(mrb_state *mrb, const char *name)
Gets a exception class.
Definition: class.c:376
mrb_bool mrb_obj_respond_to(mrb_state *mrb, struct RClass *c, mrb_sym mid)
Returns true if obj responds to the given method.
Definition: class.c:1627
struct RClass * mrb_module_get_under(mrb_state *mrb, struct RClass *outer, const char *name)
Gets a module defined under another module.
Definition: class.c:396
mrb_value mrb_fiber_resume(mrb_state *mrb, mrb_value fib, mrb_int argc, const mrb_value *argv)
Resume a Fiber.
void mrb_include_module(mrb_state *mrb, struct RClass *cla, struct RClass *included)
Include a module in another class or module.
Definition: class.c:1056
mrb_value mrb_fiber_alive_p(mrb_state *mrb, mrb_value fib)
Check if a Fiber is alive.
mrb_state * mrb_open(void)
Creates new mrb_state.
Definition: state.c:61
void mrb_define_module_function(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t fun, mrb_aspec aspec)
Defines a module function.
Definition: class.c:1241
Definition: boxing_nan.h:39
mrb_sym mrb_intern_cstr(mrb_state *mrb, const char *str)
Create a symbol.
Definition: symbol.c:219
void mrb_define_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t func, mrb_aspec aspec)
Defines a global function in ruby.
Definition: class.c:476
#define MRB_INLINE
Declare a function as always inlined.
Definition: common.h:62