diff options
| author | Karl Heuer | 1994-11-18 06:50:02 +0000 |
|---|---|---|
| committer | Karl Heuer | 1994-11-18 06:50:02 +0000 |
| commit | b5088f8084d2e9250650a4b58ac2111ac1ff2d96 (patch) | |
| tree | 435305ba9eeb56115b77ea4388676c68c488a037 /src | |
| parent | 76437631034878f5a3ee9bd0bf58c8367708af4c (diff) | |
| download | emacs-b5088f8084d2e9250650a4b58ac2111ac1ff2d96.tar.gz emacs-b5088f8084d2e9250650a4b58ac2111ac1ff2d96.zip | |
(enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Lisp_Window_Configuration as obsolete.
(PSEUDOVECTOR_FLAG, PSEUDOVECTOR_SIZE_MASK, PVEC_BUFFER, PVEC_PROCESS,
PVEC_FRAME, PVEC_COMPILED, PVEC_WINDOW, PVEC_WINDOW_CONFIGURATION): New
constants.
(XSETPSEUDOVECTOR, PSEUDOVECTORP, VECTORLIKEP): New macros.
(XSETVECTOR, XSETWINDOW_CONFIGURATION, VECTORP, WINDOW_CONFIGURATIONP): Use
the new convention.
(XSETCOMPILED): New macro.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lisp.h | 48 |
1 files changed, 37 insertions, 11 deletions
diff --git a/src/lisp.h b/src/lisp.h index ff2edc2ae67..1b773b2fa65 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -46,9 +46,11 @@ enum Lisp_Type | |||
| 46 | The length of the string, and its contents, are stored therein. */ | 46 | The length of the string, and its contents, are stored therein. */ |
| 47 | Lisp_String, | 47 | Lisp_String, |
| 48 | 48 | ||
| 49 | /* Vector of Lisp objects. XVECTOR(object) points to a struct Lisp_Vector. | 49 | /* Vector of Lisp objects, or something resembling it. |
| 50 | The length of the vector, and its contents, are stored therein. */ | 50 | XVECTOR(object) points to a struct Lisp_Vector, which contains |
| 51 | Lisp_Vector, | 51 | the size and contents. The size field also contains the type |
| 52 | information, if it's not a real vector object. */ | ||
| 53 | Lisp_Vectorlike, | ||
| 52 | 54 | ||
| 53 | /* Cons. XCONS (object) points to a struct Lisp_Cons. */ | 55 | /* Cons. XCONS (object) points to a struct Lisp_Cons. */ |
| 54 | Lisp_Cons, | 56 | Lisp_Cons, |
| @@ -83,7 +85,7 @@ enum Lisp_Type | |||
| 83 | Lisp_Window, | 85 | Lisp_Window, |
| 84 | 86 | ||
| 85 | /* Used by save,set,restore-window-configuration */ | 87 | /* Used by save,set,restore-window-configuration */ |
| 86 | Lisp_Window_Configuration, | 88 | OBSOLETE_Lisp_Window_Configuration, |
| 87 | 89 | ||
| 88 | #ifdef LISP_FLOAT_TYPE | 90 | #ifdef LISP_FLOAT_TYPE |
| 89 | Lisp_Float, | 91 | Lisp_Float, |
| @@ -218,7 +220,26 @@ Lisp_Object; | |||
| 218 | #define ARRAY_MARK_FLAG ((MARKBIT >> 1) & ~MARKBIT) | 220 | #define ARRAY_MARK_FLAG ((MARKBIT >> 1) & ~MARKBIT) |
| 219 | #endif /* no ARRAY_MARK_FLAG */ | 221 | #endif /* no ARRAY_MARK_FLAG */ |
| 220 | 222 | ||
| 221 | #if ARRAY_MARK_FLAG == MARKBIT | 223 | /* In the size word of a struct Lisp_Vector, this bit means it's really |
| 224 | some other vector-like object. */ | ||
| 225 | #ifndef PSEUDOVECTOR_FLAG | ||
| 226 | #define PSEUDOVECTOR_FLAG ((ARRAY_MARK_FLAG >> 1) & ~ARRAY_MARK_FLAG) | ||
| 227 | #endif | ||
| 228 | |||
| 229 | /* In a pseudo-vector, the size field actually contains a word with one | ||
| 230 | PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to | ||
| 231 | indicate the actual type. */ | ||
| 232 | #define PVEC_BUFFER 0x100 | ||
| 233 | #define PVEC_PROCESS 0x200 | ||
| 234 | #define PVEC_FRAME 0x400 | ||
| 235 | #define PVEC_COMPILED 0x800 | ||
| 236 | #define PVEC_WINDOW 0x1000 | ||
| 237 | #define PVEC_WINDOW_CONFIGURATION 0x2000 | ||
| 238 | |||
| 239 | /* For convenience, we also store the number of elements in these bits. */ | ||
| 240 | #define PSEUDOVECTOR_SIZE_MASK 0xff | ||
| 241 | |||
| 242 | #if ARRAY_MARK_FLAG == MARKBIT || PSEUDOVECTOR_FLAG == ARRAY_MARK_FLAG || PSEUDOVECTOR_FLAG == MARKBIT | ||
| 222 | you lose | 243 | you lose |
| 223 | #endif | 244 | #endif |
| 224 | 245 | ||
| @@ -381,7 +402,7 @@ extern int pure_size; | |||
| 381 | #define XSETINT(a, b) XSET (a, Lisp_Int, b) | 402 | #define XSETINT(a, b) XSET (a, Lisp_Int, b) |
| 382 | #define XSETCONS(a, b) XSET (a, Lisp_Cons, b) | 403 | #define XSETCONS(a, b) XSET (a, Lisp_Cons, b) |
| 383 | #define XSETBUFFER(a, b) XSET (a, Lisp_Buffer, b) | 404 | #define XSETBUFFER(a, b) XSET (a, Lisp_Buffer, b) |
| 384 | #define XSETVECTOR(a, b) XSET (a, Lisp_Vector, b) | 405 | #define XSETVECTOR(a, b) XSET (a, Lisp_Vectorlike, b) |
| 385 | #define XSETSUBR(a, b) XSET (a, Lisp_Subr, b) | 406 | #define XSETSUBR(a, b) XSET (a, Lisp_Subr, b) |
| 386 | #define XSETSTRING(a, b) XSET (a, Lisp_String, b) | 407 | #define XSETSTRING(a, b) XSET (a, Lisp_String, b) |
| 387 | #define XSETSYMBOL(a, b) XSET (a, Lisp_Symbol, b) | 408 | #define XSETSYMBOL(a, b) XSET (a, Lisp_Symbol, b) |
| @@ -389,7 +410,8 @@ extern int pure_size; | |||
| 389 | #define XSETWINDOW(a, b) XSET (a, Lisp_Window, b) | 410 | #define XSETWINDOW(a, b) XSET (a, Lisp_Window, b) |
| 390 | #define XSETPROCESS(a, b) XSET (a, Lisp_Process, b) | 411 | #define XSETPROCESS(a, b) XSET (a, Lisp_Process, b) |
| 391 | #define XSETFLOAT(a, b) XSET (a, Lisp_Float, b) | 412 | #define XSETFLOAT(a, b) XSET (a, Lisp_Float, b) |
| 392 | #define XSETWINDOW_CONFIGURATION(a, b) XSET (a, Lisp_Window_Configuration, b) | 413 | #define XSETPSEUDOVECTOR(a, b, code) (XSETVECTOR (a, b), XVECTOR (a)->size |= PSEUDOVECTOR_FLAG | (code)) |
| 414 | #define XSETWINDOW_CONFIGURATION(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW_CONFIGURATION)) | ||
| 393 | #define XSETCOMPILED(a, b) XSET (a, Lisp_Compiled, b) | 415 | #define XSETCOMPILED(a, b) XSET (a, Lisp_Compiled, b) |
| 394 | #define XSETMARKER(a, b) (XSETMISC (a, b), XMISC (a)->type = Lisp_Misc_Marker) | 416 | #define XSETMARKER(a, b) (XSETMISC (a, b), XMISC (a)->type = Lisp_Misc_Marker) |
| 395 | 417 | ||
| @@ -766,10 +788,10 @@ typedef unsigned char UCHAR; | |||
| 766 | #define GC_SYMBOLP(x) (XGCTYPE ((x)) == Lisp_Symbol) | 788 | #define GC_SYMBOLP(x) (XGCTYPE ((x)) == Lisp_Symbol) |
| 767 | #define MISCP(x) (XTYPE ((x)) == Lisp_Misc) | 789 | #define MISCP(x) (XTYPE ((x)) == Lisp_Misc) |
| 768 | #define GC_MISCP(x) (XGCTYPE ((x)) == Lisp_Misc) | 790 | #define GC_MISCP(x) (XGCTYPE ((x)) == Lisp_Misc) |
| 791 | #define VECTORLIKEP(x) (XTYPE ((x)) == Lisp_Vectorlike) | ||
| 792 | #define GC_VECTORLIKEP(x) (XGCTYPE ((x)) == Lisp_Vectorlike) | ||
| 769 | #define STRINGP(x) (XTYPE ((x)) == Lisp_String) | 793 | #define STRINGP(x) (XTYPE ((x)) == Lisp_String) |
| 770 | #define GC_STRINGP(x) (XGCTYPE ((x)) == Lisp_String) | 794 | #define GC_STRINGP(x) (XGCTYPE ((x)) == Lisp_String) |
| 771 | #define VECTORP(x) (XTYPE ((x)) == Lisp_Vector) | ||
| 772 | #define GC_VECTORP(x) (XGCTYPE ((x)) == Lisp_Vector) | ||
| 773 | #define CONSP(x) (XTYPE ((x)) == Lisp_Cons) | 795 | #define CONSP(x) (XTYPE ((x)) == Lisp_Cons) |
| 774 | #define GC_CONSP(x) (XGCTYPE ((x)) == Lisp_Cons) | 796 | #define GC_CONSP(x) (XGCTYPE ((x)) == Lisp_Cons) |
| 775 | #define COMPILEDP(x) (XTYPE ((x)) == Lisp_Compiled) | 797 | #define COMPILEDP(x) (XTYPE ((x)) == Lisp_Compiled) |
| @@ -793,8 +815,10 @@ typedef unsigned char UCHAR; | |||
| 793 | #endif | 815 | #endif |
| 794 | #define WINDOWP(x) (XTYPE ((x)) == Lisp_Window) | 816 | #define WINDOWP(x) (XTYPE ((x)) == Lisp_Window) |
| 795 | #define GC_WINDOWP(x) (XGCTYPE ((x)) == Lisp_Window) | 817 | #define GC_WINDOWP(x) (XGCTYPE ((x)) == Lisp_Window) |
| 796 | #define WINDOW_CONFIGURATIONP(x) (XTYPE ((x)) == Lisp_Window_Configuration) | 818 | #define PSEUDOVECTORP(x, code) (VECTORLIKEP (x) && ((XVECTOR (x)->size & (PSEUDOVECTOR_FLAG | (code)))) == PSEUDOVECTOR_FLAG | (code)) |
| 797 | #define GC_WINDOW_CONFIGURATIONP(x) (XGCTYPE ((x)) == Lisp_Window_Configuration) | 819 | #define GC_PSEUDOVECTORP(x, code) (GC_VECTORLIKEP (x) && ((XVECTOR (x)->size & (PSEUDOVECTOR_FLAG | (code)))) == PSEUDOVECTOR_FLAG | (code)) |
| 820 | #define WINDOW_CONFIGURATIONP(x) PSEUDOVECTORP (x, PVEC_WINDOW_CONFIGURATION) | ||
| 821 | #define GC_WINDOW_CONFIGURATIONP(x) GC_PSEUDOVECTORP (x, PVEC_WINDOW_CONFIGURATION) | ||
| 798 | #ifdef LISP_FLOAT_TYPE | 822 | #ifdef LISP_FLOAT_TYPE |
| 799 | #define FLOATP(x) (XTYPE ((x)) == Lisp_Float) | 823 | #define FLOATP(x) (XTYPE ((x)) == Lisp_Float) |
| 800 | #define GC_FLOATP(x) (XGCTYPE ((x)) == Lisp_Float) | 824 | #define GC_FLOATP(x) (XGCTYPE ((x)) == Lisp_Float) |
| @@ -802,6 +826,8 @@ typedef unsigned char UCHAR; | |||
| 802 | #define FLOATP(x) (0) | 826 | #define FLOATP(x) (0) |
| 803 | #define GC_FLOATP(x) (0) | 827 | #define GC_FLOATP(x) (0) |
| 804 | #endif | 828 | #endif |
| 829 | #define VECTORP(x) (VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG)) | ||
| 830 | #define GC_VECTORP(x) (GC_VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG)) | ||
| 805 | #define OVERLAYP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Overlay) | 831 | #define OVERLAYP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Overlay) |
| 806 | #define GC_OVERLAYP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Overlay) | 832 | #define GC_OVERLAYP(x) (GC_MISCP (x) && XMISC (x)->type == Lisp_Misc_Overlay) |
| 807 | #define MARKERP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Marker) | 833 | #define MARKERP(x) (MISCP (x) && XMISC (x)->type == Lisp_Misc_Marker) |