mruby  2.0.1
mruby is the lightweight implementation of the Ruby language
boxing_no.h
Go to the documentation of this file.
1 
7 #ifndef MRUBY_BOXING_NO_H
8 #define MRUBY_BOXING_NO_H
9 
10 #define MRB_FIXNUM_SHIFT 0
11 #define MRB_TT_HAS_BASIC MRB_TT_OBJECT
12 
14 #ifndef MRB_WITHOUT_FLOAT
15  mrb_float f;
16 #endif
17  void *p;
18  mrb_int i;
19  mrb_sym sym;
20 };
21 
22 typedef struct mrb_value {
23  union mrb_value_value value;
24  enum mrb_vtype tt;
25 } mrb_value;
26 
27 #ifndef MRB_WITHOUT_FLOAT
28 #define mrb_float_pool(mrb,f) mrb_float_value(mrb,f)
29 #endif
30 
31 #define mrb_ptr(o) (o).value.p
32 #define mrb_cptr(o) mrb_ptr(o)
33 #ifndef MRB_WITHOUT_FLOAT
34 #define mrb_float(o) (o).value.f
35 #endif
36 #define mrb_fixnum(o) (o).value.i
37 #define mrb_symbol(o) (o).value.sym
38 #define mrb_type(o) (o).tt
39 
40 #define BOXNIX_SET_VALUE(o, ttt, attr, v) do {\
41  (o).tt = ttt;\
42  (o).attr = v;\
43 } while (0)
44 
45 #define SET_NIL_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 0)
46 #define SET_FALSE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 1)
47 #define SET_TRUE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_TRUE, value.i, 1)
48 #define SET_BOOL_VALUE(r,b) BOXNIX_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1)
49 #define SET_INT_VALUE(r,n) BOXNIX_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n))
50 #ifndef MRB_WITHOUT_FLOAT
51 #define SET_FLOAT_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v))
52 #endif
53 #define SET_SYM_VALUE(r,v) BOXNIX_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
54 #define SET_OBJ_VALUE(r,v) BOXNIX_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v))
55 #define SET_CPTR_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_CPTR, value.p, v)
56 #define SET_UNDEF_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0)
57 
58 #endif /* MRUBY_BOXING_NO_H */
mruby Symbol.
Definition: boxing_no.h:13
Definition: boxing_nan.h:39