w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

boxing_word.h File Reference

Go to the source code of this file.

Classes

struct  RFloat
 
struct  RInteger
 
struct  mrb_value
 
union  mrb_value_
 

Macros

#define MRB_FIXNUM_SHIFT   BOXWORD_FIXNUM_SHIFT
 
#define MRB_SYMBOL_SHIFT   BOXWORD_SYMBOL_SHIFT
 
#define MRB_FIXNUM_MIN   (INT32_MIN>>MRB_FIXNUM_SHIFT)
 
#define MRB_FIXNUM_MAX   (INT32_MAX>>MRB_FIXNUM_SHIFT)
 
#define BOXWORD_FIXNUM_BIT_POS   1
 
#define BOXWORD_SYMBOL_BIT_POS   2
 
#define BOXWORD_FIXNUM_SHIFT   BOXWORD_FIXNUM_BIT_POS
 
#define BOXWORD_SYMBOL_SHIFT   BOXWORD_SYMBOL_BIT_POS
 
#define BOXWORD_FIXNUM_FLAG   (1 << (BOXWORD_FIXNUM_BIT_POS - 1))
 
#define BOXWORD_SYMBOL_FLAG   (1 << (BOXWORD_SYMBOL_BIT_POS - 1))
 
#define BOXWORD_FIXNUM_MASK   ((1 << BOXWORD_FIXNUM_BIT_POS) - 1)
 
#define BOXWORD_SYMBOL_MASK   ((1 << BOXWORD_SYMBOL_BIT_POS) - 1)
 
#define BOXWORD_IMMEDIATE_MASK   0x07
 
#define BOXWORD_SET_SHIFT_VALUE(o, n, v)    ((o).w = (((uintptr_t)(v)) << BOXWORD_##n##_SHIFT) | BOXWORD_##n##_FLAG)
 
#define BOXWORD_SHIFT_VALUE_P(o, n)    (((o).w & BOXWORD_##n##_MASK) == BOXWORD_##n##_FLAG)
 
#define BOXWORD_OBJ_TYPE_P(o, n)    (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
 
#define mrb_immediate_p(o)   ((o).w & BOXWORD_IMMEDIATE_MASK || (o).w == MRB_Qnil)
 
#define mrb_ptr(o)   mrb_val_union(o).p
 
#define mrb_cptr(o)   mrb_val_union(o).vp->p
 
#define mrb_float(o)   mrb_val_union(o).fp->f
 
#define mrb_fixnum(o)   (mrb_int)(((intptr_t)(o).w) >> BOXWORD_FIXNUM_SHIFT)
 
#define mrb_integer(o)   mrb_integer_func(o)
 
#define mrb_symbol(o)   (mrb_sym)(((o).w) >> BOXWORD_SYMBOL_SHIFT)
 
#define mrb_bool(o)   (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
 
#define mrb_fixnum_p(o)   BOXWORD_SHIFT_VALUE_P(o, FIXNUM)
 
#define mrb_integer_p(o)   (BOXWORD_SHIFT_VALUE_P(o, FIXNUM)||BOXWORD_OBJ_TYPE_P(o, INTEGER))
 
#define mrb_symbol_p(o)   BOXWORD_SHIFT_VALUE_P(o, SYMBOL)
 
#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 mrb_float_p(o)   BOXWORD_OBJ_TYPE_P(o, FLOAT)
 
#define mrb_array_p(o)   BOXWORD_OBJ_TYPE_P(o, ARRAY)
 
#define mrb_string_p(o)   BOXWORD_OBJ_TYPE_P(o, STRING)
 
#define mrb_hash_p(o)   BOXWORD_OBJ_TYPE_P(o, HASH)
 
#define mrb_cptr_p(o)   BOXWORD_OBJ_TYPE_P(o, CPTR)
 
#define mrb_exception_p(o)   BOXWORD_OBJ_TYPE_P(o, EXCEPTION)
 
#define mrb_free_p(o)   BOXWORD_OBJ_TYPE_P(o, FREE)
 
#define mrb_object_p(o)   BOXWORD_OBJ_TYPE_P(o, OBJECT)
 
#define mrb_class_p(o)   BOXWORD_OBJ_TYPE_P(o, CLASS)
 
#define mrb_module_p(o)   BOXWORD_OBJ_TYPE_P(o, MODULE)
 
#define mrb_iclass_p(o)   BOXWORD_OBJ_TYPE_P(o, ICLASS)
 
#define mrb_sclass_p(o)   BOXWORD_OBJ_TYPE_P(o, SCLASS)
 
#define mrb_proc_p(o)   BOXWORD_OBJ_TYPE_P(o, PROC)
 
#define mrb_range_p(o)   BOXWORD_OBJ_TYPE_P(o, RANGE)
 
#define mrb_env_p(o)   BOXWORD_OBJ_TYPE_P(o, ENV)
 
#define mrb_data_p(o)   BOXWORD_OBJ_TYPE_P(o, DATA)
 
#define mrb_fiber_p(o)   BOXWORD_OBJ_TYPE_P(o, FIBER)
 
#define mrb_istruct_p(o)   BOXWORD_OBJ_TYPE_P(o, ISTRUCT)
 
#define mrb_break_p(o)   BOXWORD_OBJ_TYPE_P(o, BREAK)
 
#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(mrb, r, n)   ((r) = mrb_word_boxing_int_value(mrb, n))
 
#define SET_FIXNUM_VALUE(r, n)   BOXWORD_SET_SHIFT_VALUE(r, FIXNUM, n)
 
#define SET_SYM_VALUE(r, n)   BOXWORD_SET_SHIFT_VALUE(r, SYMBOL, n)
 
#define SET_OBJ_VALUE(r, v)   ((r).w = (uintptr_t)(v))
 

Typedefs

typedef struct mrb_value mrb_value
 

Enumerations

enum  mrb_special_consts { MRB_Qnil = 0 , MRB_Qfalse = 4 , MRB_Qtrue = 12 , MRB_Qundef = 20 }
 

Functions

 mrb_static_assert1 (sizeof(mrb_value)==sizeof(union mrb_value_))
 
static union mrb_value_ mrb_val_union (mrb_value v)
 
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_int_value (struct mrb_state *, mrb_int)
 
MRB_INLINE mrb_int mrb_integer_func (mrb_value o)
 
MRB_INLINE enum mrb_vtype mrb_type (mrb_value o)
 

Detailed Description

See Copyright Notice in mruby.h

Definition in file boxing_word.h.

Macro Definition Documentation

◆ BOXWORD_FIXNUM_BIT_POS

#define BOXWORD_FIXNUM_BIT_POS   1

Definition at line 44 of file boxing_word.h.

◆ BOXWORD_FIXNUM_FLAG

#define BOXWORD_FIXNUM_FLAG   (1 << (BOXWORD_FIXNUM_BIT_POS - 1))

Definition at line 52 of file boxing_word.h.

◆ BOXWORD_FIXNUM_MASK

#define BOXWORD_FIXNUM_MASK   ((1 << BOXWORD_FIXNUM_BIT_POS) - 1)

Definition at line 54 of file boxing_word.h.

◆ BOXWORD_FIXNUM_SHIFT

#define BOXWORD_FIXNUM_SHIFT   BOXWORD_FIXNUM_BIT_POS

Definition at line 46 of file boxing_word.h.

◆ BOXWORD_IMMEDIATE_MASK

#define BOXWORD_IMMEDIATE_MASK   0x07

Definition at line 56 of file boxing_word.h.

◆ BOXWORD_OBJ_TYPE_P

#define BOXWORD_OBJ_TYPE_P (   o,
  n 
)     (!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)

Definition at line 62 of file boxing_word.h.

◆ BOXWORD_SET_SHIFT_VALUE

#define BOXWORD_SET_SHIFT_VALUE (   o,
  n,
  v 
)     ((o).w = (((uintptr_t)(v)) << BOXWORD_##n##_SHIFT) | BOXWORD_##n##_FLAG)

Definition at line 58 of file boxing_word.h.

◆ BOXWORD_SHIFT_VALUE_P

#define BOXWORD_SHIFT_VALUE_P (   o,
  n 
)     (((o).w & BOXWORD_##n##_MASK) == BOXWORD_##n##_FLAG)

Definition at line 60 of file boxing_word.h.

◆ BOXWORD_SYMBOL_BIT_POS

#define BOXWORD_SYMBOL_BIT_POS   2

Definition at line 45 of file boxing_word.h.

◆ BOXWORD_SYMBOL_FLAG

#define BOXWORD_SYMBOL_FLAG   (1 << (BOXWORD_SYMBOL_BIT_POS - 1))

Definition at line 53 of file boxing_word.h.

◆ BOXWORD_SYMBOL_MASK

#define BOXWORD_SYMBOL_MASK   ((1 << BOXWORD_SYMBOL_BIT_POS) - 1)

Definition at line 55 of file boxing_word.h.

◆ BOXWORD_SYMBOL_SHIFT

#define BOXWORD_SYMBOL_SHIFT   BOXWORD_SYMBOL_BIT_POS

Definition at line 50 of file boxing_word.h.

◆ mrb_array_p

#define mrb_array_p (   o)    BOXWORD_OBJ_TYPE_P(o, ARRAY)

Definition at line 152 of file boxing_word.h.

◆ mrb_bool

#define mrb_bool (   o)    (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)

Definition at line 136 of file boxing_word.h.

◆ mrb_break_p

#define mrb_break_p (   o)    BOXWORD_OBJ_TYPE_P(o, BREAK)

Definition at line 169 of file boxing_word.h.

◆ mrb_class_p

#define mrb_class_p (   o)    BOXWORD_OBJ_TYPE_P(o, CLASS)

Definition at line 159 of file boxing_word.h.

◆ mrb_cptr

#define mrb_cptr (   o)    mrb_val_union(o).vp->p

Definition at line 120 of file boxing_word.h.

◆ mrb_cptr_p

#define mrb_cptr_p (   o)    BOXWORD_OBJ_TYPE_P(o, CPTR)

Definition at line 155 of file boxing_word.h.

◆ mrb_data_p

#define mrb_data_p (   o)    BOXWORD_OBJ_TYPE_P(o, DATA)

Definition at line 166 of file boxing_word.h.

◆ mrb_env_p

#define mrb_env_p (   o)    BOXWORD_OBJ_TYPE_P(o, ENV)

Definition at line 165 of file boxing_word.h.

◆ mrb_exception_p

#define mrb_exception_p (   o)    BOXWORD_OBJ_TYPE_P(o, EXCEPTION)

Definition at line 156 of file boxing_word.h.

◆ mrb_false_p

#define mrb_false_p (   o)    ((o).w == MRB_Qfalse)

Definition at line 147 of file boxing_word.h.

◆ mrb_fiber_p

#define mrb_fiber_p (   o)    BOXWORD_OBJ_TYPE_P(o, FIBER)

Definition at line 167 of file boxing_word.h.

◆ mrb_fixnum

#define mrb_fixnum (   o)    (mrb_int)(((intptr_t)(o).w) >> BOXWORD_FIXNUM_SHIFT)

Definition at line 124 of file boxing_word.h.

◆ MRB_FIXNUM_MAX

#define MRB_FIXNUM_MAX   (INT32_MAX>>MRB_FIXNUM_SHIFT)

Definition at line 41 of file boxing_word.h.

◆ MRB_FIXNUM_MIN

#define MRB_FIXNUM_MIN   (INT32_MIN>>MRB_FIXNUM_SHIFT)

Definition at line 40 of file boxing_word.h.

◆ mrb_fixnum_p

#define mrb_fixnum_p (   o)    BOXWORD_SHIFT_VALUE_P(o, FIXNUM)

Definition at line 138 of file boxing_word.h.

◆ MRB_FIXNUM_SHIFT

#define MRB_FIXNUM_SHIFT   BOXWORD_FIXNUM_SHIFT

Definition at line 32 of file boxing_word.h.

◆ mrb_float

#define mrb_float (   o)    mrb_val_union(o).fp->f

Definition at line 122 of file boxing_word.h.

◆ mrb_float_p

#define mrb_float_p (   o)    BOXWORD_OBJ_TYPE_P(o, FLOAT)

Definition at line 150 of file boxing_word.h.

◆ mrb_free_p

#define mrb_free_p (   o)    BOXWORD_OBJ_TYPE_P(o, FREE)

Definition at line 157 of file boxing_word.h.

◆ mrb_hash_p

#define mrb_hash_p (   o)    BOXWORD_OBJ_TYPE_P(o, HASH)

Definition at line 154 of file boxing_word.h.

◆ mrb_iclass_p

#define mrb_iclass_p (   o)    BOXWORD_OBJ_TYPE_P(o, ICLASS)

Definition at line 161 of file boxing_word.h.

◆ mrb_immediate_p

#define mrb_immediate_p (   o)    ((o).w & BOXWORD_IMMEDIATE_MASK || (o).w == MRB_Qnil)

Definition at line 117 of file boxing_word.h.

◆ mrb_integer

#define mrb_integer (   o)    mrb_integer_func(o)

Definition at line 130 of file boxing_word.h.

◆ mrb_integer_p

#define mrb_integer_p (   o)    (BOXWORD_SHIFT_VALUE_P(o, FIXNUM)||BOXWORD_OBJ_TYPE_P(o, INTEGER))

Definition at line 139 of file boxing_word.h.

◆ mrb_istruct_p

#define mrb_istruct_p (   o)    BOXWORD_OBJ_TYPE_P(o, ISTRUCT)

Definition at line 168 of file boxing_word.h.

◆ mrb_module_p

#define mrb_module_p (   o)    BOXWORD_OBJ_TYPE_P(o, MODULE)

Definition at line 160 of file boxing_word.h.

◆ mrb_nil_p

#define mrb_nil_p (   o)    ((o).w == MRB_Qnil)

Definition at line 146 of file boxing_word.h.

◆ mrb_object_p

#define mrb_object_p (   o)    BOXWORD_OBJ_TYPE_P(o, OBJECT)

Definition at line 158 of file boxing_word.h.

◆ mrb_proc_p

#define mrb_proc_p (   o)    BOXWORD_OBJ_TYPE_P(o, PROC)

Definition at line 163 of file boxing_word.h.

◆ mrb_ptr

#define mrb_ptr (   o)    mrb_val_union(o).p

Definition at line 119 of file boxing_word.h.

◆ mrb_range_p

#define mrb_range_p (   o)    BOXWORD_OBJ_TYPE_P(o, RANGE)

Definition at line 164 of file boxing_word.h.

◆ mrb_sclass_p

#define mrb_sclass_p (   o)    BOXWORD_OBJ_TYPE_P(o, SCLASS)

Definition at line 162 of file boxing_word.h.

◆ mrb_string_p

#define mrb_string_p (   o)    BOXWORD_OBJ_TYPE_P(o, STRING)

Definition at line 153 of file boxing_word.h.

◆ mrb_symbol

#define mrb_symbol (   o)    (mrb_sym)(((o).w) >> BOXWORD_SYMBOL_SHIFT)

Definition at line 134 of file boxing_word.h.

◆ mrb_symbol_p

#define mrb_symbol_p (   o)    BOXWORD_SHIFT_VALUE_P(o, SYMBOL)

Definition at line 143 of file boxing_word.h.

◆ MRB_SYMBOL_SHIFT

#define MRB_SYMBOL_SHIFT   BOXWORD_SYMBOL_SHIFT

Definition at line 34 of file boxing_word.h.

◆ mrb_true_p

#define mrb_true_p (   o)    ((o).w == MRB_Qtrue)

Definition at line 148 of file boxing_word.h.

◆ mrb_undef_p

#define mrb_undef_p (   o)    ((o).w == MRB_Qundef)

Definition at line 145 of file boxing_word.h.

◆ SET_BOOL_VALUE

#define SET_BOOL_VALUE (   r,
  b 
)    ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))

Definition at line 179 of file boxing_word.h.

◆ SET_CPTR_VALUE

#define SET_CPTR_VALUE (   mrb,
  r,
  v 
)    ((r) = mrb_word_boxing_cptr_value(mrb, v))

Definition at line 174 of file boxing_word.h.

◆ SET_FALSE_VALUE

#define SET_FALSE_VALUE (   r)    ((r).w = MRB_Qfalse)

Definition at line 177 of file boxing_word.h.

◆ SET_FIXNUM_VALUE

#define SET_FIXNUM_VALUE (   r,
  n 
)    BOXWORD_SET_SHIFT_VALUE(r, FIXNUM, n)

Definition at line 181 of file boxing_word.h.

◆ SET_FLOAT_VALUE

#define SET_FLOAT_VALUE (   mrb,
  r,
  v 
)    ((r) = mrb_word_boxing_float_value(mrb, v))

Definition at line 172 of file boxing_word.h.

◆ SET_INT_VALUE

#define SET_INT_VALUE (   mrb,
  r,
  n 
)    ((r) = mrb_word_boxing_int_value(mrb, n))

Definition at line 180 of file boxing_word.h.

◆ SET_NIL_VALUE

#define SET_NIL_VALUE (   r)    ((r).w = MRB_Qnil)

Definition at line 176 of file boxing_word.h.

◆ SET_OBJ_VALUE

#define SET_OBJ_VALUE (   r,
  v 
)    ((r).w = (uintptr_t)(v))

Definition at line 192 of file boxing_word.h.

◆ SET_SYM_VALUE

#define SET_SYM_VALUE (   r,
  n 
)    BOXWORD_SET_SHIFT_VALUE(r, SYMBOL, n)

Definition at line 190 of file boxing_word.h.

◆ SET_TRUE_VALUE

#define SET_TRUE_VALUE (   r)    ((r).w = MRB_Qtrue)

Definition at line 178 of file boxing_word.h.

◆ SET_UNDEF_VALUE

#define SET_UNDEF_VALUE (   r)    ((r).w = MRB_Qundef)

Definition at line 175 of file boxing_word.h.

Typedef Documentation

◆ mrb_value

typedef struct mrb_value mrb_value

Enumeration Type Documentation

◆ mrb_special_consts

Enumerator
MRB_Qnil 
MRB_Qfalse 
MRB_Qtrue 
MRB_Qundef 

Definition at line 22 of file boxing_word.h.

Function Documentation

◆ mrb_integer_func()

MRB_INLINE mrb_int mrb_integer_func ( mrb_value  o)

Definition at line 126 of file boxing_word.h.

References RInteger::i, mrb_value_::ip, mrb_fixnum, mrb_immediate_p, and mrb_val_union().

◆ mrb_static_assert1()

mrb_static_assert1 ( sizeof(mrb_value = =sizeof(union mrb_value_))

◆ mrb_type()

◆ mrb_val_union()

static union mrb_value_ mrb_val_union ( mrb_value  v)
static

Definition at line 101 of file boxing_word.h.

Referenced by mrb_integer_func(), and mrb_type().

◆ mrb_word_boxing_cptr_value()

MRB_API mrb_value mrb_word_boxing_cptr_value ( struct mrb_state mrb,
void p 
)

Definition at line 185 of file etc.c.

References mrb_obj_alloc(), MRB_TT_CPTR, mrb_state::object_class, p, SET_OBJ_VALUE, and v.

◆ mrb_word_boxing_float_value()

MRB_API mrb_value mrb_word_boxing_float_value ( struct mrb_state mrb,
mrb_float  f 
)

Definition at line 157 of file etc.c.

References f, mrb_state::float_class, mrb_obj_alloc(), MRB_SET_FROZEN_FLAG, MRB_TT_FLOAT, and v.

◆ mrb_word_boxing_int_value()

MRB_API mrb_value mrb_word_boxing_int_value ( struct mrb_state mrb,
mrb_int  n 
)