mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers boxing_no.h Source File

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