Diff for /gforth/engine/forth.h between versions 1.15 and 1.16

version 1.15, 2000/11/12 18:14:09 version 1.16, 2001/02/07 09:58:46
Line 72  typedef struct { Line 72  typedef struct {
   UCell lo;    UCell lo;
 } UDCell;  } UDCell;
   
 #define FETCH_DCELL(d,lo,hi)    ((d)=(typeof(d)){(hi),(lo)})  
 #define STORE_DCELL(d,low,high) ({ \  
                                      typeof(d) _d = (d); \  
                                      (low) = _d.lo; \  
                                      (high)= _d.hi; \  
                                  })  
   
 #define LONG2UD(l)      ({UDCell _ud; _ud.hi=0; _ud.lo=(Cell)(l); _ud;})  #define LONG2UD(l)      ({UDCell _ud; _ud.hi=0; _ud.lo=(Cell)(l); _ud;})
 #define UD2LONG(ud)     ((long)(ud.lo))  #define UD2LONG(ud)     ((long)(ud.lo))
 #define DZERO           ((DCell){0,0})  #define DZERO           ((DCell){0,0})
Line 89  typedef struct { Line 82  typedef struct {
 typedef DOUBLE_CELL_TYPE DCell;  typedef DOUBLE_CELL_TYPE DCell;
 typedef unsigned DOUBLE_CELL_TYPE UDCell;  typedef unsigned DOUBLE_CELL_TYPE UDCell;
   
   #define LONG2UD(l)      ((UDCell)(l))
   #define UD2LONG(ud)     ((long)(ud))
   #define DZERO           ((DCell)0)
   
   #endif /* ! defined(BUGGY_LONG_LONG) */
   
 typedef union {  typedef union {
   struct {    struct {
 #ifdef WORDS_BIGENDIAN  #if defined(WORDS_BIGENDIAN)||defined(BUGGY_LONG_LONG)
     Cell high;      Cell high;
     UCell low;      UCell low;
 #else  #else
Line 99  typedef union { Line 98  typedef union {
     Cell high;      Cell high;
 #endif;  #endif;
   } cells;    } cells;
   DCell dcell;    DCell d;
     UDCell ud;
 } Double_Store;  } Double_Store;
   
 #define FETCH_DCELL(d,lo,hi)    ({ \  #define FETCH_DCELL_T(d_,lo,hi,t_)      ({ \
                                      Double_Store _d; \                                       Double_Store _d; \
                                      _d.cells.low = (lo); \                                       _d.cells.low = (lo); \
                                      _d.cells.high = (hi); \                                       _d.cells.high = (hi); \
                                      (d) = _d.dcell; \                                       (d_) = _d.t_; \
                                  })                                   })
   
 #define STORE_DCELL(d,lo,hi)    ({ \  #define STORE_DCELL_T(d_,lo,hi,t_)      ({ \
                                      Double_Store _d; \                                       Double_Store _d; \
                                      _d.dcell = (d); \                                       _d.t_ = (d_); \
                                      (lo) = _d.cells.low; \                                       (lo) = _d.cells.low; \
                                      (hi) = _d.cells.high; \                                       (hi) = _d.cells.high; \
                                  })                                   })
   
 #define LONG2UD(l)      ((UDCell)(l))  #define vm_twoCell2d(d_,lo,hi)  FETCH_DCELL_T(d_,lo,hi,d)
 #define UD2LONG(ud)     ((long)(ud))  #define vm_twoCell2ud(d_,lo,hi) FETCH_DCELL_T(d_,lo,hi,ud)
 #define DZERO           ((DCell)0)  
   
 #endif /* ! defined(BUGGY_LONG_LONG) */  #define vm_d2twoCell(d_,lo,hi)  STORE_DCELL_T(d_,lo,hi,d)
   #define vm_ud2twoCell(d_,lo,hi) STORE_DCELL_T(d_,lo,hi,ud)
   
 #ifdef DIRECT_THREADED  #ifdef DIRECT_THREADED
 typedef Label Xt;  typedef Label Xt;

Removed from v.1.15  
changed lines
  Added in v.1.16


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>