diff options
| author | Jim Blandy | 1993-05-14 14:41:36 +0000 |
|---|---|---|
| committer | Jim Blandy | 1993-05-14 14:41:36 +0000 |
| commit | 20280af7ca3a4c80cd80cd3fd168ce09e9a6b159 (patch) | |
| tree | 4098626fcae79e1e9e5508d4483630b4a6ce08ac /src | |
| parent | 620567645f9c58fcbaf3e39b10ad39d6994769af (diff) | |
| download | emacs-20280af7ca3a4c80cd80cd3fd168ce09e9a6b159.tar.gz emacs-20280af7ca3a4c80cd80cd3fd168ce09e9a6b159.zip | |
* lisp.h (Lisp_Overlay): New tag.
(OVERLAYP): New predicate.
(CHECK_OVERLAY): New type-checker.
(Qoverlayp): New extern declaration.
* buffer.c (Foverlayp): New function.
(Qoverlayp): New atom.
(overlays_at, recenter_overlay_lists): Abort if we encounter an
invalid overlay.
(syms_of_buffer): defsubr Soverlayp; initialize Qoverlayp.
(Fdelete_overlay): Set the overlay's markers to point nowhere.
Use CHECK_OVERLAY instead of signalling a special error.
(Fmove_overlay, Foverlay_put): Use CHECK_OVERLAY instead of
signalling a special error.
(Foverlay_get): Use CHECK_OVERLAY.
* fns.c (internal_equal): Define this for overlays.
* buffer.h (OVERLAY_VALID): Define in terms of OVERLAYP.
* print.c (print): Give overlays their own print syntax.
* alloc.c (mark_object): Treat overlays like conses.
* lisp.h (FLOATP): Define this appropriately when LISP_FLOAT_TYPE
is not defined.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lisp.h | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/lisp.h b/src/lisp.h index 7d69e765695..a13db81a776 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -153,12 +153,19 @@ enum Lisp_Type | |||
| 153 | Lisp_Window, | 153 | Lisp_Window, |
| 154 | 154 | ||
| 155 | /* Used by save,set,restore-window-configuration */ | 155 | /* Used by save,set,restore-window-configuration */ |
| 156 | Lisp_Window_Configuration | 156 | Lisp_Window_Configuration, |
| 157 | 157 | ||
| 158 | #ifdef LISP_FLOAT_TYPE | 158 | #ifdef LISP_FLOAT_TYPE |
| 159 | , | 159 | Lisp_Float, |
| 160 | Lisp_Float | ||
| 161 | #endif /* LISP_FLOAT_TYPE */ | 160 | #endif /* LISP_FLOAT_TYPE */ |
| 161 | |||
| 162 | /* The overlay type. | ||
| 163 | An overlay values is actually a retagged cons, the first in a | ||
| 164 | list of the form | ||
| 165 | ((START . END) nil . PLIST) | ||
| 166 | where START and END are markers in the overlay's buffer, and | ||
| 167 | PLIST is the overlay's property list. */ | ||
| 168 | Lisp_Overlay | ||
| 162 | }; | 169 | }; |
| 163 | 170 | ||
| 164 | #ifndef NO_UNION_TYPE | 171 | #ifndef NO_UNION_TYPE |
| @@ -626,7 +633,12 @@ typedef unsigned char UCHAR; | |||
| 626 | #define FRAMEP(x) (XTYPE ((x)) == Lisp_Frame) | 633 | #define FRAMEP(x) (XTYPE ((x)) == Lisp_Frame) |
| 627 | #define WINDOWP(x) (XTYPE ((x)) == Lisp_Window) | 634 | #define WINDOWP(x) (XTYPE ((x)) == Lisp_Window) |
| 628 | #define WINDOW_CONFIGURATIONP(x) (XTYPE ((x)) == Lisp_Window_Configuration) | 635 | #define WINDOW_CONFIGURATIONP(x) (XTYPE ((x)) == Lisp_Window_Configuration) |
| 636 | #ifdef LISP_FLOAT_TYPE | ||
| 629 | #define FLOATP(x) (XTYPE ((x)) == Lisp_Float) | 637 | #define FLOATP(x) (XTYPE ((x)) == Lisp_Float) |
| 638 | #else | ||
| 639 | #define FLOATP(x) (0) | ||
| 640 | #endif | ||
| 641 | #define OVERLAYP(x) (XTYPE ((x)) == Lisp_Overlay) | ||
| 630 | 642 | ||
| 631 | #define EQ(x, y) (XFASTINT (x) == XFASTINT (y)) | 643 | #define EQ(x, y) (XFASTINT (x) == XFASTINT (y)) |
| 632 | #define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y)) | 644 | #define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y)) |
| @@ -713,6 +725,9 @@ typedef unsigned char UCHAR; | |||
| 713 | #define XFLOATINT(n) XINT((n)) | 725 | #define XFLOATINT(n) XINT((n)) |
| 714 | #endif /* LISP_FLOAT_TYPE */ | 726 | #endif /* LISP_FLOAT_TYPE */ |
| 715 | 727 | ||
| 728 | #define CHECK_OVERLAY(x, i) \ | ||
| 729 | { if (XTYPE ((x)) != Lisp_Overlay) x = wrong_type_argument (Qoverlayp, (x));} | ||
| 730 | |||
| 716 | /* Cast pointers to this type to compare them. Some machines want int. */ | 731 | /* Cast pointers to this type to compare them. Some machines want int. */ |
| 717 | #ifndef PNTR_COMPARISON_TYPE | 732 | #ifndef PNTR_COMPARISON_TYPE |
| 718 | #define PNTR_COMPARISON_TYPE unsigned int | 733 | #define PNTR_COMPARISON_TYPE unsigned int |
| @@ -1122,6 +1137,7 @@ extern Lisp_Object Fget_buffer (), Fget_buffer_create (), Fset_buffer (); | |||
| 1122 | extern Lisp_Object Fbarf_if_buffer_read_only (); | 1137 | extern Lisp_Object Fbarf_if_buffer_read_only (); |
| 1123 | extern Lisp_Object Fcurrent_buffer (), Fswitch_to_buffer (), Fpop_to_buffer (); | 1138 | extern Lisp_Object Fcurrent_buffer (), Fswitch_to_buffer (), Fpop_to_buffer (); |
| 1124 | extern Lisp_Object Fother_buffer (); | 1139 | extern Lisp_Object Fother_buffer (); |
| 1140 | extern Lisp_Object Qoverlayp; | ||
| 1125 | extern struct buffer *all_buffers; | 1141 | extern struct buffer *all_buffers; |
| 1126 | 1142 | ||
| 1127 | /* defined in marker.c */ | 1143 | /* defined in marker.c */ |