mruby  2.0.1
mruby is the lightweight implementation of the Ruby language
Classes | Macros | Typedefs | Enumerations | Functions
boxing_word.h File Reference

More...

Go to the source code of this file.

Classes

struct  RFloat
 
struct  RCptr
 
union  mrb_value
 

Macros

#define MRB_FIXNUM_SHIFT   1
 
#define MRB_TT_HAS_BASIC   MRB_TT_FLOAT
 
#define MRB_FIXNUM_FLAG   0x01
 
#define MRB_SYMBOL_FLAG   0x0e
 
#define MRB_SPECIAL_SHIFT   8
 
#define MRB_SYMBOL_BITSIZE   (sizeof(mrb_sym) * CHAR_BIT - MRB_SPECIAL_SHIFT)
 
#define MRB_SYMBOL_MAX   (UINT32_MAX >> MRB_SPECIAL_SHIFT)
 
#define mrb_float_pool(mrb, f)   mrb_word_boxing_float_pool(mrb,f)
 
#define mrb_ptr(o)   (o).value.p
 
#define mrb_cptr(o)   (o).value.vp->p
 
#define mrb_float(o)   (o).value.fp->f
 
#define mrb_fixnum(o)   ((mrb_int)(o).value.i)
 
#define mrb_symbol(o)   (o).value.sym
 
#define mrb_bool(o)   ((o).w != MRB_Qnil && (o).w != MRB_Qfalse)
 
#define mrb_fixnum_p(o)   ((o).value.i_flag == MRB_FIXNUM_FLAG)
 
#define mrb_undef_p(o)   ((o).w == MRB_Qundef)
 
#define mrb_nil_p(o)   ((o).w == MRB_Qnil)
 
#define mrb_false_p(o)   ((o).w == MRB_Qfalse)
 
#define mrb_true_p(o)   ((o).w == MRB_Qtrue)
 
#define SET_FLOAT_VALUE(mrb, r, v)   ((r) = mrb_word_boxing_float_value(mrb, v))
 
#define SET_CPTR_VALUE(mrb, r, v)   ((r) = mrb_word_boxing_cptr_value(mrb, v))
 
#define SET_UNDEF_VALUE(r)   ((r).w = MRB_Qundef)
 
#define SET_NIL_VALUE(r)   ((r).w = MRB_Qnil)
 
#define SET_FALSE_VALUE(r)   ((r).w = MRB_Qfalse)
 
#define SET_TRUE_VALUE(r)   ((r).w = MRB_Qtrue)
 
#define SET_BOOL_VALUE(r, b)   ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
 
#define SET_INT_VALUE(r, n)
 
#define SET_SYM_VALUE(r, v)
 
#define SET_OBJ_VALUE(r, v)
 

Typedefs

typedef union mrb_value mrb_value
 

Enumerations

enum  mrb_special_consts { MRB_Qnil = 0, MRB_Qfalse = 2, MRB_Qtrue = 4, MRB_Qundef = 6 }
 

Functions

MRB_API mrb_value mrb_word_boxing_cptr_value (struct mrb_state *, void *)
 
MRB_API mrb_value mrb_word_boxing_float_value (struct mrb_state *, mrb_float)
 
MRB_API mrb_value mrb_word_boxing_float_pool (struct mrb_state *, mrb_float)
 
MRB_INLINE enum mrb_vtype mrb_type (mrb_value o)
 

Detailed Description

See Copyright Notice in mruby.h

Macro Definition Documentation

◆ SET_INT_VALUE

#define SET_INT_VALUE (   r,
 
)
Value:
do { \
(r).w = 0; \
(r).value.i_flag = MRB_FIXNUM_FLAG; \
(r).value.i = (n); \
} while (0)

◆ SET_OBJ_VALUE

#define SET_OBJ_VALUE (   r,
 
)
Value:
do { \
(r).w = 0; \
(r).value.p = (v); \
} while (0)

◆ SET_SYM_VALUE

#define SET_SYM_VALUE (   r,
 
)
Value:
do { \
(r).w = 0; \
(r).value.sym_flag = MRB_SYMBOL_FLAG; \
(r).value.sym = (v); \
} while (0)