Mercurial > hg > xemacs-beta
comparison src/lisp-disunion.h @ 380:8626e4521993 r21-2-5
Import from CVS: tag r21-2-5
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:07:10 +0200 |
parents | 5a79be0ef6a8 |
children | 74fd4e045ea6 |
comparison
equal
deleted
inserted
replaced
379:76b7d63099ad | 380:8626e4521993 |
---|---|
107 | 107 |
108 typedef EMACS_INT Lisp_Object; | 108 typedef EMACS_INT Lisp_Object; |
109 | 109 |
110 #ifdef USE_MINIMAL_TAGBITS | 110 #ifdef USE_MINIMAL_TAGBITS |
111 | 111 |
112 # define Lisp_Type_Int_Bit (Lisp_Type_Int_Even & Lisp_Type_Int_Odd) | |
112 # define XUNMARK(x) DO_NOTHING | 113 # define XUNMARK(x) DO_NOTHING |
113 # define make_obj(vartype, x) ((Lisp_Object) (x)) | 114 # define make_obj(vartype, x) ((Lisp_Object) (x)) |
114 # define make_int(x) ((Lisp_Object) (((x) << INT_GCBITS) + 1)) | 115 # define make_int(x) ((Lisp_Object) (((x) << INT_GCBITS) | Lisp_Type_Int_Bit)) |
115 # define make_char(x) ((Lisp_Object) (((x) << GCBITS) + Lisp_Type_Char)) | 116 # define make_char(x) ((Lisp_Object) (((x) << GCBITS) | Lisp_Type_Char)) |
116 # define VALMASK (((1UL << VALBITS) - 1UL) << GCTYPEBITS) | 117 # define VALMASK (((1UL << VALBITS) - 1UL) << GCTYPEBITS) |
117 # define XTYPE(x) ((enum Lisp_Type) (((EMACS_UINT)(x)) & ~VALMASK)) | 118 # define XTYPE(x) ((enum Lisp_Type) (((EMACS_UINT)(x)) & ~VALMASK)) |
118 # define XPNTRVAL(x) (x) /* This depends on Lisp_Type_Record == 0 */ | 119 # define XPNTRVAL(x) (x) /* This depends on Lisp_Type_Record == 0 */ |
119 # define XCHARVAL(x) ((x) >> GCBITS) | 120 # define XCHARVAL(x) ((x) >> GCBITS) |
120 # define GC_EQ(x,y) EQ (x,y) | 121 # define GC_EQ(x,y) EQ (x,y) |
121 # define XREALINT(x) ((x) >> INT_GCBITS) | 122 # define XREALINT(x) ((x) >> INT_GCBITS) |
122 # define XUINT(x) ((EMACS_UINT)(x) >> INT_GCBITS) | 123 # define XUINT(x) ((EMACS_UINT)(x) >> INT_GCBITS) |
123 # define INTP(x) ((EMACS_UINT)(x) & 1) | 124 # define INTP(x) ((EMACS_UINT)(x) & Lisp_Type_Int_Bit) |
124 # define Qzero ((Lisp_Object) 1UL) | |
125 | 125 |
126 #else /* !USE_MINIMAL_TAGBITS */ | 126 #else /* !USE_MINIMAL_TAGBITS */ |
127 | 127 |
128 # define MARKBIT (1UL << VALBITS) | 128 # define MARKBIT (1UL << VALBITS) |
129 # define XMARKBIT(x) (((x) & MARKBIT) != 0) | 129 # define XMARKBIT(x) (((x) & MARKBIT) != 0) |
140 # define XCHARVAL(x) XPNTRVAL(x) | 140 # define XCHARVAL(x) XPNTRVAL(x) |
141 # define GC_EQ(x,y) (((x) & ~MARKBIT) == ((y) & ~MARKBIT)) | 141 # define GC_EQ(x,y) (((x) & ~MARKBIT) == ((y) & ~MARKBIT)) |
142 # define XREALINT(x) (((x) << INT_GCBITS) >> INT_GCBITS) | 142 # define XREALINT(x) (((x) << INT_GCBITS) >> INT_GCBITS) |
143 # define XUINT(x) ((EMACS_UINT) ((x) & VALMASK)) | 143 # define XUINT(x) ((EMACS_UINT) ((x) & VALMASK)) |
144 # define INTP(x) (XTYPE (x) == Lisp_Type_Int) | 144 # define INTP(x) (XTYPE (x) == Lisp_Type_Int) |
145 # define Qzero ((Lisp_Object) Lisp_Type_Int) | |
146 | 145 |
147 #endif /* !USE_MINIMAL_TAGBITS */ | 146 #endif /* !USE_MINIMAL_TAGBITS */ |
148 | 147 |
149 #define Qnull_pointer 0 | 148 #define Qzero make_int (0) |
149 #define Qnull_pointer ((Lisp_Object) 0) | |
150 #define XGCTYPE(x) XTYPE(x) | 150 #define XGCTYPE(x) XTYPE(x) |
151 #define EQ(x,y) ((x) == (y)) | 151 #define EQ(x,y) ((x) == (y)) |
152 #define XSETINT(var, value) ((void) ((var) = make_int (value))) | 152 #define XSETINT(var, value) ((void) ((var) = make_int (value))) |
153 #define XSETCHAR(var, value) ((void) ((var) = make_char (value))) | 153 #define XSETCHAR(var, value) ((void) ((var) = make_char (value))) |
154 #define XSETOBJ(var, vartype, value) ((void) ((var) = make_obj (vartype, value))) | 154 #define XSETOBJ(var, vartype, value) ((void) ((var) = make_obj (vartype, value))) |