Mercurial > emacs
comparison src/buffer.h @ 86285:59344cb482f3
* lisp.h (struct Lisp_Buffer_Objfwd): Add a `slottype' field.
* data.c (store_symval_forwarding): Get type from buffer_objfwd.
Update call to buffer_slot_type_mismatch.
* buffer.h (buffer_local_types, PER_BUFFER_TYPE): Remove.
(buffer_slot_type_mismatch): Update.
* buffer.c (buffer_local_types): Remove.
(buffer_slot_type_mismatch): Get the symbol and type as arguments.
(defvar_per_buffer): Set the type in the buffer_objfwd.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 21 Nov 2007 20:59:47 +0000 |
parents | e509314f0d59 |
children | 107ccd98fa12 53108e6cea98 |
comparison
equal
deleted
inserted
replaced
86284:d0c1a4ea2562 | 86285:59344cb482f3 |
---|---|
816 /* For each buffer slot, this points to the Lisp symbol name | 816 /* For each buffer slot, this points to the Lisp symbol name |
817 for that slot in the current buffer. It is 0 for slots | 817 for that slot in the current buffer. It is 0 for slots |
818 that don't have such names. */ | 818 that don't have such names. */ |
819 | 819 |
820 extern struct buffer buffer_local_symbols; | 820 extern struct buffer buffer_local_symbols; |
821 | |
822 /* This structure holds the required types for the values in the | |
823 buffer-local slots. If a slot contains Qnil, then the | |
824 corresponding buffer slot may contain a value of any type. If a | |
825 slot contains an integer, then prospective values' tags must be | |
826 equal to that integer (except nil is always allowed). | |
827 When a tag does not match, the function | |
828 buffer_slot_type_mismatch will signal an error. | |
829 | |
830 If a slot here contains -1, the corresponding variable is read-only. */ | |
831 | |
832 extern struct buffer buffer_local_types; | |
833 | 821 |
834 extern void delete_all_overlays P_ ((struct buffer *)); | 822 extern void delete_all_overlays P_ ((struct buffer *)); |
835 extern void reset_buffer P_ ((struct buffer *)); | 823 extern void reset_buffer P_ ((struct buffer *)); |
836 extern void evaporate_overlays P_ ((EMACS_INT)); | 824 extern void evaporate_overlays P_ ((EMACS_INT)); |
837 extern int overlays_at P_ ((EMACS_INT, int, Lisp_Object **, int *, int *, int *, int)); | 825 extern int overlays_at P_ ((EMACS_INT, int, Lisp_Object **, int *, int *, int *, int)); |
841 extern void validate_region P_ ((Lisp_Object *, Lisp_Object *)); | 829 extern void validate_region P_ ((Lisp_Object *, Lisp_Object *)); |
842 extern void set_buffer_internal P_ ((struct buffer *)); | 830 extern void set_buffer_internal P_ ((struct buffer *)); |
843 extern void set_buffer_internal_1 P_ ((struct buffer *)); | 831 extern void set_buffer_internal_1 P_ ((struct buffer *)); |
844 extern void set_buffer_temp P_ ((struct buffer *)); | 832 extern void set_buffer_temp P_ ((struct buffer *)); |
845 extern void record_buffer P_ ((Lisp_Object)); | 833 extern void record_buffer P_ ((Lisp_Object)); |
846 extern void buffer_slot_type_mismatch P_ ((int)) NO_RETURN; | 834 extern void buffer_slot_type_mismatch P_ ((Lisp_Object, int)) NO_RETURN; |
847 extern void fix_overlays_before P_ ((struct buffer *, EMACS_INT, EMACS_INT)); | 835 extern void fix_overlays_before P_ ((struct buffer *, EMACS_INT, EMACS_INT)); |
848 extern void mmap_set_vars P_ ((int)); | 836 extern void mmap_set_vars P_ ((int)); |
849 | 837 |
850 /* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements. | 838 /* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements. |
851 If NEXTP is non-NULL, return next overlay there. | 839 If NEXTP is non-NULL, return next overlay there. |
993 the buffer structure. */ | 981 the buffer structure. */ |
994 | 982 |
995 #define PER_BUFFER_SYMBOL(OFFSET) \ | 983 #define PER_BUFFER_SYMBOL(OFFSET) \ |
996 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_symbols)) | 984 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_symbols)) |
997 | 985 |
998 /* Return the type of the per-buffer variable at offset OFFSET in the | |
999 buffer structure. */ | |
1000 | |
1001 #define PER_BUFFER_TYPE(OFFSET) \ | |
1002 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_types)) | |
1003 | |
1004 /* arch-tag: 679305dd-d41c-4a50-b170-3caf5c97b2d1 | 986 /* arch-tag: 679305dd-d41c-4a50-b170-3caf5c97b2d1 |
1005 (do not change this comment) */ | 987 (do not change this comment) */ |