annotate src/lisp.h @ 5865:8dc616f310e8

(xmenu_show ) [USE_X_TOOLKIT]: Implement a Motif behavior for the menubar. Now, if you move the pointer on another menubar item while displaying the contents of a selected menubar item, the current pulldown menu is closed and the new one corresponding to the new pointed item is displayed. Clean up code. Handle the MotionNotify events in the XEvent loop.
author Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
date Wed, 09 Feb 1994 13:51:25 +0000
parents 12fc8c6d4315
children 897ffebd97ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Fundamental definitions for GNU Emacs Lisp interpreter.
2961
e94a593c3952 Updated copyright years.
Jim Blandy <jimb@redhat.com>
parents: 2872
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1993 Free Software Foundation, Inc.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 /* Define the fundamental Lisp data structures */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 /* This is the set of Lisp data types */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 enum Lisp_Type
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 /* Integer. XINT(obj) is the integer value. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 Lisp_Int,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 /* Symbol. XSYMBOL (object) points to a struct Lisp_Symbol. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 Lisp_Symbol,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 /* Marker (buffer ptr). XMARKER(object) points to a struct Lisp_Marker. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 Lisp_Marker,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 /* String. XSTRING (object) points to a struct Lisp_String.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 The length of the string, and its contents, are stored therein. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 Lisp_String,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 /* Vector of Lisp objects. XVECTOR(object) points to a struct Lisp_Vector.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 The length of the vector, and its contents, are stored therein. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 Lisp_Vector,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 /* Cons. XCONS (object) points to a struct Lisp_Cons. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 Lisp_Cons,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 /* Byte-compiled function. A vector of 4 to 6 elements which are the
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 arglist, bytecode-string, constant vector, stack size,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 (optional) doc string, and (optional) interactive spec. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 Lisp_Compiled,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 /* Editor buffer. XBUFFER(obj) points to a struct buffer. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 Lisp_Buffer,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 /* Built-in function. XSUBR(obj) points to a struct Lisp_Subr
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 which describes how to call the function, and its documentation,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 as well as pointing to the code. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 Lisp_Subr,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 /* Internal value return by subroutines of read.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 The user never sees this data type.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 Its value is just a number. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 Lisp_Internal,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 /* Forwarding pointer to an int variable.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 This is allowed only in the value cell of a symbol,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 and it means that the symbol's value really lives in the
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 specified int variable.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 XINTPTR(obj) points to the int variable. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 Lisp_Intfwd,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 /* Boolean forwarding pointer to an int variable.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 This is like Lisp_Intfwd except that the ostensible
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 "value" of the symbol is t if the int variable is nonzero,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 nil if it is zero. XINTPTR(obj) points to the int variable. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 Lisp_Boolfwd,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 /* Object describing a connection to a subprocess.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 It points to storage of type struct Lisp_Process */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 Lisp_Process,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 /* Forwarding pointer to a Lisp_Object variable.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 This is allowed only in the value cell of a symbol,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 and it means that the symbol's value really lives in the
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 specified variable.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 XOBJFWD(obj) points to the Lisp_Object variable. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 Lisp_Objfwd,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88
1567
c0c9fc68a006 * lisp.h [not MULTI_FRAME]: Don't declare the Lisp_Frame tag.
Jim Blandy <jimb@redhat.com>
parents: 1518
diff changeset
89 #ifdef MULTI_FRAME
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
90 /* Pointer to a vector-like object describing a display frame
1567
c0c9fc68a006 * lisp.h [not MULTI_FRAME]: Don't declare the Lisp_Frame tag.
Jim Blandy <jimb@redhat.com>
parents: 1518
diff changeset
91 on which Emacs can display a window hierarchy. We don't define
c0c9fc68a006 * lisp.h [not MULTI_FRAME]: Don't declare the Lisp_Frame tag.
Jim Blandy <jimb@redhat.com>
parents: 1518
diff changeset
92 this unless MULTI_FRAME is defined; this helps the compiler catch
c0c9fc68a006 * lisp.h [not MULTI_FRAME]: Don't declare the Lisp_Frame tag.
Jim Blandy <jimb@redhat.com>
parents: 1518
diff changeset
93 code that won't work on a non-MULTI_FRAME configuration. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
94 Lisp_Frame,
1567
c0c9fc68a006 * lisp.h [not MULTI_FRAME]: Don't declare the Lisp_Frame tag.
Jim Blandy <jimb@redhat.com>
parents: 1518
diff changeset
95 #endif
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 /* Used when a FILE * value needs to be passed
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 in an argument of type Lisp_Object.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 You must do *(FILE **) XPNTR(obj) to get the value.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 The user will never see this data type. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 Lisp_Internal_Stream,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 /* Used in a symbol value cell when the symbol's value is per-buffer.
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
104 The actual contents are a cons cell which starts a list like this:
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
105 (REALVALUE BUFFER CURRENT-ALIST-ELEMENT . DEFAULT-VALUE).
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
107 BUFFER is the last buffer for which this symbol's value was
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
108 made up to date.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
110 CURRENT-ALIST-ELEMENT is a pointer to an element of BUFFER's
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
111 local_var_alist, that being the element whose car is this
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
112 variable. Or it can be a pointer to the
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
113 (CURRENT-ALIST-ELEMENT . DEFAULT-VALUE),
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
114 if BUFFER does not have an element in its alist for this
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
115 variable (that is, if BUFFER sees the default value of this
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
116 variable).
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
118 If we want to examine or set the value and BUFFER is current,
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
119 we just examine or set REALVALUE. If BUFFER is not current, we
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
120 store the current REALVALUE value into CURRENT-ALIST-ELEMENT,
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
121 then find the appropriate alist element for the buffer now
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
122 current and set up CURRENT-ALIST-ELEMENT. Then we set
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
123 REALVALUE out of that element, and store into BUFFER.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
125 If we are setting the variable and the current buffer does not
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
126 have an alist entry for this variable, an alist entry is
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
127 created.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 706
diff changeset
129 Note that REALVALUE can be a forwarding pointer. Each time it
1277
61f4bd399f61 * lisp.h: Doc elaboration for Lisp_Buffer_Local_Value.
Jim Blandy <jimb@redhat.com>
parents: 1197
diff changeset
130 is examined or set, forwarding must be done. Each time we
61f4bd399f61 * lisp.h: Doc elaboration for Lisp_Buffer_Local_Value.
Jim Blandy <jimb@redhat.com>
parents: 1197
diff changeset
131 switch buffers, buffer-local variables which forward into C
61f4bd399f61 * lisp.h: Doc elaboration for Lisp_Buffer_Local_Value.
Jim Blandy <jimb@redhat.com>
parents: 1197
diff changeset
132 variables are swapped immediately, so the C code can assume
61f4bd399f61 * lisp.h: Doc elaboration for Lisp_Buffer_Local_Value.
Jim Blandy <jimb@redhat.com>
parents: 1197
diff changeset
133 that they are always up to date. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 Lisp_Buffer_Local_Value,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 /* Like Lisp_Buffer_Local_Value with one difference:
1184
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 999
diff changeset
137 merely setting the variable while some buffer is current
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 999
diff changeset
138 does not cause that buffer to have its own local value of this variable.
5f4300ccc93f entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 999
diff changeset
139 Only make-local-variable does that. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 Lisp_Some_Buffer_Local_Value,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 /* Like Lisp_Objfwd except that value lives in a slot
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 in the current buffer. Value is byte index of slot within buffer */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 Lisp_Buffer_Objfwd,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 /* In symbol value cell, means var is unbound.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 In symbol function cell, means function name is undefined. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 Lisp_Void,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 /* Window used for Emacs display.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 Data inside looks like a Lisp_Vector. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 Lisp_Window,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 /* Used by save,set,restore-window-configuration */
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
156 Lisp_Window_Configuration,
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 #ifdef LISP_FLOAT_TYPE
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
159 Lisp_Float,
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 #endif /* LISP_FLOAT_TYPE */
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
161
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
162 /* The overlay type.
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
163 An overlay values is actually a retagged cons, the first in a
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
164 list of the form
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
165 ((START . END) nil . PLIST)
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
166 where START and END are markers in the overlay's buffer, and
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
167 PLIST is the overlay's property list. */
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
168 Lisp_Overlay
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 #ifndef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
173 #ifndef WORDS_BIG_ENDIAN
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 /* Definition of Lisp_Object for little-endian machines. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 typedef
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 union Lisp_Object
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 /* Used for comparing two Lisp_Objects;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 also, positive integers can be accessed fast this way. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 int i;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 } s;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 } u;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 enum Lisp_Type type: 7;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 /* The markbit is not really part of the value of a Lisp_Object,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 and is always zero except during garbage collection. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 unsigned int markbit: 1;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 } gu;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 Lisp_Object;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
205 #else /* If WORDS_BIG_ENDIAN */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 typedef
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 union Lisp_Object
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 /* Used for comparing two Lisp_Objects;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 also, positive integers can be accessed fast this way. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 int i;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 } s;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 } u;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 /* The markbit is not really part of the value of a Lisp_Object,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 and is always zero except during garbage collection. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 unsigned int markbit: 1;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 enum Lisp_Type type: 7;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 } gu;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 Lisp_Object;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
235 #endif /* WORDS_BIG_ENDIAN */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 /* If union type is not wanted, define Lisp_Object as just a number
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 and define the macros below to extract fields by shifting */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 #ifdef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 #define Lisp_Object int
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 /* These values are overridden by the m- file on some machines. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 #ifndef VALBITS
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 #define VALBITS 24
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 #ifndef GCTYPEBITS
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 #define GCTYPEBITS 7
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 #ifndef VALMASK
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 #define VALMASK ((1<<VALBITS) - 1)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 #define GCTYPEMASK ((1<<GCTYPEBITS) - 1)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 #define MARKBIT (1 << (VALBITS + GCTYPEBITS))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 /* These macros extract various sorts of values from a Lisp_Object.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 For example, if tem is a Lisp_Object whose type is Lisp_Cons,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 XCONS (tem) is the struct Lisp_Cons * pointing to the memory for that cons. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 #ifdef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 /* One need to override this if there must be high bits set in data space
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 (doing the result of the below & ((1 << (GCTYPE + 1)) - 1) would work
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 on all machines, but would penalise machines which don't need it)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 #ifndef XTYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 #define XTYPE(a) ((enum Lisp_Type) ((a) >> VALBITS))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 #ifndef XSETTYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 #define XSETTYPE(a, b) ((a) = XUINT (a) | ((int)(b) << VALBITS))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 /* Use XFASTINT for fast retrieval and storage of integers known
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 to be positive. This takes advantage of the fact that Lisp_Int is 0. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 #define XFASTINT(a) (a)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 /* Extract the value of a Lisp_Object as a signed integer. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 #ifndef XINT /* Some machines need to do this differently. */
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
289 #define XINT(a) (((a) << (INTBITS-VALBITS)) >> (INTBITS-VALBITS))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 /* Extract the value as an unsigned integer. This is a basis
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 for extracting it as a pointer to a structure in storage. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 #ifndef XUINT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 #define XUINT(a) ((a) & VALMASK)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 #ifndef XPNTR
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 #ifdef HAVE_SHM
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 /* In this representation, data is found in two widely separated segments. */
336
25114d2b73e3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 302
diff changeset
302 extern int pure_size;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 #define XPNTR(a) \
336
25114d2b73e3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 302
diff changeset
304 (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 #else /* not HAVE_SHM */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 #ifdef DATA_SEG_BITS
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 /* This case is used for the rt-pc.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 In the diffs I was given, it checked for ptr = 0
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 and did not adjust it in that case.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 But I don't think that zero should ever be found
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 in a Lisp object whose data type says it points to something. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 #define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 #else
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 #define XPNTR(a) XUINT (a)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 #endif /* not HAVE_SHM */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 #endif /* no XPNTR */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 #ifndef XSETINT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 #define XSETINT(a, b) ((a) = ((a) & ~VALMASK) | ((b) & VALMASK))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 #ifndef XSETUINT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 #define XSETUINT(a, b) XSETINT (a, b)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 #ifndef XSETPNTR
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 #define XSETPNTR(a, b) XSETINT (a, b)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 #ifndef XSET
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 #define XSET(var, type, ptr) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 ((var) = ((int)(type) << VALBITS) + ((int) (ptr) & VALMASK))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 /* During garbage collection, XGCTYPE must be used for extracting types
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 so that the mark bit is ignored. XMARKBIT accesses the markbit.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 Markbits are used only in particular slots of particular structure types.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 Other markbits are always zero.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 Outside of garbage collection, all mark bits are always zero. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 #ifndef XGCTYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 #define XGCTYPE(a) ((enum Lisp_Type) (((a) >> VALBITS) & GCTYPEMASK))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 #if VALBITS + GCTYPEBITS == INTBITS - 1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 /* Make XMARKBIT faster if mark bit is sign bit. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 #ifndef XMARKBIT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 #define XMARKBIT(a) ((a) < 0)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 #endif /* markbit is sign bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 #ifndef XMARKBIT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 #define XMARKBIT(a) ((a) & MARKBIT)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 #ifndef XSETMARKBIT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 #define XSETMARKBIT(a,b) ((a) = ((a) & ~MARKBIT) | ((b) ? MARKBIT : 0))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 #ifndef XMARK
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 #define XMARK(a) ((a) |= MARKBIT)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 #ifndef XUNMARK
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 #define XUNMARK(a) ((a) &= ~MARKBIT)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 #ifndef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 #define XTYPE(a) ((enum Lisp_Type) (a).u.type)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 #define XSETTYPE(a, b) ((a).u.type = (char) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 /* Use XFASTINT for fast retrieval and storage of integers known
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 to be positive. This takes advantage of the fact that Lisp_Int is 0. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 #define XFASTINT(a) ((a).i)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 #ifdef EXPLICIT_SIGN_EXTEND
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 /* Make sure we sign-extend; compilers have been known to fail to do so. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 #define XINT(a) (((a).i << 8) >> 8)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 #else
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 #define XINT(a) ((a).s.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 #endif /* EXPLICIT_SIGN_EXTEND */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 #define XUINT(a) ((a).u.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 #define XPNTR(a) ((a).u.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 #define XSETINT(a, b) ((a).s.val = (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 #define XSETUINT(a, b) ((a).s.val = (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 #define XSETPNTR(a, b) ((a).s.val = (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 #define XSET(var, vartype, ptr) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 (((var).s.type = ((char) (vartype))), ((var).s.val = ((int) (ptr))))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 /* During garbage collection, XGCTYPE must be used for extracting types
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 so that the mark bit is ignored. XMARKBIT access the markbit.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 Markbits are used only in particular slots of particular structure types.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 Other markbits are always zero.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 Outside of garbage collection, all mark bits are always zero. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 #define XGCTYPE(a) ((a).gu.type)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 #define XMARKBIT(a) ((a).gu.markbit)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 #define XSETMARKBIT(a,b) (XMARKBIT(a) = (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 #define XMARK(a) (XMARKBIT(a) = 1)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 #define XUNMARK(a) (XMARKBIT(a) = 0)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 #define XCONS(a) ((struct Lisp_Cons *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 #define XBUFFER(a) ((struct buffer *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 #define XVECTOR(a) ((struct Lisp_Vector *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 #define XSUBR(a) ((struct Lisp_Subr *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 #define XSTRING(a) ((struct Lisp_String *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 #define XSYMBOL(a) ((struct Lisp_Symbol *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 #define XFUNCTION(a) ((Lisp_Object (*)()) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 #define XMARKER(a) ((struct Lisp_Marker *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 #define XOBJFWD(a) ((Lisp_Object *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 #define XINTPTR(a) ((int *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 #define XWINDOW(a) ((struct window *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 #define XPROCESS(a) ((struct Lisp_Process *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 #define XFLOAT(a) ((struct Lisp_Float *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 #define XSETCONS(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 #define XSETBUFFER(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 #define XSETVECTOR(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 #define XSETSUBR(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 #define XSETSTRING(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 #define XSETSYMBOL(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 #define XSETFUNCTION(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 #define XSETMARKER(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 #define XSETOBJFWD(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 #define XSETINTPTR(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 #define XSETWINDOW(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 #define XSETPROCESS(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 #define XSETFLOAT(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
439 #ifdef USE_TEXT_PROPERTIES
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
440 /* Basic data type for use of intervals. See the macros in intervals.h */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
441
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
442 struct interval
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
443 {
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
444 /* The first group of entries deal with the tree structure. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
445
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
446 unsigned int total_length; /* Length of myself and both children. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
447 unsigned int position; /* Cache of interval's character position */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
448 struct interval *left; /* Intervals which precede me. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
449 struct interval *right; /* Intervals which succeed me. */
4139
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
450
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
451 /* Parent in the tree, or the Lisp_Object containing this interval tree.
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
452
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
453 The mark bit on the root interval of an interval tree says
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
454 whether we have started (and possibly finished) marking the
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
455 tree. If GC comes across an interval tree whose root's parent
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
456 field has its markbit set, it leaves the tree alone.
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
457
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
458 You'd think we could store this information in the parent object
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
459 somewhere (after all, that should be visited once and then
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
460 ignored too, right?), but strings are GC'd strangely. */
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
461 struct interval *parent;
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
462
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
463 /* The remaining components are `properties' of the interval.
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
464 The first four are duplicates for things which can be on the list,
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
465 for purposes of speed. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
466
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
467 unsigned char write_protect; /* Non-zero means can't modify. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
468 unsigned char visible; /* Zero means don't display. */
1306
01d973b5d81b * lisp.h: Declare Qbuffer_or_string_p.
Joseph Arceneaux <jla@gnu.org>
parents: 1290
diff changeset
469 unsigned char front_sticky; /* Non-zero means text inserted just
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
470 before this interval goes into it. */
1306
01d973b5d81b * lisp.h: Declare Qbuffer_or_string_p.
Joseph Arceneaux <jla@gnu.org>
parents: 1290
diff changeset
471 unsigned char rear_sticky; /* Likewise for just after it. */
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
472
4139
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
473 /* Properties of this interval.
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
474 The mark bit on this field says whether this particular interval
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
475 tree node has been visited. Since intervals should never be
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
476 shared, GC aborts if it seems to have visited an interval twice. */
0b32ee899a3a Consistently use the mark bit of the root interval's parent field
Jim Blandy <jimb@redhat.com>
parents: 4079
diff changeset
477 Lisp_Object plist;
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
478 };
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
479
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
480 typedef struct interval *INTERVAL;
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
481
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
482 /* Complain if object is not string or buffer type */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
483 #define CHECK_STRING_OR_BUFFER(x, i) \
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
484 { if (XTYPE ((x)) != Lisp_String && XTYPE ((x)) != Lisp_Buffer) \
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
485 x = wrong_type_argument (Qbuffer_or_string_p, (x)); }
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
486
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
487 /* Macro used to conditionally compile intervals into certain data
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
488 structures. See, e.g., struct Lisp_String below. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
489 #define DECLARE_INTERVALS INTERVAL intervals;
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
490
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3539
diff changeset
491 /* Macro used to conditionally compile interval initialization into
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
492 certain code. See, e.g., alloc.c. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
493 #define INITIALIZE_INTERVAL(ptr,val) ptr->intervals = val
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
494
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
495 #else /* No text properties */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
496
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
497 /* If no intervals are used, make the above definitions go away. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
498
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
499 #define CHECK_STRING_OR_BUFFER(x, i)
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
500
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
501 #define INTERVAL
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
502 #define DECLARE_INTERVALS
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
503 #define INITIALIZE_INTERVAL(ptr,val)
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
504
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
505 #endif /* USE_TEXT_PROPERTIES */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
506
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 /* In a cons, the markbit of the car is the gc mark bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 struct Lisp_Cons
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 Lisp_Object car, cdr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 /* Like a cons, but records info on where the text lives that it was read from */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 /* This is not really in use now */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 struct Lisp_Buffer_Cons
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 Lisp_Object car, cdr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 struct buffer *buffer;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 int bufpos;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 /* In a string or vector, the sign bit of the `size' is the gc mark bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 struct Lisp_String
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 int size;
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
529 DECLARE_INTERVALS /* `data' field must be last. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 unsigned char data[1];
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 struct Lisp_Vector
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 int size;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 struct Lisp_Vector *next;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 Lisp_Object contents[1];
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 /* In a symbol, the markbit of the plist is used as the gc mark bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 struct Lisp_Symbol
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 struct Lisp_String *name;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 Lisp_Object value;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 Lisp_Object function;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 Lisp_Object plist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548 struct Lisp_Symbol *next; /* -> next symbol in this obarray bucket */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 struct Lisp_Subr
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 Lisp_Object (*function) ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 short min_args, max_args;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 char *symbol_name;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 char *prompt;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 char *doc;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 /* In a marker, the markbit of the chain field is used as the gc mark bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 struct Lisp_Marker
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 struct buffer *buffer;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 Lisp_Object chain;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 int bufpos;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 int modified;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571 /* Optional Lisp floating point type */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 struct Lisp_Float
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 Lisp_Object type; /* essentially used for mark-bit
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575 and chaining when on free-list */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576 double data;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
580 /* A character, declared with the following typedef, is a member
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 of some character set associated with the current buffer. */
3324
b0e1cf2177fc (UCHAR): Don't define if _UCHAR_T.
Richard M. Stallman <rms@gnu.org>
parents: 2979
diff changeset
582 #ifndef _UCHAR_T /* Protect against something in ctab.h on AIX. */
b0e1cf2177fc (UCHAR): Don't define if _UCHAR_T.
Richard M. Stallman <rms@gnu.org>
parents: 2979
diff changeset
583 #define _UCHAR_T
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584 typedef unsigned char UCHAR;
3324
b0e1cf2177fc (UCHAR): Don't define if _UCHAR_T.
Richard M. Stallman <rms@gnu.org>
parents: 2979
diff changeset
585 #endif
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
586
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 /* Meanings of slots in a Lisp_Compiled: */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 #define COMPILED_ARGLIST 0
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 #define COMPILED_BYTECODE 1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 #define COMPILED_CONSTANTS 2
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 #define COMPILED_STACK_DEPTH 3
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 #define COMPILED_DOC_STRING 4
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 #define COMPILED_INTERACTIVE 5
2014
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
595
2662
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
596 /* Flag bits in a character. These also get used in termhooks.h.
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
597 Richard Stallman <rms@gnu.ai.mit.edu> thinks that MULE
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
598 (MUlti-Lingual Emacs) might need 18 bits for the character value
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
599 itself, so we probably shouldn't use any bits lower than 0x040000. */
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
600 #define CHAR_ALT (0x040000)
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
601 #define CHAR_SUPER (0x080000)
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
602 #define CHAR_HYPER (0x100000)
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
603 #define CHAR_SHIFT (0x200000)
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
604 #define CHAR_CTL (0x400000)
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
605 #define CHAR_META (0x800000)
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
606
5642
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
607 #ifdef USE_X_TOOLKIT
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
608 #ifdef NO_UNION_TYPE
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
609 /* Use this for turning a (void *) into a Lisp_Object, as when the
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
610 Lisp_Object is passed into a toolkit callback function. */
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
611 #define VOID_TO_LISP(larg,varg) \
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
612 do { ((larg) = ((Lisp_Object) (varg))); } while (0)
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
613 #define CVOID_TO_LISP VOID_TO_LISP
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
614
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
615 /* Use this for turning a Lisp_Object into a (void *), as when the
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
616 Lisp_Object is passed into a toolkit callback function. */
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
617 #define LISP_TO_VOID(larg) ((void *) (larg))
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
618 #define LISP_TO_CVOID(varg) ((const void *) (larg))
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
619
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
620 #else /* not NO_UNION_TYPE */
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
621 /* Use this for turning a (void *) into a Lisp_Object, as when the
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
622 Lisp_Object is passed into a toolkit callback function. */
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
623 #define VOID_TO_LISP(larg,varg) \
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
624 do { ((larg).v = (void *) (varg)); } while (0)
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
625 #define CVOID_TO_LISP(larg,varg) \
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
626 do { ((larg).cv = (const void *) (varg)); } while (0)
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
627
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
628 /* Use this for turning a Lisp_Object into a (void *), as when the
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
629 Lisp_Object is passed into a toolkit callback function. */
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
630 #define LISP_TO_VOID(larg) ((larg).v)
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
631 #define LISP_TO_CVOID(larg) ((larg).cv)
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
632 #endif /* not NO_UNION_TYPE */
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
633 #endif /* USE_X_TOOLKIT */
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
634
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
635
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
636 /* The glyph datatype, used to represent characters on the display. */
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
637
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
638 /* The low eight bits are the character code, and the bits above them
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
639 are the numeric face ID. If FID is the face ID of a glyph on a
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
640 frame F, then F->display.x->faces[FID] contains the description of
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
641 that face. This is an int instead of a short, so we can support a
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
642 good bunch of face ID's; given that we have no mechanism for
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
643 tossing unused frame face ID's yet, we'll probably run out of 255
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
644 pretty quickly. */
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
645 #define GLYPH unsigned int
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
646
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
647 /* Given a character code and a face ID, return the appropriate glyph. */
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
648 #define MAKE_GLYPH(char, face) ((char) | ((face) << 8))
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
649
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
650 /* Return a glyph's character code. */
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
651 #define GLYPH_CHAR(glyph) ((glyph) & 0xff)
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
652
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
653 /* Return a glyph's face ID. */
2979
df018689853e * lisp.h (GLYPH_FACE): Remember that the face portion of a glyph
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
654 #define GLYPH_FACE(glyph) (((glyph) >> 8) & ((1 << 24) - 1))
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
655
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 /* Data type checking */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
659 #define NILP(x) (XFASTINT (x) == XFASTINT (Qnil))
1990
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
660 #define GC_NILP(x) GC_EQ (x, Qnil)
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
661
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
662 #ifdef LISP_FLOAT_TYPE
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
663 #define NUMBERP(x) (XTYPE (x) == Lisp_Int || XTYPE (x) == Lisp_Float)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
664 #else
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
665 #define NUMBERP(x) (XTYPE (x) == Lisp_Int)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
668 #define INTEGERP(x) (XTYPE ((x)) == Lisp_Int)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
669 #define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
670 #define MARKERP(x) (XTYPE ((x)) == Lisp_Marker)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
671 #define STRINGP(x) (XTYPE ((x)) == Lisp_String)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
672 #define VECTORP(x) (XTYPE ((x)) == Lisp_Vector)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
673 #define CONSP(x) (XTYPE ((x)) == Lisp_Cons)
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
674 #define COMPILEDP(x) (XTYPE ((x)) == Lisp_Compiled)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
675 #define BUFFERP(x) (XTYPE ((x)) == Lisp_Buffer)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
676 #define SUBRP(x) (XTYPE ((x)) == Lisp_Subr)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
677 #define PROCESSP(x) (XTYPE ((x)) == Lisp_Process)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
678 #define FRAMEP(x) (XTYPE ((x)) == Lisp_Frame)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
679 #define WINDOWP(x) (XTYPE ((x)) == Lisp_Window)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
680 #define WINDOW_CONFIGURATIONP(x) (XTYPE ((x)) == Lisp_Window_Configuration)
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
681 #ifdef LISP_FLOAT_TYPE
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
682 #define FLOATP(x) (XTYPE ((x)) == Lisp_Float)
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
683 #else
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
684 #define FLOATP(x) (0)
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
685 #endif
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
686 #define OVERLAYP(x) (XTYPE ((x)) == Lisp_Overlay)
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
687
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 #define EQ(x, y) (XFASTINT (x) == XFASTINT (y))
1990
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
689 #define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y))
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
690
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 #define CHECK_LIST(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
692 do { if ((XTYPE ((x)) != Lisp_Cons) && !NILP (x)) x = wrong_type_argument (Qlistp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 #define CHECK_STRING(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
695 do { if (XTYPE ((x)) != Lisp_String) x = wrong_type_argument (Qstringp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 #define CHECK_CONS(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
698 do { if (XTYPE ((x)) != Lisp_Cons) x = wrong_type_argument (Qconsp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 #define CHECK_SYMBOL(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
701 do { if (XTYPE ((x)) != Lisp_Symbol) x = wrong_type_argument (Qsymbolp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 #define CHECK_VECTOR(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
704 do { if (XTYPE ((x)) != Lisp_Vector) x = wrong_type_argument (Qvectorp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 #define CHECK_BUFFER(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
707 do { if (XTYPE ((x)) != Lisp_Buffer) x = wrong_type_argument (Qbufferp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 #define CHECK_WINDOW(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
710 do { if (XTYPE ((x)) != Lisp_Window) x = wrong_type_argument (Qwindowp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
712 /* This macro rejects windows on the interior of the window tree as
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
713 "dead", which is what we want; this is an argument-checking macro, and
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
714 the user should never get access to interior windows.
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
715
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
716 A window of any sort, leaf or interior, is dead iff the buffer,
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
717 vchild, and hchild members are all nil. */
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
718
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
719 #define CHECK_LIVE_WINDOW(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
720 do { \
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
721 if (XTYPE ((x)) != Lisp_Window \
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
722 || NILP (XWINDOW ((x))->buffer)) \
2210
22d78dbb3cc7 Rename `live-window-p' to `window-live-p', for consistency with
Jim Blandy <jimb@redhat.com>
parents: 2187
diff changeset
723 x = wrong_type_argument (Qwindow_live_p, (x)); \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
724 } while (0)
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
725
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 #define CHECK_PROCESS(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
727 do { if (XTYPE ((x)) != Lisp_Process) x = wrong_type_argument (Qprocessp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 #define CHECK_NUMBER(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
730 do { if (XTYPE ((x)) != Lisp_Int) x = wrong_type_argument (Qintegerp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 #define CHECK_NATNUM(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
733 do { if (XTYPE ((x)) != Lisp_Int || XINT ((x)) < 0) \
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
734 x = wrong_type_argument (Qnatnump, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736 #define CHECK_MARKER(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
737 do { if (XTYPE ((x)) != Lisp_Marker) x = wrong_type_argument (Qmarkerp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 #define CHECK_NUMBER_COERCE_MARKER(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
740 do { if (XTYPE ((x)) == Lisp_Marker) XFASTINT (x) = marker_position (x); \
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
741 else if (XTYPE ((x)) != Lisp_Int) x = wrong_type_argument (Qinteger_or_marker_p, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 #ifndef DBL_DIG
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 #define DBL_DIG 20
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 #define XFLOATINT(n) extract_float((n))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 #define CHECK_FLOAT(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
752 do { if (XTYPE (x) != Lisp_Float) \
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
753 x = wrong_type_argument (Qfloatp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 #define CHECK_NUMBER_OR_FLOAT(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
756 do { if (XTYPE (x) != Lisp_Float && XTYPE (x) != Lisp_Int) \
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
757 x = wrong_type_argument (Qnumberp, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 #define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
760 do { if (XTYPE (x) == Lisp_Marker) XFASTINT (x) = marker_position (x); \
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 else if (XTYPE (x) != Lisp_Int && XTYPE (x) != Lisp_Float) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
762 x = wrong_type_argument (Qnumber_or_marker_p, (x)); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 #else /* Not LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 #define CHECK_NUMBER_OR_FLOAT CHECK_NUMBER
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 #define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER CHECK_NUMBER_COERCE_MARKER
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 #define XFLOATINT(n) XINT((n))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
773 #define CHECK_OVERLAY(x, i) \
3793
374fc1ccdc3f * lisp.h (CHECK_LIST, CHECK_STRING, CHECK_CONS, CHECK_SYMBOL,
Jim Blandy <jimb@redhat.com>
parents: 3785
diff changeset
774 do { if (XTYPE ((x)) != Lisp_Overlay) x = wrong_type_argument (Qoverlayp, (x));} while (0)
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
775
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 /* Cast pointers to this type to compare them. Some machines want int. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 #ifndef PNTR_COMPARISON_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 #define PNTR_COMPARISON_TYPE unsigned int
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 /* Define a built-in function for calling from Lisp.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 `lname' should be the name to give the function in Lisp,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 as a null-terminated C string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 `fnname' should be the name of the function in C.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 By convention, it starts with F.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 `sname' should be the name for the C constant structure
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 that records information on this function for internal use.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 By convention, it should be the same as `fnname' but with S instead of F.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 It's too bad that C macros can't compute this from `fnname'.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 `minargs' should be a number, the minimum number of arguments allowed.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791 `maxargs' should be a number, the maximum number of arguments allowed,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
792 or else MANY or UNEVALLED.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
793 MANY means pass a vector of evaluated arguments,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794 in the form of an integer number-of-arguments
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
795 followed by the address of a vector of Lisp_Objects
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796 which contains the argument values.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 UNEVALLED means pass the list of unevaluated arguments
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 `prompt' says how to read arguments for an interactive call.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 This can be zero or a C string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 Zero means that interactive calls are not allowed.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 A string is interpreted in a hairy way:
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 it should contain one line for each argument to be read, terminated by \n.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 The first character of the line controls the type of parsing:
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 s -- read a string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 S -- read a symbol.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 k -- read a key sequence and return it as a string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 a -- read a function name (symbol) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 C -- read a command name (symbol) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 v -- read a variable name (symbol) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 b -- read a buffer name (a string) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 B -- buffer name, may be existing buffer or may not be.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812 f -- read a file name, file must exist.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 F -- read a file name, file need not exist.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 n -- read a number.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
815 c -- read a character and return it as a number.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816 p -- use the numeric value of the prefix argument.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 P -- use raw value of prefix - can be nil, -, (NUMBER) or NUMBER.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 x -- read a Lisp object from the minibuffer.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819 X -- read a Lisp form from the minibuffer and use its value.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820 A null string means call interactively with no arguments.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 `doc' is documentation for the user.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
823
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
824 #ifndef __STDC__
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 Lisp_Object fnname (); \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 struct Lisp_Subr sname = {fnname, minargs, maxargs, lname, prompt, 0}; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 Lisp_Object fnname
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
830 #else
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
831
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
832 /* This version of DEFUN declares a function prototype with the right
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
833 arguments, so we can catch errors with maxargs at compile-time. */
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
834 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
835 Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
836 struct Lisp_Subr sname = {fnname, minargs, maxargs, lname, prompt, 0}; \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
837 Lisp_Object fnname
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
838
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
839 /* Note that the weird token-substitution semantics of ANSI C makes
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
840 this work for MANY and UNEVALLED. */
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
841 #define DEFUN_ARGS_MANY (int, Lisp_Object *)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
842 #define DEFUN_ARGS_UNEVALLED (Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
843 #define DEFUN_ARGS_0 (void)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
844 #define DEFUN_ARGS_1 (Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
845 #define DEFUN_ARGS_2 (Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
846 #define DEFUN_ARGS_3 (Lisp_Object, Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
847 #define DEFUN_ARGS_4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
848 #define DEFUN_ARGS_5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
849 Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
850 #define DEFUN_ARGS_6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
851 Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
852 #define DEFUN_ARGS_7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
853 Lisp_Object, Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
854 #endif
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
855
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 /* defsubr (Sname);
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 is how we define the symbol for function `name' at start-up time. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 extern void defsubr ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 #define MANY -2
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 #define UNEVALLED -1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 extern void defvar_lisp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 extern void defvar_bool ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865 extern void defvar_int ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867 /* Macros we use to define forwarded Lisp variables.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 These are used in the syms_of_FILENAME functions. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 #define DEFVAR_LISP(lname, vname, doc) defvar_lisp (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 #define DEFVAR_LISP_NOPRO(lname, vname, doc) defvar_lisp_nopro (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 #define DEFVAR_BOOL(lname, vname, doc) defvar_bool (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873 #define DEFVAR_INT(lname, vname, doc) defvar_int (lname, vname)
999
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
874 #define DEFVAR_PER_BUFFER(lname, vname, type, doc) \
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
875 defvar_per_buffer (lname, vname, type, 0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
877 /* Structure for recording Lisp call stack for backtrace purposes. */
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
878
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
879 /* The special binding stack holds the outer values of variables while
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
880 they are bound by a function application or a let form, stores the
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
881 code to be executed for Lisp unwind-protect forms, and stores the C
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
882 functions to be called for record_unwind_protect.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
884 If func is non-zero, undoing this binding applies func to old_value;
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
885 This implements record_unwind_protect.
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
886 If func is zero and symbol is nil, undoing this binding evaluates
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
887 the list of forms in old_value; this implements Lisp's unwind-protect
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
888 form.
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
889 Otherwise, undoing this binding stores old_value as symbol's value; this
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
890 undoes the bindings made by a let form or function call. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 struct specbinding
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 Lisp_Object symbol, old_value;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 Lisp_Object (*func) ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 Lisp_Object unused; /* Dividing by 16 is faster than by 12 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 extern struct specbinding *specpdl;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 extern struct specbinding *specpdl_ptr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 extern int specpdl_size;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
902 /* Everything needed to describe an active condition case. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903 struct handler
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 {
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
905 /* The handler clauses and variable from the condition-case form. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 Lisp_Object handler;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 Lisp_Object var;
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
908
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
909 /* Used to effect the longjump out to the handler. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 struct catchtag *tag;
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
911
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
912 /* The next enclosing handler. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 struct handler *next;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916 extern struct handler *handlerlist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 extern struct catchtag *catchlist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919 extern struct backtrace *backtrace_list;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 /* An address near the bottom of the stack.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 Tells GC how to save a copy of the stack. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923 extern char *stack_bottom;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 /* Check quit-flag and quit if it is non-nil. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 #define QUIT \
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
928 if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929 { Vquit_flag = Qnil; Fsignal (Qquit, Qnil); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 /* Nonzero if ought to quit now. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
933 #define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
934
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
935 /* 1 if CH is upper case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936
377
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
937 #define UPPERCASEP(CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
938 (XSTRING (current_buffer->downcase_table)->data[CH] != (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
940 /* 1 if CH is lower case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
941
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
942 #define LOWERCASEP(CH) \
377
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
943 (!UPPERCASEP (CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
944 && XSTRING (current_buffer->upcase_table)->data[CH] != (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
945
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
946 /* 1 if CH is neither upper nor lower case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
947
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
948 #define NOCASEP(CH) (XSTRING (current_buffer->upcase_table)->data[CH] == (CH))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
949
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
950 /* Upcase a character, or make no change if that cannot be done. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951
377
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
952 #define UPCASE(CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
953 (XSTRING (current_buffer->downcase_table)->data[CH] == (CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
954 ? UPCASE1 (CH) : (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956 /* Upcase a character known to be not upper case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
958 #define UPCASE1(CH) (XSTRING (current_buffer->upcase_table)->data[CH])
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
959
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
960 /* Downcase a character, or make no change if that cannot be done. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
961
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
962 #define DOWNCASE(CH) (XSTRING (current_buffer->downcase_table)->data[CH])
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
963
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
964 /* Current buffer's map from characters to lower-case characters. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
965
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 #define DOWNCASE_TABLE XSTRING (current_buffer->downcase_table)->data
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
967
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
968 /* Table mapping each char to the next char with the same lowercase version.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
969 This mapping is a no-op only for characters that don't have case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
970 #define UPCASE_TABLE XSTRING (current_buffer->upcase_table)->data
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
971
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
972 extern Lisp_Object Vascii_downcase_table, Vascii_upcase_table;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
973
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974 /* number of bytes of structure consed since last GC */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
976 extern int consing_since_gc;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
977
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
978 /* threshold for doing another gc */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
979
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
980 extern int gc_cons_threshold;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
981
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
982 /* Structure for recording stack slots that need marking */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
983
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
984 /* This is a chain of structures, each of which points at a Lisp_Object variable
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
985 whose value should be marked in garbage collection.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986 Normally every link of the chain is an automatic variable of a function,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987 and its `val' points to some argument or local variable of the function.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
988 On exit to the function, the chain is set back to the value it had on entry.
4826
033bdae6b9f9 Format comment.
Brian Fox <bfox@gnu.org>
parents: 4528
diff changeset
989 This way, no link remains in the chain when the stack frame containing the
033bdae6b9f9 Format comment.
Brian Fox <bfox@gnu.org>
parents: 4528
diff changeset
990 link disappears.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992 Every function that can call Feval must protect in this fashion all
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993 Lisp_Object variables whose contents will be used again. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
994
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
995 extern struct gcpro *gcprolist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997 struct gcpro
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
999 struct gcpro *next;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 Lisp_Object *var; /* Address of first protected variable */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001 int nvars; /* Number of consecutive protected variables */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1002 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1003
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1004 #define GCPRO1(varname) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1005 {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1006 gcprolist = &gcpro1; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1007
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1008 #define GCPRO2(varname1, varname2) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1010 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 gcprolist = &gcpro2; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1012
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1013 #define GCPRO3(varname1, varname2, varname3) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1014 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1015 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1016 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1017 gcprolist = &gcpro3; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1018
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1019 #define GCPRO4(varname1, varname2, varname3, varname4) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1020 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1021 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1022 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1023 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1024 gcprolist = &gcpro4; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1025
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 /* Call staticpro (&var) to protect static variable `var'. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1027
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1028 void staticpro();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1029
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1030 #define UNGCPRO (gcprolist = gcpro1.next)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1031
1990
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
1032 /* Evaluate expr, UNGCPRO, and then return the value of expr. I used
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
1033 to have a `do ... while' clause around this to make it interact
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
1034 with semicolons correctly, but this makes some compilers complain
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
1035 that the while is never reached. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1036 #define RETURN_UNGCPRO(expr) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 { \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 Lisp_Object ret_ungc_val; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1039 ret_ungc_val = (expr); \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040 UNGCPRO; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1041 return ret_ungc_val; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 } \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044 /* Defined in data.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 extern Lisp_Object Qerror_conditions, Qerror_message, Qtop_level;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 extern Lisp_Object Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 extern Lisp_Object Qvoid_variable, Qvoid_function;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 extern Lisp_Object Qsetting_constant, Qinvalid_read_syntax;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 extern Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051 extern Lisp_Object Qend_of_file, Qarith_error;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052 extern Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
4035
465be43d8c05 Declare Qmark_inactive.
Roland McGrath <roland@gnu.org>
parents: 3837
diff changeset
1053 extern Lisp_Object Qmark_inactive;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054
2653
d547e1a7eb9b * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER): New constants, in
Jim Blandy <jimb@redhat.com>
parents: 2605
diff changeset
1055 extern Lisp_Object Qrange_error, Qdomain_error, Qsingularity_error;
d547e1a7eb9b * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER): New constants, in
Jim Blandy <jimb@redhat.com>
parents: 2605
diff changeset
1056 extern Lisp_Object Qoverflow_error, Qunderflow_error;
2155
3ec142562a65 (Qrange_error, Qdomain_error, Qsingularity_error):
Richard M. Stallman <rms@gnu.org>
parents: 2014
diff changeset
1057
706
86cb5db0b6c3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 695
diff changeset
1058 extern Lisp_Object Qintegerp, Qnumberp, Qnatnump, Qsymbolp, Qlistp, Qconsp;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059 extern Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060 extern Lisp_Object Qchar_or_string_p, Qmarkerp, Qvectorp;
706
86cb5db0b6c3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 695
diff changeset
1061 extern Lisp_Object Qinteger_or_marker_p, Qnumber_or_marker_p;
86cb5db0b6c3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 695
diff changeset
1062 extern Lisp_Object Qboundp, Qfboundp;
1306
01d973b5d81b * lisp.h: Declare Qbuffer_or_string_p.
Joseph Arceneaux <jla@gnu.org>
parents: 1290
diff changeset
1063 extern Lisp_Object Qbuffer_or_string_p;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1064 extern Lisp_Object Qcdr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1065
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1066 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067 extern Lisp_Object Qfloatp, Qinteger_or_floatp, Qinteger_or_float_or_marker_p;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1068 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1069
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1070 extern Lisp_Object Qframep;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1071
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1072 extern Lisp_Object Feq (), Fnull (), Flistp (), Fconsp (), Fatom (), Fnlistp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1073 extern Lisp_Object Fintegerp (), Fnatnump (), Fsymbolp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1074 extern Lisp_Object Fvectorp (), Fstringp (), Farrayp (), Fsequencep ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1075 extern Lisp_Object Fbufferp (), Fmarkerp (), Fsubrp (), Fchar_or_string_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076 extern Lisp_Object Finteger_or_marker_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1077 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078 extern Lisp_Object Ffloatp(), Finteger_or_floatp();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1079 extern Lisp_Object Finteger_or_float_or_marker_p(), Ftruncate();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082 extern Lisp_Object Fcar (), Fcar_safe(), Fcdr (), Fcdr_safe();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 extern Lisp_Object Fsetcar (), Fsetcdr ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084 extern Lisp_Object Fboundp (), Ffboundp (), Fmakunbound (), Ffmakunbound ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1085 extern Lisp_Object Fsymbol_function (), Fsymbol_plist (), Fsymbol_name ();
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1086 extern Lisp_Object indirect_function (), Findirect_function ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1087 extern Lisp_Object Ffset (), Fsetplist ();
516
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 493
diff changeset
1088 extern Lisp_Object Fsymbol_value (), find_symbol_value (), Fset ();
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1089 extern Lisp_Object Fdefault_value (), Fset_default (), Fdefault_boundp ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1090
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1091 extern Lisp_Object Faref (), Faset (), Farray_length ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1092
2429
96b55f2f19cd Rename int-to-string to number-to-string, since it can handle
Jim Blandy <jimb@redhat.com>
parents: 2279
diff changeset
1093 extern Lisp_Object Fstring_to_number (), Fnumber_to_string ();
1923
3fad322bb72a * data.c (Fstring_to_int): Rename this to Fstring_to_number, since
Jim Blandy <jimb@redhat.com>
parents: 1779
diff changeset
1094 extern Lisp_Object Feqlsign (), Fgtr (), Flss (), Fgeq (), Fleq ();
3fad322bb72a * data.c (Fstring_to_int): Rename this to Fstring_to_number, since
Jim Blandy <jimb@redhat.com>
parents: 1779
diff changeset
1095 extern Lisp_Object Fneq (), Fzerop ();
3fad322bb72a * data.c (Fstring_to_int): Rename this to Fstring_to_number, since
Jim Blandy <jimb@redhat.com>
parents: 1779
diff changeset
1096 extern Lisp_Object Fplus (), Fminus (), Ftimes (), Fquo (), Frem ();
3fad322bb72a * data.c (Fstring_to_int): Rename this to Fstring_to_number, since
Jim Blandy <jimb@redhat.com>
parents: 1779
diff changeset
1097 extern Lisp_Object Fmax (), Fmin ();
3fad322bb72a * data.c (Fstring_to_int): Rename this to Fstring_to_number, since
Jim Blandy <jimb@redhat.com>
parents: 1779
diff changeset
1098 extern Lisp_Object Flogand (), Flogior (), Flogxor (), Flognot ();
3fad322bb72a * data.c (Fstring_to_int): Rename this to Fstring_to_number, since
Jim Blandy <jimb@redhat.com>
parents: 1779
diff changeset
1099 extern Lisp_Object Flsh (), Fash ();
3fad322bb72a * data.c (Fstring_to_int): Rename this to Fstring_to_number, since
Jim Blandy <jimb@redhat.com>
parents: 1779
diff changeset
1100
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1101 extern Lisp_Object Fadd1 (), Fsub1 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1102
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1103 extern Lisp_Object make_number ();
2515
c0cdd6a80391 long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents: 2439
diff changeset
1104 extern Lisp_Object long_to_cons ();
c0cdd6a80391 long_to_cons and cons_to_long are generally useful things; they're
Jim Blandy <jimb@redhat.com>
parents: 2439
diff changeset
1105 extern unsigned long cons_to_long ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1106 extern void args_out_of_range ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1107 extern void args_out_of_range_3 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108 extern Lisp_Object wrong_type_argument ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1109 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1110 extern Lisp_Object Ffloat_to_int(), Fint_to_float();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1111 extern double extract_float();
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1112 extern Lisp_Object make_float ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1113 extern Lisp_Object Ffloat ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1116 /* Defined in fns.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1117 extern Lisp_Object Qstring_lessp;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1118 extern Lisp_Object Vfeatures;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1119 extern Lisp_Object Fidentity (), Frandom ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1120 extern Lisp_Object Flength ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1121 extern Lisp_Object Fappend (), Fconcat (), Fvconcat (), Fcopy_sequence ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1122 extern Lisp_Object Fsubstring ();
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1123 extern Lisp_Object Fnth (), Fnthcdr (), Fmemq (), Fassq (), Fassoc ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1124 extern Lisp_Object Frassq (), Fdelq (), Fsort ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1125 extern Lisp_Object Freverse (), Fnreverse (), Fget (), Fput (), Fequal ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1126 extern Lisp_Object Ffillarray (), Fnconc (), Fmapcar (), Fmapconcat ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1127 extern Lisp_Object Fy_or_n_p (), do_yes_or_no_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1128 extern Lisp_Object Ffeaturep (), Frequire () , Fprovide ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129 extern Lisp_Object concat2 (), nconc2 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130 extern Lisp_Object assq_no_quit ();
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1131 extern Lisp_Object Fcopy_alist ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133 /* Defined in alloc.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134 extern Lisp_Object Vpurify_flag;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135 extern Lisp_Object Fcons (), Flist(), Fmake_list ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 extern Lisp_Object Fmake_vector (), Fvector (), Fmake_symbol (), Fmake_marker ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 extern Lisp_Object Fmake_string (), build_string (), make_string ();
2014
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
1138 extern Lisp_Object make_event_array (), make_uninit_string ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 extern Lisp_Object Fpurecopy (), make_pure_string ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140 extern Lisp_Object pure_cons (), make_pure_vector ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1141 extern Lisp_Object Fgarbage_collect ();
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1142 extern Lisp_Object Fmake_byte_code ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1144 /* Defined in print.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1145 extern Lisp_Object Vprin1_to_string_buffer;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1146 extern Lisp_Object Fprin1 (), Fprin1_to_string (), Fprinc ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147 extern Lisp_Object Fterpri (), Fprint ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1148 extern Lisp_Object Vstandard_output, Qstandard_output;
439
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1149 extern Lisp_Object Qexternal_debugging_output;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150 extern void temp_output_buffer_setup (), temp_output_buffer_show ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 extern int print_level, print_escape_newlines;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152 extern Lisp_Object Qprint_escape_newlines;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154 /* Defined in lread.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1155 extern Lisp_Object Qvariable_documentation, Qstandard_input;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1156 extern Lisp_Object Vobarray, Vstandard_input;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 extern Lisp_Object Fread (), Fread_from_string ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1158 extern Lisp_Object Fintern (), Fintern_soft (), Fload ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 extern Lisp_Object Fget_file_char (), Fread_char ();
2653
d547e1a7eb9b * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER): New constants, in
Jim Blandy <jimb@redhat.com>
parents: 2605
diff changeset
1160 extern Lisp_Object read_filtered_event ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1161 extern Lisp_Object Feval_current_buffer (), Feval_region ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162 extern Lisp_Object intern (), oblookup ();
2605
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
1163 #define LOADHIST_ATTACH(x) \
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
1164 if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list)
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
1165 extern Lisp_Object Vcurrent_load_list;
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
1166 extern Lisp_Object Vload_history;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1167
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 /* Defined in eval.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1169 extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qdefun, Qmacro;
381
0673e72f6c8c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 377
diff changeset
1170 extern Lisp_Object Vinhibit_quit, Qinhibit_quit, Vquit_flag;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1171 extern Lisp_Object Vmocklisp_arguments, Qmocklisp, Qmocklisp_arguments;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1172 extern Lisp_Object Vautoload_queue;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 extern Lisp_Object Vrun_hooks;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174 extern Lisp_Object Fand (), For (), Fif (), Fprogn (), Fprog1 (), Fprog2 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175 extern Lisp_Object Fsetq (), Fquote ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 extern Lisp_Object Fuser_variable_p (), Finteractive_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177 extern Lisp_Object Fdefun (), Flet (), FletX (), Fwhile ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 extern Lisp_Object Fcatch (), Fthrow (), Funwind_protect ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179 extern Lisp_Object Fcondition_case (), Fsignal ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1180 extern Lisp_Object Ffunction_type (), Fautoload (), Fcommandp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1181 extern Lisp_Object Feval (), Fapply (), Ffuncall ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1182 extern Lisp_Object Fglobal_set (), Fglobal_value (), Fbacktrace ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183 extern Lisp_Object apply1 (), call0 (), call1 (), call2 (), call3 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1184 extern Lisp_Object apply_lambda ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1185 extern Lisp_Object internal_catch ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1186 extern Lisp_Object internal_condition_case ();
5791
12fc8c6d4315 (internal_condition_case_1): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 5736
diff changeset
1187 extern Lisp_Object internal_condition_case_1 ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 extern Lisp_Object unbind_to ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 extern void error ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190 extern Lisp_Object un_autoload ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1192 /* Defined in editfns.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1193 extern Lisp_Object Vprefix_arg, Qminus, Vcurrent_prefix_arg;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1194 extern Lisp_Object Fgoto_char ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1195 extern Lisp_Object Fpoint_min_marker (), Fpoint_max_marker ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196 extern Lisp_Object Fpoint_min (), Fpoint_max ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1197 extern Lisp_Object Fpoint (), Fpoint_marker (), Fmark_marker ();
516
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 493
diff changeset
1198 extern Lisp_Object Ffollowing_char (), Fprevious_char (), Fchar_after ();
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 493
diff changeset
1199 extern Lisp_Object Finsert ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 extern Lisp_Object Feolp (), Feobp (), Fbolp (), Fbobp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 extern Lisp_Object Fformat (), format1 ();
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1202 extern Lisp_Object make_buffer_string (), Fbuffer_substring ();
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1203 extern Lisp_Object Fbuffer_string ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 extern Lisp_Object Fstring_equal (), Fstring_lessp (), Fbuffer_substring_lessp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 extern Lisp_Object save_excursion_save (), save_restriction_save ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1206 extern Lisp_Object save_excursion_restore (), save_restriction_restore ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1207 extern Lisp_Object Fchar_to_string ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1208
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1209 /* defined in buffer.c */
3539
a9b1e2a5523b Don't declare malloc or realloc.
Richard M. Stallman <rms@gnu.org>
parents: 3324
diff changeset
1210 extern Lisp_Object Vbuffer_alist, Vinhibit_read_only;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211 extern Lisp_Object Fget_buffer (), Fget_buffer_create (), Fset_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1212 extern Lisp_Object Fbarf_if_buffer_read_only ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1213 extern Lisp_Object Fcurrent_buffer (), Fswitch_to_buffer (), Fpop_to_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214 extern Lisp_Object Fother_buffer ();
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
1215 extern Lisp_Object Qoverlayp;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216 extern struct buffer *all_buffers;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1218 /* defined in marker.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1219
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220 extern Lisp_Object Fmarker_position (), Fmarker_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1221 extern Lisp_Object Fcopy_marker ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1222
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223 /* Defined in fileio.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1224
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1225 extern Lisp_Object Qfile_error;
1681
a03b87a92614 * fileio.c (find_file_handler): Rename this to
Jim Blandy <jimb@redhat.com>
parents: 1567
diff changeset
1226 extern Lisp_Object Ffind_file_name_handler ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1227 extern Lisp_Object Ffile_name_as_directory ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228 extern Lisp_Object Fexpand_file_name (), Ffile_name_nondirectory ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1229 extern Lisp_Object Fsubstitute_in_file_name ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1230 extern Lisp_Object Ffile_symlink_p ();
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1231 extern Lisp_Object Fverify_visited_file_modtime ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1232 extern Lisp_Object Ffile_exists_p ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1233 extern Lisp_Object Fdirectory_file_name ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1234 extern Lisp_Object Ffile_name_directory ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1235 extern Lisp_Object expand_and_dir_to_file ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1236 extern Lisp_Object Ffile_accessible_directory_p ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238 /* Defined in abbrev.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1240 extern Lisp_Object Vfundamental_mode_abbrev_table;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242 /* defined in search.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243 extern Lisp_Object Fstring_match ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244 extern Lisp_Object Fscan_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1245
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1246 /* defined in minibuf.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1248 extern Lisp_Object last_minibuf_string;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1249 extern Lisp_Object read_minibuf (), Fcompleting_read ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1250 extern Lisp_Object Fread_from_minibuffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1251 extern Lisp_Object Fread_variable (), Fread_buffer (), Fread_key_sequence ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1252 extern Lisp_Object Fread_minibuffer (), Feval_minibuffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1253 extern Lisp_Object Fread_string (), Fread_file_name ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1254 extern Lisp_Object Fread_no_blanks_input ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1255
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1256 /* Defined in callint.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1257
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1258 extern Lisp_Object Vcommand_history;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1259 extern Lisp_Object Qcall_interactively;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1260 extern Lisp_Object Fcall_interactively ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1261 extern Lisp_Object Fprefix_numeric_value ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1262
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 /* defined in casefiddle.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 extern Lisp_Object Fdowncase (), Fupcase (), Fcapitalize ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1266
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1267 /* defined in keyboard.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1268
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1269 extern Lisp_Object Qdisabled;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1270 extern Lisp_Object Vhelp_form, Vtop_level;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1271 extern Lisp_Object Fdiscard_input (), Frecursive_edit ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1272 extern Lisp_Object Fcommand_execute (), Finput_pending_p ();
1990
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
1273 extern Lisp_Object Qvertical_scroll_bar;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1275 /* defined in keymap.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1277 extern Lisp_Object Qkeymap, Qmenu_bar;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 extern Lisp_Object current_global_map;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1279 extern Lisp_Object Fkey_description (), Fsingle_key_description ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1280 extern Lisp_Object Fwhere_is_internal ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1281 extern Lisp_Object access_keymap (), store_in_keymap ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 extern Lisp_Object get_keyelt (), get_keymap();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284 /* defined in indent.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 extern Lisp_Object Fvertical_motion (), Findent_to (), Fcurrent_column ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1286
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1287 /* defined in window.c */
3800
41923469aefa Remove decl for Qvisible.
Jim Blandy <jimb@redhat.com>
parents: 3793
diff changeset
1288 extern Lisp_Object Qwindowp, Qwindow_live_p;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 extern Lisp_Object Fget_buffer_window ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1290 extern Lisp_Object Fsave_window_excursion ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1291 extern Lisp_Object Fset_window_configuration (), Fcurrent_window_configuration ();
439
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1292 extern Lisp_Object Fcoordinates_in_window_p ();
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1293 extern Lisp_Object Fwindow_at ();
1779
6f0c4252940f * window.c (window_internal_width): New function.
Jim Blandy <jimb@redhat.com>
parents: 1713
diff changeset
1294 extern int window_internal_height (), window_internal_width ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1295
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1296 /* defined in frame.c */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1297 extern Lisp_Object Fframep ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1298 extern Lisp_Object Fselect_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1299 extern Lisp_Object Ffocus_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1300 extern Lisp_Object Funfocus_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1301 extern Lisp_Object Fselected_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1302 extern Lisp_Object Fwindow_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1303 extern Lisp_Object Fframe_root_window ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1304 extern Lisp_Object Fframe_selected_window ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1305 extern Lisp_Object Fframe_list ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1306 extern Lisp_Object Fnext_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1307 extern Lisp_Object Fdelete_frame ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 extern Lisp_Object Fread_mouse_position ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309 extern Lisp_Object Fset_mouse_position ();
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1310 extern Lisp_Object Fmake_frame_visible ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1311 extern Lisp_Object Fmake_frame_invisible ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1312 extern Lisp_Object Ficonify_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1313 extern Lisp_Object Fdeiconify_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1314 extern Lisp_Object Fframe_visible_p ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1315 extern Lisp_Object Fvisible_frame_list ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1316 extern Lisp_Object Fframe_parameters ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1317 extern Lisp_Object Fmodify_frame_parameters ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1318 extern Lisp_Object Fframe_pixel_size ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1319 extern Lisp_Object Fframe_height ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1320 extern Lisp_Object Fframe_width ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1321 extern Lisp_Object Fset_frame_height ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1322 extern Lisp_Object Fset_frame_width ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1323 extern Lisp_Object Fset_frame_size ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1324 extern Lisp_Object Fset_frame_position ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 #ifndef HAVE_X11
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326 extern Lisp_Object Frubber_band_rectangle ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 #endif /* HAVE_X11 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 /* defined in emacs.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 extern Lisp_Object decode_env_path ();
4528
5622149e7f75 (Vinvocation_directory): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4139
diff changeset
1331 extern Lisp_Object Vinvocation_name, Vinvocation_directory;
5642
665c0dc2b4bd (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 5241
diff changeset
1332 extern Lisp_Object Vinstallation_directory;
3837
85652925d5b8 * emacs.c (Fkill_emacs): Pass third argument to shut_down_emacs.
Jim Blandy <jimb@redhat.com>
parents: 3800
diff changeset
1333 void shut_down_emacs ( /* int signal, int no_x, Lisp_Object stuff */ );
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 /* Nonzero means don't do interactive redisplay and don't change tty modes */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 extern int noninteractive;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336 /* Nonzero means don't do use window-system-specific display code */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 extern int inhibit_window_system;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 /* defined in process.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340 extern Lisp_Object Fget_process (), Fget_buffer_process (), Fprocessp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 extern Lisp_Object Fprocess_status (), Fkill_process ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 /* defined in callproc.c */
439
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1344 extern Lisp_Object Vexec_path, Vexec_directory, Vdata_directory;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 /* defined in doc.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347 extern Lisp_Object Vdoc_file_name;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1348 extern Lisp_Object Fsubstitute_command_keys ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 extern Lisp_Object Fdocumentation (), Fdocumentation_property ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 /* defined in bytecode.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 extern Lisp_Object Qbytecode;
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1353 extern Lisp_Object Fbyte_code ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355 /* defined in macros.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 extern Lisp_Object Qexecute_kbd_macro;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 extern Lisp_Object Fexecute_kbd_macro ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1359 /* defined in undo.c */
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1360 extern Lisp_Object Fundo_boundary ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1361 extern Lisp_Object truncate_undo_list ();
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1362
4067
379b03502e48 (Qinsert_before_hooks, Qinsert_after_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4035
diff changeset
1363 /* defined in textprop.c */
4079
c1b16f1167d4 (Qinsert_in_front_hooks, Qinsert_behind_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4067
diff changeset
1364 extern Lisp_Object Qmodification_hooks;
c1b16f1167d4 (Qinsert_in_front_hooks, Qinsert_behind_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4067
diff changeset
1365 extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks;
5128
16e75a0b53e5 Declare Fnext_single_property_change and Fnext_property_change.
Richard M. Stallman <rms@gnu.org>
parents: 4826
diff changeset
1366 extern Lisp_Object Fnext_property_change ();
16e75a0b53e5 Declare Fnext_single_property_change and Fnext_property_change.
Richard M. Stallman <rms@gnu.org>
parents: 4826
diff changeset
1367 extern Lisp_Object Fnext_single_property_change ();
4067
379b03502e48 (Qinsert_before_hooks, Qinsert_after_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4035
diff changeset
1368
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369 /* Nonzero means Emacs has already been initialized.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1370 Used during startup to detect startup of dumped Emacs. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1371 extern int initialized;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373 extern int immediate_quit; /* Nonzero means ^G can quit instantly */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1375 extern void debugger ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1376
2872
0ab5a9f88ff3 * lisp.h (malloc, realloc): Declare these to return void *, to
Jim Blandy <jimb@redhat.com>
parents: 2780
diff changeset
1377 extern char *getenv (), *ctime (), *getwd ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1378 extern long *xmalloc (), *xrealloc ();
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2429
diff changeset
1379 extern void xfree ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1380
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
1381 extern char *egetenv ();
2605
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
1382
5736
6f199038b06d (get_system_name): Declared.
Karl Heuer <kwzh@gnu.org>
parents: 5642
diff changeset
1383 /* Return the name of the machine we're running on. */
6f199038b06d (get_system_name): Declared.
Karl Heuer <kwzh@gnu.org>
parents: 5642
diff changeset
1384 extern char *get_system_name ();