mbed I/F binding for mruby
Dependents: mruby_mbed_web mirb_mbed
boxing_no.h
00001 /* 00002 ** mruby/boxing_no.h - unboxed mrb_value definition 00003 ** 00004 ** See Copyright Notice in mruby.h 00005 */ 00006 00007 #ifndef MRUBY_BOXING_NO_H 00008 #define MRUBY_BOXING_NO_H 00009 00010 #define MRB_FIXNUM_SHIFT 0 00011 #define MRB_TT_HAS_BASIC MRB_TT_OBJECT 00012 00013 typedef struct mrb_value { 00014 union { 00015 mrb_float f; 00016 void *p; 00017 mrb_int i; 00018 mrb_sym sym; 00019 } value; 00020 enum mrb_vtype tt; 00021 } mrb_value; 00022 00023 #define mrb_float_pool(mrb,f) mrb_float_value(mrb,f) 00024 00025 #define mrb_ptr(o) (o).value.p 00026 #define mrb_cptr(o) mrb_ptr(o) 00027 #define mrb_float(o) (o).value.f 00028 #define mrb_fixnum(o) (o).value.i 00029 #define mrb_symbol(o) (o).value.sym 00030 #define mrb_type(o) (o).tt 00031 00032 #define BOXNIX_SET_VALUE(o, ttt, attr, v) do {\ 00033 (o).tt = ttt;\ 00034 (o).attr = v;\ 00035 } while (0) 00036 00037 #define SET_NIL_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 0) 00038 #define SET_FALSE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 1) 00039 #define SET_TRUE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) 00040 #define SET_BOOL_VALUE(r,b) BOXNIX_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) 00041 #define SET_INT_VALUE(r,n) BOXNIX_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) 00042 #define SET_FLOAT_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v)) 00043 #define SET_SYM_VALUE(r,v) BOXNIX_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) 00044 #define SET_OBJ_VALUE(r,v) BOXNIX_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v)) 00045 #define SET_PROC_VALUE(r,v) BOXNIX_SET_VALUE(r, MRB_TT_PROC, value.p, v) 00046 #define SET_CPTR_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_CPTR, value.p, v) 00047 #define SET_UNDEF_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0) 00048 00049 #endif /* MRUBY_BOXING_NO_H */ 00050
Generated on Tue Jul 12 2022 18:00:34 by 1.7.2