15#if defined(MRBC_INT64) || defined(MRBC_INT16)
16# error "MRBC_NAN_BOXING and MRBC_INT64/16 are mutually exclusive."
20#define MRBC_NAN_BITS 0xFFFF
39#if defined(MRBC_LITTLE_ENDIAN)
75#elif defined(MRBC_BIG_ENDIAN)
100 struct RRange *
range;
114#define mrbc_type(v) ((v).nan == MRBC_NAN_BITS ? (v).tt : MRBC_TT_FLOAT)
115#define mrbc_integer(o) ((o).i)
116#define mrbc_float(o) ((o).d)
117#define mrbc_symbol(o) ((o).sym_id)
121#define mrbc_integer_value(n) (mrbc_value){.tt2 = MRBC_NAN_BITS << 16 | MRBC_TT_INTEGER, .i = (n)}
122#define mrbc_float_value(vm,n) (mrbc_value){.d=(n)}
123#define mrbc_nil_value() (mrbc_value){.tt2 = MRBC_NAN_BITS << 16 | MRBC_TT_NIL}
124#define mrbc_true_value() (mrbc_value){.tt2 = MRBC_NAN_BITS << 16 | MRBC_TT_TRUE}
125#define mrbc_false_value() (mrbc_value){.tt2 = MRBC_NAN_BITS << 16 | MRBC_TT_FALSE}
126#define mrbc_bool_value(n) (mrbc_value){.tt2 = (n)? (MRBC_NAN_BITS << 16 | MRBC_TT_TRUE) : \
127 (MRBC_NAN_BITS << 16 | MRBC_TT_FALSE)}
128#define mrbc_symbol_value(n) (mrbc_value){.tt2 = MRBC_NAN_BITS << 16 | MRBC_TT_SYMBOL, .sym_id=(n)}
130#define mrbc_immediate_value(...) MRBC_arg_choice(__VA_ARGS__, mrbc_immediate_value2, mrbc_immediate_value1) (__VA_ARGS__)
131#define mrbc_immediate_value1(type) \
132 ((mrbc_value){.tt2 = MRBC_NAN_BITS << 16 | (type)})
133#define mrbc_immediate_value2(type, content) \
134 ((mrbc_value){.tt2 = MRBC_NAN_BITS << 16 | (type), content})
180 p->tt2 = MRBC_NAN_BITS << 16 | type;
static void mrbc_set_nil(mrbc_value *p)
static void mrbc_set_symbol(mrbc_value *p, mrbc_sym sym_id)
static void mrbc_set_tt(mrbc_value *p, mrbc_vtype type)
static void mrbc_set_bool(mrbc_value *p, int n)
static void mrbc_set_float(mrbc_value *p, mrbc_float_t d)
struct RObject mrbc_value
Value object. Default version.
static void mrbc_set_true(mrbc_value *p)
static void mrbc_set_false(mrbc_value *p)
static void mrbc_set_integer(mrbc_value *p, mrbc_int_t n)
Value object. Default version.
struct RException * exception
struct RInstance * instance
int16_t mrbc_sym
mruby/c symbol ID
@ MRBC_TT_FALSE
FalseClass.
@ MRBC_TT_INTEGER
Integer.