aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1995-04-10 00:31:47 +0000
committerRichard M. Stallman1995-04-10 00:31:47 +0000
commita7aa28f61701529070f3b4396ee1397ed012522a (patch)
tree3018e919ea9879ebfaa14e033f9be6569eace1af /src
parent8b5b51ce5df809290ebb5fbc58e37a289bd5bd2e (diff)
downloademacs-a7aa28f61701529070f3b4396ee1397ed012522a.tar.gz
emacs-a7aa28f61701529070f3b4396ee1397ed012522a.zip
(XMISCTYPE): New macro.
(union Lisp_Misc): Delete the `type' field. Use XMISCTYPE instead of that.
Diffstat (limited to 'src')
-rw-r--r--src/lisp.h43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/lisp.h b/src/lisp.h
index c1460739b1a..4a38de6a61a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -377,6 +377,7 @@ extern int pure_size;
377 377
378/* Misc types. */ 378/* Misc types. */
379#define XMISC(a) ((union Lisp_Misc *) XPNTR(a)) 379#define XMISC(a) ((union Lisp_Misc *) XPNTR(a))
380#define XMISCTYPE(a) (XMARKER (a)->type)
380#define XMARKER(a) (&(XMISC(a)->u_marker)) 381#define XMARKER(a) (&(XMISC(a)->u_marker))
381#define XINTFWD(a) (&(XMISC(a)->u_intfwd)) 382#define XINTFWD(a) (&(XMISC(a)->u_intfwd))
382#define XBOOLFWD(a) (&(XMISC(a)->u_boolfwd)) 383#define XBOOLFWD(a) (&(XMISC(a)->u_boolfwd))
@@ -404,7 +405,7 @@ extern int pure_size;
404 405
405/* Misc types. */ 406/* Misc types. */
406#define XSETMISC(a, b) XSET (a, Lisp_Misc, b) 407#define XSETMISC(a, b) XSET (a, Lisp_Misc, b)
407#define XSETMARKER(a, b) (XSETMISC (a, b), XMISC (a)->type = Lisp_Misc_Marker) 408#define XSETMARKER(a, b) (XSETMISC (a, b), XMISCTYPE (a) = Lisp_Misc_Marker)
408 409
409/* Pseudovector types. */ 410/* Pseudovector types. */
410#define XSETPSEUDOVECTOR(a, b, code) \ 411#define XSETPSEUDOVECTOR(a, b, code) \
@@ -772,9 +773,11 @@ struct Lisp_Kboard_Objfwd
772 }; 773 };
773 774
774 775
776/* To get the type field of a union Lisp_Misc, use XMISCTYPE.
777 It uses one of these struct subtypes to get the type field. */
778
775union Lisp_Misc 779union Lisp_Misc
776 { 780 {
777 int type : 16;
778 struct Lisp_Free u_free; 781 struct Lisp_Free u_free;
779 struct Lisp_Marker u_marker; 782 struct Lisp_Marker u_marker;
780 struct Lisp_Intfwd u_intfwd; 783 struct Lisp_Intfwd u_intfwd;
@@ -926,24 +929,24 @@ typedef unsigned char UCHAR;
926#endif 929#endif
927#define VECTORP(x) (VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG)) 930#define VECTORP(x) (VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG))
928#define GC_VECTORP(x) (GC_VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG)) 931#define GC_VECTORP(x) (GC_VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG))
929#define OVERLAYP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Overlay) 932#define OVERLAYP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay)
930#define GC_OVERLAYP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Overlay) 933#define GC_OVERLAYP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay)
931#define MARKERP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Marker) 934#define MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker)
932#define GC_MARKERP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Marker) 935#define GC_MARKERP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker)
933#define INTFWDP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Intfwd) 936#define INTFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Intfwd)
934#define GC_INTFWDP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Intfwd) 937#define GC_INTFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Intfwd)
935#define BOOLFWDP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Boolfwd) 938#define BOOLFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Boolfwd)
936#define GC_BOOLFWDP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Boolfwd) 939#define GC_BOOLFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Boolfwd)
937#define OBJFWDP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Objfwd) 940#define OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Objfwd)
938#define GC_OBJFWDP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Objfwd) 941#define GC_OBJFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Objfwd)
939#define BUFFER_OBJFWDP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Buffer_Objfwd) 942#define BUFFER_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Objfwd)
940#define GC_BUFFER_OBJFWDP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Buffer_Objfwd) 943#define GC_BUFFER_OBJFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Objfwd)
941#define BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Buffer_Local_Value) 944#define BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Local_Value)
942#define GC_BUFFER_LOCAL_VALUEP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Buffer_Local_Value) 945#define GC_BUFFER_LOCAL_VALUEP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Local_Value)
943#define SOME_BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Some_Buffer_Local_Value) 946#define SOME_BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Some_Buffer_Local_Value)
944#define GC_SOME_BUFFER_LOCAL_VALUEP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Some_Buffer_Local_Value) 947#define GC_SOME_BUFFER_LOCAL_VALUEP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Some_Buffer_Local_Value)
945#define KBOARD_OBJFWDP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Kboard_Objfwd) 948#define KBOARD_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Kboard_Objfwd)
946#define GC_KBOARD_OBJFWDP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Kboard_Objfwd) 949#define GC_KBOARD_OBJFWDP(x) (GC_MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Kboard_Objfwd)
947 950
948 951
949/* True if object X is a pseudovector whose code is CODE. */ 952/* True if object X is a pseudovector whose code is CODE. */