annotate src/lisp.h @ 2499:da67547eda51

* configure.in: When checking for X windows, search for an X11 subdirectory of ${x_includes}. * configure.in: Check for gettimeofday function, for getdate.y. Change `configure' to a mixture of custom code and autoconf stuff. autoconf can't derive all the information we need, but we'd really like to be able to take advantage of some of its tests, and its file-editing facilities. * configure.in: Renamed from configure. Quote the sections of shell script we want copied literally to the configure script. (compile): Initialize this to make the autoconf macros' code happy. Use AC_PROG_CC, AC_CONST, and AC_RETSIGTYPE instead of writing out code to do their jobs. Use autoconf to produce Makefile and src/config.h. Remove the Makefile-style comment that autoconf places at the top of src/config.h. (config_h_opts): Removed - no longer necessary. * Makefile.in (configname): Renamed to configuration. (CONFIG_CFLAGS): Renamed to DEFS. (CC, DEFS, C_SWITCH_SYSTEM, version, configuration): Adjusted to get values via autoload @cookies@. (libsrc_libs): Get this from autoconf. We used to do nothing about this. (${SUBDIR}): Pass DEFS to submakes instead of CONFIG_CFLAGS.
author Jim Blandy <jimb@redhat.com>
date Sat, 10 Apr 1993 06:02:36 +0000
parents b6c62e4abf59
children c0cdd6a80391
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.
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1992 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 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 Lisp_Window_Configuration
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
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 ,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 Lisp_Float
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 #ifndef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 #ifndef BIG_ENDIAN
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 /* Definition of Lisp_Object for little-endian machines. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 typedef
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 union Lisp_Object
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 /* Used for comparing two Lisp_Objects;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 also, positive integers can be accessed fast this way. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 int i;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 } s;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 } u;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 enum Lisp_Type type: 7;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 /* The markbit is not really part of the value of a Lisp_Object,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 and is always zero except during garbage collection. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 unsigned int markbit: 1;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 } gu;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 Lisp_Object;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 #else /* If BIG_ENDIAN */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 typedef
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 union Lisp_Object
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 /* Used for comparing two Lisp_Objects;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 also, positive integers can be accessed fast this way. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 int i;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 } s;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 char type;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 } u;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 /* The markbit is not really part of the value of a Lisp_Object,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 and is always zero except during garbage collection. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 unsigned int markbit: 1;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 enum Lisp_Type type: 7;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 unsigned int val: 24;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 } gu;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 Lisp_Object;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 #endif /* BIG_ENDIAN */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 /* If union type is not wanted, define Lisp_Object as just a number
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 and define the macros below to extract fields by shifting */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 #ifdef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 #define Lisp_Object int
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 /* These values are overridden by the m- file on some machines. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 #ifndef VALBITS
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 #define VALBITS 24
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 #ifndef GCTYPEBITS
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 #define GCTYPEBITS 7
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 #ifndef VALMASK
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 #define VALMASK ((1<<VALBITS) - 1)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 #define GCTYPEMASK ((1<<GCTYPEBITS) - 1)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 #define MARKBIT (1 << (VALBITS + GCTYPEBITS))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 /* These macros extract various sorts of values from a Lisp_Object.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 For example, if tem is a Lisp_Object whose type is Lisp_Cons,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 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
260
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 #ifdef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 /* 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
264 (doing the result of the below & ((1 << (GCTYPE + 1)) - 1) would work
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 on all machines, but would penalise machines which don't need it)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 #ifndef XTYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 #define XTYPE(a) ((enum Lisp_Type) ((a) >> VALBITS))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 #ifndef XSETTYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 #define XSETTYPE(a, b) ((a) = XUINT (a) | ((int)(b) << VALBITS))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 /* Use XFASTINT for fast retrieval and storage of integers known
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 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
277 #define XFASTINT(a) (a)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 /* Extract the value of a Lisp_Object as a signed integer. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 #ifndef XINT /* Some machines need to do this differently. */
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 621
diff changeset
282 #define XINT(a) (((a) << (INTBITS-VALBITS)) >> (INTBITS-VALBITS))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 /* Extract the value as an unsigned integer. This is a basis
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 for extracting it as a pointer to a structure in storage. */
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 XUINT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 #define XUINT(a) ((a) & VALMASK)
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 #ifndef XPNTR
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 #ifdef HAVE_SHM
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 /* 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
295 extern int pure_size;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 #define XPNTR(a) \
336
25114d2b73e3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 302
diff changeset
297 (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 #else /* not HAVE_SHM */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 #ifdef DATA_SEG_BITS
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 /* This case is used for the rt-pc.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 In the diffs I was given, it checked for ptr = 0
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 and did not adjust it in that case.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 But I don't think that zero should ever be found
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 in a Lisp object whose data type says it points to something. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 #define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 #else
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 #define XPNTR(a) XUINT (a)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 #endif /* not HAVE_SHM */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 #endif /* no XPNTR */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 #ifndef XSETINT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 #define XSETINT(a, b) ((a) = ((a) & ~VALMASK) | ((b) & VALMASK))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 #ifndef XSETUINT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 #define XSETUINT(a, b) XSETINT (a, b)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 #ifndef XSETPNTR
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 #define XSETPNTR(a, b) XSETINT (a, b)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 #ifndef XSET
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 #define XSET(var, type, ptr) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 ((var) = ((int)(type) << VALBITS) + ((int) (ptr) & VALMASK))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 /* During garbage collection, XGCTYPE must be used for extracting types
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 so that the mark bit is ignored. XMARKBIT accesses the markbit.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 Markbits are used only in particular slots of particular structure types.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 Other markbits are always zero.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 Outside of garbage collection, all mark bits are always zero. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 #ifndef XGCTYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 #define XGCTYPE(a) ((enum Lisp_Type) (((a) >> VALBITS) & GCTYPEMASK))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 #if VALBITS + GCTYPEBITS == INTBITS - 1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 /* Make XMARKBIT faster if mark bit is sign bit. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 #ifndef XMARKBIT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 #define XMARKBIT(a) ((a) < 0)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 #endif /* markbit is sign bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 #ifndef XMARKBIT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 #define XMARKBIT(a) ((a) & MARKBIT)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 #ifndef XSETMARKBIT
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 #define XSETMARKBIT(a,b) ((a) = ((a) & ~MARKBIT) | ((b) ? MARKBIT : 0))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 #ifndef XMARK
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 #define XMARK(a) ((a) |= MARKBIT)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 #ifndef XUNMARK
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 #define XUNMARK(a) ((a) &= ~MARKBIT)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 #ifndef NO_UNION_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 #define XTYPE(a) ((enum Lisp_Type) (a).u.type)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 #define XSETTYPE(a, b) ((a).u.type = (char) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 /* Use XFASTINT for fast retrieval and storage of integers known
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 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
371 #define XFASTINT(a) ((a).i)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 #ifdef EXPLICIT_SIGN_EXTEND
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 /* 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
375 #define XINT(a) (((a).i << 8) >> 8)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 #else
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 #define XINT(a) ((a).s.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 #endif /* EXPLICIT_SIGN_EXTEND */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 #define XUINT(a) ((a).u.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 #define XPNTR(a) ((a).u.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 #define XSETINT(a, b) ((a).s.val = (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 #define XSETUINT(a, b) ((a).s.val = (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 #define XSETPNTR(a, b) ((a).s.val = (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 #define XSET(var, vartype, ptr) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 (((var).s.type = ((char) (vartype))), ((var).s.val = ((int) (ptr))))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 /* During garbage collection, XGCTYPE must be used for extracting types
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 so that the mark bit is ignored. XMARKBIT access the markbit.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 Markbits are used only in particular slots of particular structure types.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 Other markbits are always zero.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 Outside of garbage collection, all mark bits are always zero. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 #define XGCTYPE(a) ((a).gu.type)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 #define XMARKBIT(a) ((a).gu.markbit)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 #define XSETMARKBIT(a,b) (XMARKBIT(a) = (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 #define XMARK(a) (XMARKBIT(a) = 1)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 #define XUNMARK(a) (XMARKBIT(a) = 0)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 #endif /* NO_UNION_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 #define XCONS(a) ((struct Lisp_Cons *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 #define XBUFFER(a) ((struct buffer *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 #define XVECTOR(a) ((struct Lisp_Vector *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 #define XSUBR(a) ((struct Lisp_Subr *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 #define XSTRING(a) ((struct Lisp_String *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 #define XSYMBOL(a) ((struct Lisp_Symbol *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 #define XFUNCTION(a) ((Lisp_Object (*)()) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 #define XMARKER(a) ((struct Lisp_Marker *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 #define XOBJFWD(a) ((Lisp_Object *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 #define XINTPTR(a) ((int *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 #define XWINDOW(a) ((struct window *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 #define XPROCESS(a) ((struct Lisp_Process *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 #define XFLOAT(a) ((struct Lisp_Float *) XPNTR(a))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 #define XSETCONS(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 #define XSETBUFFER(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 #define XSETVECTOR(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 #define XSETSUBR(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 #define XSETSTRING(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 #define XSETSYMBOL(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 #define XSETFUNCTION(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 #define XSETMARKER(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 #define XSETOBJFWD(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 #define XSETINTPTR(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 #define XSETWINDOW(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 #define XSETPROCESS(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 #define XSETFLOAT(a, b) XSETPNTR(a, (int) (b))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
432 #ifdef USE_TEXT_PROPERTIES
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
433 /* 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
434
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
435 struct interval
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
436 {
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
437 /* 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
438
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
439 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
440 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
441 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
442 struct interval *right; /* Intervals which succeed me. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
443 struct interval *parent; /* Parent in the tree, or the Lisp_Object
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
444 containing this interval tree. */
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 /* 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
447 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
448 for purposes of speed. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
449
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
450 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
451 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
452 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
453 before this interval goes into it. */
1306
01d973b5d81b * lisp.h: Declare Qbuffer_or_string_p.
Joseph Arceneaux <jla@gnu.org>
parents: 1290
diff changeset
454 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
455
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
456 Lisp_Object plist; /* Properties of this interval. */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
457 };
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
458
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
459 typedef struct interval *INTERVAL;
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
460
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
461 /* 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
462 #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
463 { 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
464 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
465
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
466 /* 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
467 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
468 #define DECLARE_INTERVALS INTERVAL intervals;
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
469
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
470 /* Macro used to condionally compile interval initialization into
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
471 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
472 #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
473
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
474 #else /* No text properties */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
475
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
476 /* 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
477
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
478 #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
479
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
480 #define INTERVAL
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
481 #define DECLARE_INTERVALS
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
482 #define INITIALIZE_INTERVAL(ptr,val)
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
483
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
484 #endif /* USE_TEXT_PROPERTIES */
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
485
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 /* In a cons, the markbit of the car is the gc mark bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 struct Lisp_Cons
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 Lisp_Object car, cdr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 /* 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
494 /* This is not really in use now */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 struct Lisp_Buffer_Cons
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 Lisp_Object car, cdr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 struct buffer *buffer;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 int bufpos;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 /* 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
504
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 struct Lisp_String
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 int size;
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
508 DECLARE_INTERVALS /* `data' field must be last. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 unsigned char data[1];
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 struct Lisp_Vector
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 int size;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 struct Lisp_Vector *next;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 Lisp_Object contents[1];
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 /* 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
520
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 struct Lisp_Symbol
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 struct Lisp_String *name;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 Lisp_Object value;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 Lisp_Object function;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 Lisp_Object plist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 struct Lisp_Symbol *next; /* -> next symbol in this obarray bucket */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 struct Lisp_Subr
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 Lisp_Object (*function) ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 short min_args, max_args;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 char *symbol_name;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 char *prompt;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 char *doc;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 /* 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
540
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 struct Lisp_Marker
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 struct buffer *buffer;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 Lisp_Object chain;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 int bufpos;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 int modified;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 /* Optional Lisp floating point type */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 struct Lisp_Float
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 type; /* essentially used for mark-bit
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 and chaining when on free-list */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 double data;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 /* A character, declared with the following typedef, is a member
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 of some character set associated with the current buffer. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561 typedef unsigned char UCHAR;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 /* Meanings of slots in a Lisp_Compiled: */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 #define COMPILED_ARGLIST 0
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 #define COMPILED_BYTECODE 1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 #define COMPILED_CONSTANTS 2
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 #define COMPILED_STACK_DEPTH 3
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 #define COMPILED_DOC_STRING 4
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 #define COMPILED_INTERACTIVE 5
2014
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
571
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
572 /* Flag bits in a character. */
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
573
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
574 #define CHAR_META 0x800000
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
575 #define CHAR_CTL 0x400000
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
576 #define CHAR_SHIFT 0x200000
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 /* Data type checking */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
580 #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
581 #define GC_NILP(x) GC_EQ (x, Qnil)
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
582
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
583 #ifdef LISP_FLOAT_TYPE
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
584 #define NUMBERP(x) (XTYPE (x) == Lisp_Int || XTYPE (x) == Lisp_Float)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
585 #else
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
586 #define NUMBERP(x) (XTYPE (x) == Lisp_Int)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
589 #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
590 #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
591 #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
592 #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
593 #define VECTORP(x) (XTYPE ((x)) == Lisp_Vector)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 #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
595 #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
596 #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
597 #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
598 #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
599 #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
600 #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
601 #define WINDOW_CONFIGURATIONP(x) (XTYPE ((x)) == Lisp_Window_Configuration)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
602 #define FLOATP(x) (XTYPE ((x)) == Lisp_Float)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
603
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 #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
605 #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
606
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 #define CHECK_LIST(x, i) \
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
608 { if ((XTYPE ((x)) != Lisp_Cons) && !NILP (x)) x = wrong_type_argument (Qlistp, (x)); }
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610 #define CHECK_STRING(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 { if (XTYPE ((x)) != Lisp_String) x = wrong_type_argument (Qstringp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613 #define CHECK_CONS(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
614 { if (XTYPE ((x)) != Lisp_Cons) x = wrong_type_argument (Qconsp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
616 #define CHECK_SYMBOL(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
617 { if (XTYPE ((x)) != Lisp_Symbol) x = wrong_type_argument (Qsymbolp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
619 #define CHECK_VECTOR(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
620 { if (XTYPE ((x)) != Lisp_Vector) x = wrong_type_argument (Qvectorp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
621
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622 #define CHECK_BUFFER(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 { if (XTYPE ((x)) != Lisp_Buffer) x = wrong_type_argument (Qbufferp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 #define CHECK_WINDOW(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 { if (XTYPE ((x)) != Lisp_Window) x = wrong_type_argument (Qwindowp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
628 /* 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
629 "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
630 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
631
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
632 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
633 vchild, and hchild members are all nil. */
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
634
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
635 #define CHECK_LIVE_WINDOW(x, i) \
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
636 { \
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
637 if (XTYPE ((x)) != Lisp_Window \
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
638 || 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
639 x = wrong_type_argument (Qwindow_live_p, (x)); \
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
640 }
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
641
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 #define CHECK_PROCESS(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 { if (XTYPE ((x)) != Lisp_Process) x = wrong_type_argument (Qprocessp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645 #define CHECK_NUMBER(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 { if (XTYPE ((x)) != Lisp_Int) x = wrong_type_argument (Qintegerp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648 #define CHECK_NATNUM(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649 { if (XTYPE ((x)) != Lisp_Int || XINT ((x)) < 0) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650 x = wrong_type_argument (Qnatnump, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652 #define CHECK_MARKER(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 { if (XTYPE ((x)) != Lisp_Marker) x = wrong_type_argument (Qmarkerp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 #define CHECK_NUMBER_COERCE_MARKER(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 { if (XTYPE ((x)) == Lisp_Marker) XFASTINT (x) = marker_position (x); \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 else if (XTYPE ((x)) != Lisp_Int) x = wrong_type_argument (Qinteger_or_marker_p, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 #ifndef DBL_DIG
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 #define DBL_DIG 20
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 #define XFLOATINT(n) extract_float((n))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667 #define CHECK_FLOAT(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668 { if (XTYPE (x) != Lisp_Float) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
669 x = wrong_type_argument (Qfloatp, (x)); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
670
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671 #define CHECK_NUMBER_OR_FLOAT(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
672 { if (XTYPE (x) != Lisp_Float && XTYPE (x) != Lisp_Int) \
695
e3fac20d3015 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 648
diff changeset
673 x = wrong_type_argument (Qnumberp, (x)); }
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
674
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 #define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x, i) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
676 { if (XTYPE (x) == Lisp_Marker) XFASTINT (x) = marker_position (x); \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677 else if (XTYPE (x) != Lisp_Int && XTYPE (x) != Lisp_Float) \
695
e3fac20d3015 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 648
diff changeset
678 x = wrong_type_argument (Qnumber_or_marker_p, (x)); }
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
679
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 #else /* Not LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 #define CHECK_NUMBER_OR_FLOAT CHECK_NUMBER
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 #define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER CHECK_NUMBER_COERCE_MARKER
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 #define XFLOATINT(n) XINT((n))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 /* Cast pointers to this type to compare them. Some machines want int. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 #ifndef PNTR_COMPARISON_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 #define PNTR_COMPARISON_TYPE unsigned int
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 #endif
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 a built-in function for calling from Lisp.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 `lname' should be the name to give the function in Lisp,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 as a null-terminated C string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 `fnname' should be the name of the function in C.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 By convention, it starts with F.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 `sname' should be the name for the C constant structure
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 that records information on this function for internal use.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701 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
702 It's too bad that C macros can't compute this from `fnname'.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 `minargs' should be a number, the minimum number of arguments allowed.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 `maxargs' should be a number, the maximum number of arguments allowed,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 or else MANY or UNEVALLED.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 MANY means pass a vector of evaluated arguments,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 in the form of an integer number-of-arguments
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 followed by the address of a vector of Lisp_Objects
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 which contains the argument values.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 UNEVALLED means pass the list of unevaluated arguments
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 `prompt' says how to read arguments for an interactive call.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 This can be zero or a C string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 Zero means that interactive calls are not allowed.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 A string is interpreted in a hairy way:
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 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
716 The first character of the line controls the type of parsing:
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 s -- read a string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 S -- read a symbol.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 k -- read a key sequence and return it as a string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 a -- read a function name (symbol) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 C -- read a command name (symbol) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 v -- read a variable name (symbol) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 b -- read a buffer name (a string) with completion.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 B -- buffer name, may be existing buffer or may not be.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725 f -- read a file name, file must exist.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 F -- read a file name, file need not exist.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 n -- read a number.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 c -- read a character and return it as a number.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 p -- use the numeric value of the prefix argument.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 P -- use raw value of prefix - can be nil, -, (NUMBER) or NUMBER.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 x -- read a Lisp object from the minibuffer.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 X -- read a Lisp form from the minibuffer and use its value.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 A null string means call interactively with no arguments.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 `doc' is documentation for the user.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 Lisp_Object fnname (); \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 struct Lisp_Subr sname = {fnname, minargs, maxargs, lname, prompt, 0}; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 Lisp_Object fnname
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 /* defsubr (Sname);
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 is how we define the symbol for function `name' at start-up time. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 extern void defsubr ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 #define MANY -2
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 #define UNEVALLED -1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 extern void defvar_lisp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 extern void defvar_bool ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 extern void defvar_int ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 /* Macros we use to define forwarded Lisp variables.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 These are used in the syms_of_FILENAME functions. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 #define DEFVAR_LISP(lname, vname, doc) defvar_lisp (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 #define DEFVAR_LISP_NOPRO(lname, vname, doc) defvar_lisp_nopro (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 #define DEFVAR_BOOL(lname, vname, doc) defvar_bool (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 #define DEFVAR_INT(lname, vname, doc) defvar_int (lname, vname)
999
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
760 #define DEFVAR_PER_BUFFER(lname, vname, type, doc) \
d8d503897aa5 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
761 defvar_per_buffer (lname, vname, type, 0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
763 /* 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
764
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
765 /* 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
766 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
767 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
768 functions to be called for record_unwind_protect.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
770 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
771 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
772 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
773 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
774 form.
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
775 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
776 undoes the bindings made by a let form or function call. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 struct specbinding
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 Lisp_Object symbol, old_value;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 Lisp_Object (*func) ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 Lisp_Object unused; /* Dividing by 16 is faster than by 12 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 extern struct specbinding *specpdl;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 extern struct specbinding *specpdl_ptr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 extern int specpdl_size;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
788 /* Everything needed to describe an active condition case. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 struct handler
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 {
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
791 /* The handler clauses and variable from the condition-case form. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
792 Lisp_Object handler;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
793 Lisp_Object var;
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
794
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
795 /* Used to effect the longjump out to the handler. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796 struct catchtag *tag;
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
797
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
798 /* The next enclosing handler. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 struct handler *next;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 extern struct handler *handlerlist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 extern struct catchtag *catchlist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 extern struct backtrace *backtrace_list;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 /* An address near the bottom of the stack.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 Tells GC how to save a copy of the stack. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 extern char *stack_bottom;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 /* Check quit-flag and quit if it is non-nil. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 #define QUIT \
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
814 if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
815 { Vquit_flag = Qnil; Fsignal (Qquit, Qnil); }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 /* Nonzero if ought to quit now. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
819 #define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 /* 1 if CH is upper case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822
377
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
823 #define UPPERCASEP(CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
824 (XSTRING (current_buffer->downcase_table)->data[CH] != (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 /* 1 if CH is lower case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 #define LOWERCASEP(CH) \
377
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
829 (!UPPERCASEP (CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
830 && XSTRING (current_buffer->upcase_table)->data[CH] != (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 /* 1 if CH is neither upper nor lower case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 #define NOCASEP(CH) (XSTRING (current_buffer->upcase_table)->data[CH] == (CH))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 /* Upcase a character, or make no change if that cannot be done. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837
377
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
838 #define UPCASE(CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
839 (XSTRING (current_buffer->downcase_table)->data[CH] == (CH) \
759f018b08b1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 336
diff changeset
840 ? UPCASE1 (CH) : (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842 /* Upcase a character known to be not upper case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844 #define UPCASE1(CH) (XSTRING (current_buffer->upcase_table)->data[CH])
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 /* Downcase a character, or make no change if that cannot be done. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
848 #define DOWNCASE(CH) (XSTRING (current_buffer->downcase_table)->data[CH])
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 /* Current buffer's map from characters to lower-case characters. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 #define DOWNCASE_TABLE XSTRING (current_buffer->downcase_table)->data
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 /* Table mapping each char to the next char with the same lowercase version.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 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
856 #define UPCASE_TABLE XSTRING (current_buffer->upcase_table)->data
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 extern Lisp_Object Vascii_downcase_table, Vascii_upcase_table;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 /* number of bytes of structure consed since last GC */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 extern int consing_since_gc;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 /* threshold for doing another gc */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866 extern int gc_cons_threshold;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 /* Structure for recording stack slots that need marking */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 /* 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
871 whose value should be marked in garbage collection.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 Normally every link of the chain is an automatic variable of a function,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873 and its `val' points to some argument or local variable of the function.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
874 On exit to the function, the chain is set back to the value it had on entry.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
875 This way, no link remains in the chain when the stack frame containing the link disappears.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
877 Every function that can call Feval must protect in this fashion all
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 Lisp_Object variables whose contents will be used again. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 extern struct gcpro *gcprolist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
882 struct gcpro
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884 struct gcpro *next;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
885 Lisp_Object *var; /* Address of first protected variable */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
886 int nvars; /* Number of consecutive protected variables */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
889 #define GCPRO1(varname) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 gcprolist = &gcpro1; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 #define GCPRO2(varname1, varname2) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896 gcprolist = &gcpro2; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 #define GCPRO3(varname1, varname2, varname3) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 gcprolist = &gcpro3; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 #define GCPRO4(varname1, varname2, varname3, varname4) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 gcprolist = &gcpro4; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 /* Call staticpro (&var) to protect static variable `var'. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 void staticpro();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 #define UNGCPRO (gcprolist = gcpro1.next)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916
1990
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
917 /* 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
918 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
919 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
920 that the while is never reached. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 #define RETURN_UNGCPRO(expr) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 { \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923 Lisp_Object ret_ungc_val; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924 ret_ungc_val = (expr); \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 UNGCPRO; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926 return ret_ungc_val; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 } \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
928
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929 /* Defined in data.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930 extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 extern Lisp_Object Qerror_conditions, Qerror_message, Qtop_level;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932 extern Lisp_Object Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
933 extern Lisp_Object Qvoid_variable, Qvoid_function;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
934 extern Lisp_Object Qsetting_constant, Qinvalid_read_syntax;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
935 extern Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936 extern Lisp_Object Qend_of_file, Qarith_error;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
937 extern Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
938
2155
3ec142562a65 (Qrange_error, Qdomain_error, Qsingularity_error):
Richard M. Stallman <rms@gnu.org>
parents: 2014
diff changeset
939 Lisp_Object Qrange_error, Qdomain_error, Qsingularity_error;
3ec142562a65 (Qrange_error, Qdomain_error, Qsingularity_error):
Richard M. Stallman <rms@gnu.org>
parents: 2014
diff changeset
940 Lisp_Object Qoverflow_error, Qunderflow_error;
3ec142562a65 (Qrange_error, Qdomain_error, Qsingularity_error):
Richard M. Stallman <rms@gnu.org>
parents: 2014
diff changeset
941
706
86cb5db0b6c3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 695
diff changeset
942 extern Lisp_Object Qintegerp, Qnumberp, Qnatnump, Qsymbolp, Qlistp, Qconsp;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
943 extern Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
944 extern Lisp_Object Qchar_or_string_p, Qmarkerp, Qvectorp;
706
86cb5db0b6c3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 695
diff changeset
945 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
946 extern Lisp_Object Qboundp, Qfboundp;
1306
01d973b5d81b * lisp.h: Declare Qbuffer_or_string_p.
Joseph Arceneaux <jla@gnu.org>
parents: 1290
diff changeset
947 extern Lisp_Object Qbuffer_or_string_p;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
948 extern Lisp_Object Qcdr;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
949
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
950 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951 extern Lisp_Object Qfloatp, Qinteger_or_floatp, Qinteger_or_float_or_marker_p;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
953
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
954 extern Lisp_Object Qframep;
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 extern Lisp_Object Feq (), Fnull (), Flistp (), Fconsp (), Fatom (), Fnlistp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957 extern Lisp_Object Fintegerp (), Fnatnump (), Fsymbolp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
958 extern Lisp_Object Fvectorp (), Fstringp (), Farrayp (), Fsequencep ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
959 extern Lisp_Object Fbufferp (), Fmarkerp (), Fsubrp (), Fchar_or_string_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
960 extern Lisp_Object Finteger_or_marker_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
961 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
962 extern Lisp_Object Ffloatp(), Finteger_or_floatp();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
963 extern Lisp_Object Finteger_or_float_or_marker_p(), Ftruncate();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
964 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
965
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 extern Lisp_Object Fcar (), Fcar_safe(), Fcdr (), Fcdr_safe();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
967 extern Lisp_Object Fsetcar (), Fsetcdr ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
968 extern Lisp_Object Fboundp (), Ffboundp (), Fmakunbound (), Ffmakunbound ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
969 extern Lisp_Object Fsymbol_function (), Fsymbol_plist (), Fsymbol_name ();
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
970 extern Lisp_Object indirect_function (), Findirect_function ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
971 extern Lisp_Object Ffset (), Fsetplist ();
516
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 493
diff changeset
972 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
973 extern Lisp_Object Fdefault_value (), Fset_default (), Fdefault_boundp ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975 extern Lisp_Object Faref (), Faset (), Farray_length ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
976
2429
96b55f2f19cd Rename int-to-string to number-to-string, since it can handle
Jim Blandy <jimb@redhat.com>
parents: 2279
diff changeset
977 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
978 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
979 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
980 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
981 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
982 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
983 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
984
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
985 extern Lisp_Object Fadd1 (), Fsub1 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987 extern Lisp_Object make_number ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
988 extern void args_out_of_range ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
989 extern void args_out_of_range_3 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
990 extern Lisp_Object wrong_type_argument ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991 #ifdef LISP_FLOAT_TYPE
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992 extern Lisp_Object Ffloat_to_int(), Fint_to_float();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993 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
994 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
995 extern Lisp_Object Ffloat ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 #endif /* LISP_FLOAT_TYPE */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998 /* Defined in fns.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
999 extern Lisp_Object Qstring_lessp;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 extern Lisp_Object Vfeatures;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001 extern Lisp_Object Fidentity (), Frandom ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1002 extern Lisp_Object Flength ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1003 extern Lisp_Object Fappend (), Fconcat (), Fvconcat (), Fcopy_sequence ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1004 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
1005 extern Lisp_Object Fnth (), Fnthcdr (), Fmemq (), Fassq (), Fassoc ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1006 extern Lisp_Object Frassq (), Fdelq (), Fsort ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1007 extern Lisp_Object Freverse (), Fnreverse (), Fget (), Fput (), Fequal ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1008 extern Lisp_Object Ffillarray (), Fnconc (), Fmapcar (), Fmapconcat ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009 extern Lisp_Object Fy_or_n_p (), do_yes_or_no_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1010 extern Lisp_Object Ffeaturep (), Frequire () , Fprovide ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 extern Lisp_Object concat2 (), nconc2 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1012 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
1013 extern Lisp_Object Fcopy_alist ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1014
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1015 /* Defined in alloc.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1016 extern Lisp_Object Vpurify_flag;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1017 extern Lisp_Object Fcons (), Flist(), Fmake_list ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1018 extern Lisp_Object Fmake_vector (), Fvector (), Fmake_symbol (), Fmake_marker ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1019 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
1020 extern Lisp_Object make_event_array (), make_uninit_string ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1021 extern Lisp_Object Fpurecopy (), make_pure_string ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1022 extern Lisp_Object pure_cons (), make_pure_vector ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1023 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
1024 extern Lisp_Object Fmake_byte_code ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1025
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 /* Defined in print.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1027 extern Lisp_Object Vprin1_to_string_buffer;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1028 extern Lisp_Object Fprin1 (), Fprin1_to_string (), Fprinc ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1029 extern Lisp_Object Fterpri (), Fprint ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1030 extern Lisp_Object Vstandard_output, Qstandard_output;
439
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1031 extern Lisp_Object Qexternal_debugging_output;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1032 extern void temp_output_buffer_setup (), temp_output_buffer_show ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1033 extern int print_level, print_escape_newlines;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1034 extern Lisp_Object Qprint_escape_newlines;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1036 /* Defined in lread.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 extern Lisp_Object Qvariable_documentation, Qstandard_input;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 extern Lisp_Object Vobarray, Vstandard_input;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1039 extern Lisp_Object Fread (), Fread_from_string ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040 extern Lisp_Object Fintern (), Fintern_soft (), Fload ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1041 extern Lisp_Object Fget_file_char (), Fread_char ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 extern Lisp_Object Feval_current_buffer (), Feval_region ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 extern Lisp_Object intern (), oblookup ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 /* Defined in eval.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qdefun, Qmacro;
381
0673e72f6c8c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 377
diff changeset
1047 extern Lisp_Object Vinhibit_quit, Qinhibit_quit, Vquit_flag;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 extern Lisp_Object Vmocklisp_arguments, Qmocklisp, Qmocklisp_arguments;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 extern Lisp_Object Vautoload_queue;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 extern Lisp_Object Vrun_hooks;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051 extern Lisp_Object Fand (), For (), Fif (), Fprogn (), Fprog1 (), Fprog2 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052 extern Lisp_Object Fsetq (), Fquote ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 extern Lisp_Object Fuser_variable_p (), Finteractive_p ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054 extern Lisp_Object Fdefun (), Flet (), FletX (), Fwhile ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055 extern Lisp_Object Fcatch (), Fthrow (), Funwind_protect ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1056 extern Lisp_Object Fcondition_case (), Fsignal ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1057 extern Lisp_Object Ffunction_type (), Fautoload (), Fcommandp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1058 extern Lisp_Object Feval (), Fapply (), Ffuncall ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059 extern Lisp_Object Fglobal_set (), Fglobal_value (), Fbacktrace ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060 extern Lisp_Object apply1 (), call0 (), call1 (), call2 (), call3 ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1061 extern Lisp_Object apply_lambda ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1062 extern Lisp_Object internal_catch ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1063 extern Lisp_Object internal_condition_case ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1064 extern Lisp_Object unbind_to ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1065 extern void error ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1066 extern Lisp_Object un_autoload ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1068 /* Defined in editfns.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1069 extern Lisp_Object Vprefix_arg, Qminus, Vcurrent_prefix_arg;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1070 extern Lisp_Object Fgoto_char ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1071 extern Lisp_Object Fpoint_min_marker (), Fpoint_max_marker ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1072 extern Lisp_Object Fpoint_min (), Fpoint_max ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1073 extern Lisp_Object Fpoint (), Fpoint_marker (), Fmark_marker ();
516
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 493
diff changeset
1074 extern Lisp_Object Ffollowing_char (), Fprevious_char (), Fchar_after ();
ccadad491483 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 493
diff changeset
1075 extern Lisp_Object Finsert ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076 extern Lisp_Object Feolp (), Feobp (), Fbolp (), Fbobp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1077 extern Lisp_Object Fformat (), format1 ();
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1078 extern Lisp_Object make_buffer_string (), Fbuffer_substring ();
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1079 extern Lisp_Object Fbuffer_string ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 extern Lisp_Object Fstring_equal (), Fstring_lessp (), Fbuffer_substring_lessp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081 extern Lisp_Object save_excursion_save (), save_restriction_save ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082 extern Lisp_Object save_excursion_restore (), save_restriction_restore ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 extern Lisp_Object Fchar_to_string ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1085 /* defined in buffer.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1086 extern Lisp_Object Vbuffer_alist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1087 extern Lisp_Object Fget_buffer (), Fget_buffer_create (), Fset_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1088 extern Lisp_Object Fbarf_if_buffer_read_only ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1089 extern Lisp_Object Fcurrent_buffer (), Fswitch_to_buffer (), Fpop_to_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1090 extern Lisp_Object Fother_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1091 extern struct buffer *all_buffers;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1092
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1093 /* defined in marker.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1094
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1095 extern Lisp_Object Fmarker_position (), Fmarker_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1096 extern Lisp_Object Fcopy_marker ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1097
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1098 /* Defined in fileio.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1099
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1100 extern Lisp_Object Qfile_error;
1681
a03b87a92614 * fileio.c (find_file_handler): Rename this to
Jim Blandy <jimb@redhat.com>
parents: 1567
diff changeset
1101 extern Lisp_Object Ffind_file_name_handler ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1102 extern Lisp_Object Ffile_name_as_directory ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1103 extern Lisp_Object Fexpand_file_name (), Ffile_name_nondirectory ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1104 extern Lisp_Object Fsubstitute_in_file_name ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105 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
1106 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
1107 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
1108 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
1109 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
1110 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
1111 extern Lisp_Object Ffile_accessible_directory_p ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1112
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 /* Defined in abbrev.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115 extern Lisp_Object Vfundamental_mode_abbrev_table;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1116
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1117 /* defined in search.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1118 extern Lisp_Object Fstring_match ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1119 extern Lisp_Object Fscan_buffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1120
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1121 /* defined in minibuf.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1122
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1123 extern Lisp_Object last_minibuf_string;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1124 extern Lisp_Object read_minibuf (), Fcompleting_read ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1125 extern Lisp_Object Fread_from_minibuffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1126 extern Lisp_Object Fread_variable (), Fread_buffer (), Fread_key_sequence ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1127 extern Lisp_Object Fread_minibuffer (), Feval_minibuffer ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1128 extern Lisp_Object Fread_string (), Fread_file_name ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129 extern Lisp_Object Fread_no_blanks_input ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1131 /* Defined in callint.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133 extern Lisp_Object Vcommand_history;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134 extern Lisp_Object Qcall_interactively;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135 extern Lisp_Object Fcall_interactively ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 extern Lisp_Object Fprefix_numeric_value ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138 /* defined in casefiddle.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140 extern Lisp_Object Fdowncase (), Fupcase (), Fcapitalize ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1141
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1142 /* defined in keyboard.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1144 extern Lisp_Object Qdisabled;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1145 extern Lisp_Object Vhelp_form, Vtop_level;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1146 extern Lisp_Object Fdiscard_input (), Frecursive_edit ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147 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
1148 extern Lisp_Object Qvertical_scroll_bar;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150 /* defined in keymap.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152 extern Lisp_Object Qkeymap;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153 extern Lisp_Object current_global_map;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154 extern Lisp_Object Fkey_description (), Fsingle_key_description ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1155 extern Lisp_Object Fwhere_is_internal ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1156 extern Lisp_Object access_keymap (), store_in_keymap ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 extern Lisp_Object get_keyelt (), get_keymap();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1158
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 /* defined in indent.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1160 extern Lisp_Object Fvertical_motion (), Findent_to (), Fcurrent_column ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1161
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162 /* defined in window.c */
2210
22d78dbb3cc7 Rename `live-window-p' to `window-live-p', for consistency with
Jim Blandy <jimb@redhat.com>
parents: 2187
diff changeset
1163 extern Lisp_Object Qwindowp, Qwindow_live_p;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1164 extern Lisp_Object Fget_buffer_window ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1165 extern Lisp_Object Fsave_window_excursion ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1166 extern Lisp_Object Fset_window_configuration (), Fcurrent_window_configuration ();
439
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1167 extern Lisp_Object Fcoordinates_in_window_p ();
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1168 extern Lisp_Object Fwindow_at ();
1779
6f0c4252940f * window.c (window_internal_width): New function.
Jim Blandy <jimb@redhat.com>
parents: 1713
diff changeset
1169 extern int window_internal_height (), window_internal_width ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1170
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1171 /* defined in frame.c */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1172 extern Lisp_Object Fframep ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1173 extern Lisp_Object Fselect_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1174 extern Lisp_Object Ffocus_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1175 extern Lisp_Object Funfocus_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1176 extern Lisp_Object Fselected_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1177 extern Lisp_Object Fwindow_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1178 extern Lisp_Object Fframe_root_window ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1179 extern Lisp_Object Fframe_selected_window ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1180 extern Lisp_Object Fframe_list ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1181 extern Lisp_Object Fnext_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1182 extern Lisp_Object Fdelete_frame ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183 extern Lisp_Object Fread_mouse_position ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1184 extern Lisp_Object Fset_mouse_position ();
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1185 extern Lisp_Object Fmake_frame_visible ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1186 extern Lisp_Object Fmake_frame_invisible ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1187 extern Lisp_Object Ficonify_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1188 extern Lisp_Object Fdeiconify_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1189 extern Lisp_Object Fframe_visible_p ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1190 extern Lisp_Object Fvisible_frame_list ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1191 extern Lisp_Object Fframe_parameters ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1192 extern Lisp_Object Fmodify_frame_parameters ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1193 extern Lisp_Object Fframe_pixel_size ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1194 extern Lisp_Object Fframe_height ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1195 extern Lisp_Object Fframe_width ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1196 extern Lisp_Object Fset_frame_height ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1197 extern Lisp_Object Fset_frame_width ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1198 extern Lisp_Object Fset_frame_size ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1199 extern Lisp_Object Fset_frame_position ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 #ifndef HAVE_X11
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 extern Lisp_Object Frubber_band_rectangle ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 #endif /* HAVE_X11 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 /* defined in emacs.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 extern Lisp_Object decode_env_path ();
2279
012b04efa234 * emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents: 2210
diff changeset
1206 extern Lisp_Object Vinvocation_name;
1779
6f0c4252940f * window.c (window_internal_width): New function.
Jim Blandy <jimb@redhat.com>
parents: 1713
diff changeset
1207 void shut_down_emacs ( /* int signal */ );
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1208 /* Nonzero means don't do interactive redisplay and don't change tty modes */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1209 extern int noninteractive;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210 /* Nonzero means don't do use window-system-specific display code */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211 extern int inhibit_window_system;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1212
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1213 /* defined in process.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214 extern Lisp_Object Fget_process (), Fget_buffer_process (), Fprocessp ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1215 extern Lisp_Object Fprocess_status (), Fkill_process ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217 /* defined in callproc.c */
439
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
1218 extern Lisp_Object Vexec_path, Vexec_directory, Vdata_directory;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1219
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220 /* defined in doc.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1221 extern Lisp_Object Vdoc_file_name;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1222 extern Lisp_Object Fsubstitute_command_keys ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223 extern Lisp_Object Fdocumentation (), Fdocumentation_property ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1224
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1225 /* defined in bytecode.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1226 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
1227 extern Lisp_Object Fbyte_code ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1229 /* defined in macros.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1230 extern Lisp_Object Qexecute_kbd_macro;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231 extern Lisp_Object Fexecute_kbd_macro ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1232
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1233 /* defined in undo.c */
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
1234 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
1235 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
1236
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 /* Nonzero means Emacs has already been initialized.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238 Used during startup to detect startup of dumped Emacs. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239 extern int initialized;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1240
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 extern int immediate_quit; /* Nonzero means ^G can quit instantly */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243 extern void debugger ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1245 extern char *malloc (), *realloc (), *getenv (), *ctime (), *getwd ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1246 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
1247 extern void xfree ();
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1248
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
1249 extern char *egetenv ();