source: EcnlProtoTool/trunk/mruby-2.1.1/include/mruby/boxing_no.h@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 1.7 KB
RevLine 
[439]1/**
2** @file mruby/boxing_no.h - unboxed mrb_value definition
[270]3**
4** See Copyright Notice in mruby.h
5*/
6
7#ifndef MRUBY_BOXING_NO_H
8#define MRUBY_BOXING_NO_H
9
10#define MRB_FIXNUM_SHIFT 0
[439]11#define MRB_SYMBOL_SHIFT 0
[270]12
[439]13union mrb_value_union {
14#ifndef MRB_WITHOUT_FLOAT
15 mrb_float f;
16#endif
17 void *p;
18 mrb_int i;
19 mrb_sym sym;
20};
21
[270]22typedef struct mrb_value {
[439]23 union mrb_value_union value;
[270]24 enum mrb_vtype tt;
25} mrb_value;
26
[439]27#ifndef MRB_WITHOUT_FLOAT
[270]28#define mrb_float_pool(mrb,f) mrb_float_value(mrb,f)
[439]29#endif
[270]30
31#define mrb_ptr(o) (o).value.p
32#define mrb_cptr(o) mrb_ptr(o)
[439]33#ifndef MRB_WITHOUT_FLOAT
[270]34#define mrb_float(o) (o).value.f
[439]35#endif
[270]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))
[439]50#ifndef MRB_WITHOUT_FLOAT
[270]51#define SET_FLOAT_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v))
[439]52#endif
[270]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 */
Note: See TracBrowser for help on using the repository browser.