Mercurial > hg > xemacs-beta
comparison src/lisp.h @ 826:6728e641994e
[xemacs-hg @ 2002-05-05 11:30:15 by ben]
syntax cache, 8-bit-format, lots of code cleanup
README.packages: Update info about --package-path.
i.c: Create an inheritable event and pass it on to XEmacs, so that ^C
can be handled properly. Intercept ^C and signal the event.
"Stop Build" in VC++ now works.
bytecomp-runtime.el: Doc string changes.
compat.el: Some attempts to redo this to
make it truly useful and fix the "multiple versions interacting
with each other" problem. Not yet done. Currently doesn't work.
files.el: Use with-obsolete-variable to avoid warnings in new revert-buffer code.
xemacs.mak: Split up CFLAGS into a version without flags specifying the C
library. The problem seems to be that minitar depends on zlib,
which depends specifically on libc.lib, not on any of the other C
libraries. Unless you compile with libc.lib, you get errors --
specifically, no _errno in the other libraries, which must make it
something other than an int. (#### But this doesn't seem to obtain
in XEmacs, which also uses zlib, and can be linked with any of the
C libraries. Maybe zlib is used differently and doesn't need
errno, or maybe XEmacs provides an int errno; ... I don't
understand.
Makefile.in.in: Fix so that packages are around when testing.
abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, callint.c, casefiddle.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.h, console-stream.c, console-x.c, console.c, console.h, data.c, device-msw.c, device.c, device.h, dialog-msw.c, dialog-x.c, dired-msw.c, dired.c, doc.c, doprnt.c, dumper.c, editfns.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, events.h, extents.c, extents.h, faces.c, file-coding.c, file-coding.h, fileio.c, fns.c, font-lock.c, frame-gtk.c, frame-msw.c, frame-x.c, frame.c, frame.h, glade.c, glyphs-gtk.c, glyphs-msw.c, glyphs-msw.h, glyphs-x.c, glyphs.c, glyphs.h, gui-msw.c, gui-x.c, gui.h, gutter.h, hash.h, indent.c, insdel.c, intl-win32.c, intl.c, keymap.c, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-ccl.c, mule-charset.c, mule-coding.c, mule-wnnfns.c, nas.c, objects-msw.c, objects-x.c, opaque.c, postgresql.c, print.c, process-nt.c, process-unix.c, process.c, process.h, profile.c, rangetab.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-x.c, redisplay.c, redisplay.h, regex.c, regex.h, scrollbar-msw.c, search.c, select-x.c, specifier.c, specifier.h, symbols.c, symsinit.h, syntax.c, syntax.h, syswindows.h, tests.c, text.c, text.h, tooltalk.c, ui-byhand.c, ui-gtk.c, unicode.c, win32.c, window.c: Another big Ben patch.
-- FUNCTIONALITY CHANGES:
add partial support for 8-bit-fixed, 16-bit-fixed, and
32-bit-fixed formats. not quite done yet. (in particular, needs
functions to actually convert the buffer.) NOTE: lots of changes
to regex.c here. also, many new *_fmt() inline funs that take an
Internal_Format argument.
redo syntax cache code. make the cache per-buffer; keep the cache
valid across calls to functions that use it. also keep it valid
across insertions/deletions and extent changes, as much as is
possible. eliminate the junky regex-reentrancy code by passing in
the relevant lisp info to the regex routines as local vars.
add general mechanism in extents code for signalling extent changes.
fix numerous problems with the case-table implementation; yoshiki
never properly transferred many algorithms from old-style to
new-style case tables.
redo char tables to support a default argument, so that mapping
only occurs over changed args. change many chartab functions to
accept Lisp_Object instead of Lisp_Char_Table *.
comment out the code in font-lock.c by default, because
font-lock.el no longer uses it. we should consider eliminating it
entirely.
Don't output bell as ^G in console-stream when not a TTY.
add -mswindows-termination-handle to interface with i.c, so we can
properly kill a build.
add more error-checking to buffer/string macros.
add some additional buffer_or_string_() funs.
-- INTERFACE CHANGES AFFECTING MORE CODE:
switch the arguments of write_c_string and friends to be
consistent with write_fmt_string, which must have printcharfun
first.
change BI_* macros to BYTE_* for increased clarity; similarly for
bi_* local vars.
change VOID_TO_LISP to be a one-argument function. eliminate
no-longer-needed CVOID_TO_LISP.
-- char/string macro changes:
rename MAKE_CHAR() to make_emchar() for slightly less confusion
with make_char(). (The former generates an Emchar, the latter a
Lisp object. Conceivably we should rename make_char() -> wrap_char()
and similarly for make_int(), make_float().)
Similar changes for other *CHAR* macros -- we now consistently use
names with `emchar' whenever we are working with Emchars. Any
remaining name with just `char' always refers to a Lisp object.
rename macros with XSTRING_* to string_* except for those that
reference actual fields in the Lisp_String object, following
conventions used elsewhere.
rename set_string_{data,length} macros (the only ones to work with
a Lisp_String_* instead of a Lisp_Object) to set_lispstringp_*
to make the difference clear.
try to be consistent about caps vs. lowercase in macro/inline-fun
names for chars and such, which wasn't the case before. we now
reserve caps either for XFOO_ macros that reference object fields
(e.g. XSTRING_DATA) or for things that have non-function semantics,
e.g. directly modifying an arg (BREAKUP_EMCHAR) or evaluating an
arg (any arg) more than once. otherwise, use lowercase.
here is a summary of most of the macros/inline funs changed by all
of the above changes:
BYTE_*_P -> byte_*_p
XSTRING_BYTE -> string_byte
set_string_data/length -> set_lispstringp_data/length
XSTRING_CHAR_LENGTH -> string_char_length
XSTRING_CHAR -> string_emchar
INTBYTE_FIRST_BYTE_P -> intbyte_first_byte_p
INTBYTE_LEADING_BYTE_P -> intbyte_leading_byte_p
charptr_copy_char -> charptr_copy_emchar
LEADING_BYTE_* -> leading_byte_*
CHAR_* -> EMCHAR_*
*_CHAR_* -> *_EMCHAR_*
*_CHAR -> *_EMCHAR
CHARSET_BY_ -> charset_by_*
BYTE_SHIFT_JIS* -> byte_shift_jis*
BYTE_BIG5* -> byte_big5*
REP_BYTES_BY_FIRST_BYTE -> rep_bytes_by_first_byte
char_to_unicode -> emchar_to_unicode
valid_char_p -> valid_emchar_p
Change intbyte_strcmp -> qxestrcmp_c (duplicated functionality).
-- INTERFACE CHANGES AFFECTING LESS CODE:
use DECLARE_INLINE_HEADER in various places.
remove '#ifdef emacs' from XEmacs-only files.
eliminate CHAR_TABLE_VALUE(), which duplicated the functionality
of get_char_table().
add BUFFER_TEXT_LOOP to simplify iterations over buffer text.
define typedefs for signed and unsigned types of fixed sizes
(INT_32_BIT, UINT_32_BIT, etc.).
create ALIGN_FOR_TYPE as a higher-level interface onto ALIGN_SIZE;
fix code to use it.
add charptr_emchar_len to return the text length of the character
pointed to by a ptr; use it in place of
charcount_to_bytecount(..., 1). add emchar_len to return the text
length of a given character.
add types Bytexpos and Charxpos to generalize Bytebpos/Bytecount
and Charbpos/Charcount, in code (particularly, the extents code
and redisplay code) that works with either kind of index. rename
redisplay struct params with names such as `charbpos' to
e.g. `charpos' when they are e.g. a Charxpos, not a Charbpos.
eliminate xxDEFUN in place of DEFUN; no longer necessary with
changes awhile back to doc.c.
split up big ugly combined list of EXFUNs in lisp.h on a
file-by-file basis, since other prototypes are similarly split.
rewrite some "*_UNSAFE" macros as inline funs and eliminate the
_UNSAFE suffix.
move most string code from lisp.h to text.h; the string code and
text.h code is now intertwined in such a fashion that they need
to be in the same place and partially interleaved. (you can't
create forward references for inline funs)
automated/lisp-tests.el, automated/symbol-tests.el, automated/test-harness.el: Fix test harness to output FAIL messages to stderr when in
batch mode.
Fix up some problems in lisp-tests/symbol-tests that were
causing spurious failures.
author | ben |
---|---|
date | Sun, 05 May 2002 11:33:57 +0000 |
parents | 6504113e7c2d |
children | 047d37eb70d7 |
comparison
equal
deleted
inserted
replaced
825:eb3bc15a6e0f | 826:6728e641994e |
---|---|
75 # define EMACS_UINT unsigned EMACS_INT | 75 # define EMACS_UINT unsigned EMACS_INT |
76 #endif | 76 #endif |
77 | 77 |
78 #define BITS_PER_EMACS_INT (SIZEOF_EMACS_INT * BITS_PER_CHAR) | 78 #define BITS_PER_EMACS_INT (SIZEOF_EMACS_INT * BITS_PER_CHAR) |
79 | 79 |
80 #if SIZEOF_SHORT == 2 | |
81 #define INT_16_BIT short | |
82 #define UINT_16_BIT unsigned short | |
83 #elif SIZEOF_INT == 2 | |
84 /* Bwa ha ha. As if XEmacs could actually support such systems. */ | |
85 #define INT_16_BIT int | |
86 #define UINT_16_BIT unsigned int | |
87 #else | |
88 #error Unable to find a 16-bit integral type | |
89 #endif | |
90 | |
91 #if SIZEOF_INT == 4 | |
92 #define INT_32_BIT int | |
93 #define UINT_32_BIT unsigned int | |
94 #define MAKE_32_BIT_UNSIGNED_CONSTANT(num) num##U | |
95 #elif SIZEOF_LONG == 4 | |
96 /* Bwa ha ha again. */ | |
97 #define INT_32_BIT long | |
98 #define UINT_32_BIT unsigned long | |
99 #define MAKE_32_BIT_UNSIGNED_CONSTANT(num) num##UL | |
100 #elif SIZEOF_SHORT == 4 | |
101 /* And again. */ | |
102 #define INT_32_BIT short | |
103 #define UINT_32_BIT unsigned short | |
104 #define MAKE_32_BIT_UNSIGNED_CONSTANT(num) num##U | |
105 #elif /* Unable to find a 32-bit integral type! */ | |
106 #error What kind of strange-ass system are you running on? | |
107 #endif | |
108 | |
109 #if SIZEOF_LONG == 8 | |
110 #define INT_64_BIT long | |
111 #define UINT_64_BIT unsigned long | |
112 #define MAKE_64_BIT_UNSIGNED_CONSTANT(num) num##UL | |
113 #elif SIZEOF_LONG_LONG == 8 | |
114 #define INT_64_BIT long long | |
115 #define UINT_64_BIT unsigned long long | |
116 #define MAKE_64_BIT_UNSIGNED_CONSTANT(num) num##ULL | |
117 /* No error otherwise; just leave undefined */ | |
118 #endif | |
119 | |
120 #if SIZEOF_LONG_LONG == 16 | |
121 #define INT_128_BIT long long | |
122 #define UINT_128_BIT unsigned long long | |
123 #define MAKE_128_BIT_UNSIGNED_CONSTANT(num) num##ULL | |
124 /* No error otherwise; just leave undefined */ | |
125 #endif | |
126 | |
127 /* #### Fill this in for other systems */ | |
128 #if defined (INT_64_BIT) && !(defined (i386) || defined (__i386__)) | |
129 #define EFFICIENT_INT_64_BIT INT_64_BIT | |
130 #define EFFICIENT_UINT_64_BIT UINT_64_BIT | |
131 #endif | |
132 | |
133 #if defined (INT_128_BIT) | |
134 #define EFFICIENT_INT_128_BIT INT_128_BIT | |
135 #define EFFICIENT_UINT_128_BIT UINT_128_BIT | |
136 #endif | |
137 | |
80 /* ------------------------ basic char/int typedefs ------------------- */ | 138 /* ------------------------ basic char/int typedefs ------------------- */ |
81 | 139 |
82 /* The definitions we put here use typedefs to attribute specific meaning | 140 /* The definitions we put here use typedefs to attribute specific meaning |
83 to types that by themselves are pretty general. Stuff pointed to by a | 141 to types that by themselves are pretty general. Stuff pointed to by a |
84 char * or unsigned char * will nearly always be one of four types: | 142 char * or unsigned char * will nearly always be one of four types: |
129 the range 00 - 7F) */ | 187 the range 00 - 7F) */ |
130 | 188 |
131 typedef char Char_ASCII; | 189 typedef char Char_ASCII; |
132 typedef unsigned char UChar_ASCII; | 190 typedef unsigned char UChar_ASCII; |
133 | 191 |
134 | 192 /* To the user, a buffer is made up of characters. In the non-Mule world, |
135 /* To the user, a buffer is made up of characters, declared as follows. | 193 characters and Intbytes are equivalent, restricted to the range 0 - 255. |
136 In the non-Mule world, characters and Intbytes are equivalent. | 194 In the Mule world, many more characters are possible (19 bits worth, |
137 In the Mule world, a character requires (typically) 1 to 4 | 195 more or less), and a character requires (typically) 1 to 4 Intbytes for |
138 Intbytes for its representation in a buffer. */ | 196 its representation in a buffer or string. Note that the representation |
197 of a character by itself, in a variable, is very different from its | |
198 representation in a string of text (in a buffer or Lisp string). | |
199 | |
200 Under Mule, text can be represented in more than one way. The "default" | |
201 format is variable-width (1 to 4 bytes) and compatible with ASCII -- | |
202 ASCII chars are stored in one byte, as themselves, and all other chars | |
203 use only high bytes. The default format is currently the only format | |
204 used for text stored anywhere but in a buffer. In a buffer, other | |
205 formats -- fixed-width formats (1, 2, or 4 bytes) -- are possible, for | |
206 speed. | |
207 | |
208 See text.c/text.h for a detailed discussion of all of this. */ | |
209 | |
210 /* A character, as represented on its own. */ | |
139 | 211 |
140 typedef int Emchar; | 212 typedef int Emchar; |
213 | |
214 /* The "raw value" of a character as stored in the buffer. In the default | |
215 format, this is just the same as the character. In fixed-width formats, | |
216 this is the actual value in the buffer, which will be limited to the | |
217 range as established by the format. This is used when searching for a | |
218 character in a buffer -- it's faster to convert the character to the raw | |
219 value and look for that, than repeatedly convert each raw value in the | |
220 buffer into a character. */ | |
221 | |
222 typedef int Raw_Emchar; | |
223 | |
224 | |
225 #if !defined (__cplusplus) || !defined (CPLUSPLUS_INTEGRAL_CLASSES_NOT_YET) | |
226 | |
227 /* Counts of bytes or chars */ | |
228 | |
229 typedef EMACS_INT Bytecount; | |
230 typedef EMACS_INT Charcount; | |
141 | 231 |
142 /* Different ways of referring to a position in a buffer. We use | 232 /* Different ways of referring to a position in a buffer. We use |
143 the typedefs in preference to 'EMACS_INT' to make it clearer what | 233 the typedefs in preference to 'EMACS_INT' to make it clearer what |
144 sort of position is being used. See extents.c for a description | 234 sort of position is being used. See text.c for a description |
145 of the different positions. We put them here instead of in | 235 of the different positions. |
146 buffer.h (where they rightfully belong) to avoid syntax errors | 236 |
147 in function prototypes. */ | 237 Note that buffer positions are 1-based, and there's a gap in the middle |
148 | 238 of a buffer; that's why we have separate typedefs. For Lisp strings and |
149 #if !defined (__cplusplus) || !defined (CPLUSPLUS_INTEGRAL_CLASSES_NOT_YET) | 239 other strings of text, we just use Bytecount and Charcount. */ |
150 | 240 |
151 typedef EMACS_INT Charbpos; | 241 typedef EMACS_INT Charbpos; |
152 typedef EMACS_INT Bytebpos; | 242 typedef EMACS_INT Bytebpos; |
153 typedef EMACS_INT Membpos; | 243 typedef EMACS_INT Membpos; |
154 | 244 |
155 /* Counts of bytes or chars */ | 245 /* Different ways of referring to a position that can be either in a buffer |
156 typedef EMACS_INT Bytecount; | 246 or string; used when passing around an object that can be either a |
157 typedef EMACS_INT Charcount; | 247 buffer or string, and an associated position. Conceptually, they |
158 | 248 resolve as follows: |
159 /* Not yet used */ | 249 |
250 Typedef Buffer String | |
251 ------------------------------------------------------ | |
252 Charxpos Charbpos Charcount | |
253 Bytexpos Bytebpos Bytecount | |
254 Memxpos Membpos Bytecount | |
255 | |
256 */ | |
257 | |
160 typedef EMACS_INT Charxpos; | 258 typedef EMACS_INT Charxpos; |
161 typedef EMACS_INT Bytexpos; | 259 typedef EMACS_INT Bytexpos; |
162 typedef EMACS_INT Memxpos; | 260 typedef EMACS_INT Memxpos; |
163 | 261 |
164 #else /* __cplusplus */ | 262 #else /* __cplusplus */ |
530 { | 628 { |
531 DECLARE_XPOS_CLASS (Memxpos, Bytecount, Membpos, Bytecount) | 629 DECLARE_XPOS_CLASS (Memxpos, Bytecount, Membpos, Bytecount) |
532 DECLARE_BAD_MEM_INTCLASS_ARITH_COMPARE (Memxpos) | 630 DECLARE_BAD_MEM_INTCLASS_ARITH_COMPARE (Memxpos) |
533 }; | 631 }; |
534 | 632 |
535 #define DECLARE_POINTER_TYPE_ARITH_COUNT(pointer, countcl) \ | 633 #define DECLARE_POINTER_TYPE_ARITH_COUNT(pointer, countcl) \ |
536 inline pointer operator += (pointer & x, const countcl& y) \ | 634 inline pointer operator += (const pointer & x, const countcl& y) \ |
537 { x += y.data; return x; } \ | 635 { x += y.data; return x; } \ |
538 inline pointer operator -= (pointer & x, const countcl& y) \ | 636 inline pointer operator -= (const pointer & x, const countcl& y) \ |
539 { x -= y.data; return x; } \ | 637 { x -= y.data; return x; } \ |
540 inline pointer operator + (pointer x, const countcl& y) \ | 638 inline pointer operator + (const pointer x, const countcl& y) \ |
541 { return x + y.data; } \ | 639 { return x + y.data; } \ |
542 inline pointer operator - (pointer x, const countcl& y) \ | 640 inline pointer operator - (const pointer x, const countcl& y) \ |
543 { return x - y.data; } | 641 { return x - y.data; } |
544 | 642 |
545 #define DECLARE_INTEGRAL_TYPE_ARITH_COUNT(integral, countcl) \ | 643 #define DECLARE_INTEGRAL_TYPE_ARITH_COUNT(integral, countcl) \ |
546 inline integral operator += (integral & x, const countcl& y) \ | 644 inline integral operator += (integral & x, const countcl& y) \ |
547 { x += y.data; return x; } \ | 645 { x += y.data; return x; } \ |
574 { return b ? cl (x) : y; } \ | 672 { return b ? cl (x) : y; } \ |
575 inline cl operator ?: (bool b, const cl& x, integral y) \ | 673 inline cl operator ?: (bool b, const cl& x, integral y) \ |
576 { return b ? x : cl (y); } | 674 { return b ? x : cl (y); } |
577 #endif /* 0 */ | 675 #endif /* 0 */ |
578 | 676 |
579 DECLARE_POINTER_TYPE_ARITH_COUNT (const Intbyte *, Bytecount); | 677 /* DECLARE_POINTER_TYPE_ARITH_COUNT (const Intbyte *, Bytecount); |
580 DECLARE_POINTER_TYPE_ARITH_COUNT (const Extbyte *, Bytecount); | 678 DECLARE_POINTER_TYPE_ARITH_COUNT (const Extbyte *, Bytecount); */ |
581 DECLARE_POINTER_TYPE_ARITH_COUNT (Intbyte *, Bytecount); | 679 DECLARE_POINTER_TYPE_ARITH_COUNT (Intbyte *, Bytecount); |
582 DECLARE_POINTER_TYPE_ARITH_COUNT (Extbyte *, Bytecount); | 680 DECLARE_POINTER_TYPE_ARITH_COUNT (Extbyte *, Bytecount); |
583 | 681 |
584 DECLARE_INTEGRAL_TYPE_ARITH_COUNT (int, Bytecount); | 682 DECLARE_INTEGRAL_TYPE_ARITH_COUNT (int, Bytecount); |
585 DECLARE_INTEGRAL_TYPE_ARITH_COUNT (int, Charcount); | 683 DECLARE_INTEGRAL_TYPE_ARITH_COUNT (int, Charcount); |
755 malloc() is guaranteed to be correctly aligned for all types). */ | 853 malloc() is guaranteed to be correctly aligned for all types). */ |
756 | 854 |
757 #define ALIGN_SIZE(len, unit) \ | 855 #define ALIGN_SIZE(len, unit) \ |
758 ((((len) + (unit) - 1) / (unit)) * (unit)) | 856 ((((len) + (unit) - 1) / (unit)) * (unit)) |
759 | 857 |
858 /* ALIGN_FOR_TYPE returns the smallest size greater than or equal to LEN | |
859 which is aligned for the given type. This can be used to assure that | |
860 data that follows a block of the returned size is of correct alignment | |
861 for the type (provided that the block itself is correctly aligned for | |
862 this type; memory returned by malloc() is guaranteed to be correctly | |
863 aligned for all types). */ | |
864 | |
865 #define ALIGN_FOR_TYPE(len, type) ALIGN_SIZE (len, ALIGNOF (type)) | |
866 | |
760 /* MAX_ALIGN_SIZE returns the smallest size greater than or equal to LEN | 867 /* MAX_ALIGN_SIZE returns the smallest size greater than or equal to LEN |
761 which guarantees that data following a block of such size is correctly | 868 which guarantees that data following a block of such size is correctly |
762 aligned for all types (provided that the block itself is so aligned, | 869 aligned for all types (provided that the block itself is so aligned, |
763 which is the case for memory returned by malloc()). */ | 870 which is the case for memory returned by malloc()). */ |
764 | 871 |
765 #define MAX_ALIGN_SIZE(len) ALIGN_SIZE (len, ALIGNOF (max_align_t)) | 872 #define MAX_ALIGN_SIZE(len) ALIGN_FOR_TYPE (len, max_align_t) |
766 | 873 |
767 /* #### Yuck, this is kind of evil */ | 874 /* ALIGN_PTR returns the smallest pointer >= PTR which is aligned for |
768 #define ALIGN_PTR(ptr, unit) \ | 875 data of TYPE. */ |
769 ((void *) ALIGN_SIZE ((size_t) (ptr), unit)) | 876 #define ALIGN_PTR(ptr, type) ((void *) ALIGN_FOR_TYPE ((size_t) (ptr), type)) |
770 | 877 |
771 /* ------------------------ assertions ------------------- */ | 878 /* ------------------------ assertions ------------------- */ |
772 | 879 |
773 /* We define assert iff USE_ASSERTIONS or DEBUG_XEMACS is defined. | 880 /* We define assert iff USE_ASSERTIONS or DEBUG_XEMACS is defined. |
774 Otherwise we define it to be empty. Quantify has shown that the | 881 Otherwise we define it to be empty. Quantify has shown that the |
1747 (key = XCAR (tail), tail = XCDR (tail), \ | 1854 (key = XCAR (tail), tail = XCDR (tail), \ |
1748 value = XCAR (tail), tail = XCDR (tail), 1); \ | 1855 value = XCAR (tail), tail = XCDR (tail), 1); \ |
1749 ) | 1856 ) |
1750 | 1857 |
1751 /* Return 1 if LIST is properly acyclic and nil-terminated, else 0. */ | 1858 /* Return 1 if LIST is properly acyclic and nil-terminated, else 0. */ |
1752 INLINE_HEADER int TRUE_LIST_P (Lisp_Object object); | 1859 DECLARE_INLINE_HEADER ( |
1753 INLINE_HEADER int | 1860 int |
1754 TRUE_LIST_P (Lisp_Object object) | 1861 TRUE_LIST_P (Lisp_Object object) |
1862 ) | |
1755 { | 1863 { |
1756 Lisp_Object hare, tortoise; | 1864 Lisp_Object hare, tortoise; |
1757 EMACS_INT len; | 1865 EMACS_INT len; |
1758 | 1866 |
1759 for (hare = tortoise = object, len = 0; | 1867 for (hare = tortoise = object, len = 0; |
1809 unsigned int type :8; | 1917 unsigned int type :8; |
1810 unsigned int mark :1; | 1918 unsigned int mark :1; |
1811 unsigned int c_readonly :1; | 1919 unsigned int c_readonly :1; |
1812 unsigned int lisp_readonly :1; | 1920 unsigned int lisp_readonly :1; |
1813 /* Number of chars at beginning of string that are one byte in length | 1921 /* Number of chars at beginning of string that are one byte in length |
1814 (BYTE_ASCII_P) */ | 1922 (byte_ascii_p) */ |
1815 unsigned int ascii_begin :21; | 1923 unsigned int ascii_begin :21; |
1816 } v; | 1924 } v; |
1817 } u; | 1925 } u; |
1818 Bytecount size_; | 1926 Bytecount size_; |
1819 Intbyte *data_; | 1927 Intbyte *data_; |
1828 #define wrap_string(p) wrap_record (p, string) | 1936 #define wrap_string(p) wrap_record (p, string) |
1829 #define STRINGP(x) RECORDP (x, string) | 1937 #define STRINGP(x) RECORDP (x, string) |
1830 #define CHECK_STRING(x) CHECK_RECORD (x, string) | 1938 #define CHECK_STRING(x) CHECK_RECORD (x, string) |
1831 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string) | 1939 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string) |
1832 | 1940 |
1833 #ifdef MULE | 1941 /* Most basic macros for strings -- basically just accessing or setting |
1834 | 1942 fields -- are here. Everything else is in text.h, since they depend on |
1835 Charcount bytecount_to_charcount (const Intbyte *ptr, Bytecount len); | 1943 stuff there. */ |
1836 Bytecount charcount_to_bytecount (const Intbyte *ptr, Charcount len); | |
1837 | |
1838 #else /* not MULE */ | |
1839 | |
1840 # define bytecount_to_charcount(ptr, len) (len) | |
1841 # define charcount_to_bytecount(ptr, len) (len) | |
1842 | |
1843 #endif /* not MULE */ | |
1844 | 1944 |
1845 /* Operations on Lisp_String *'s; only ones left */ | 1945 /* Operations on Lisp_String *'s; only ones left */ |
1846 #define set_string_length(s, len) ((void) ((s)->size_ = (len))) | 1946 #define set_lispstringp_length(s, len) ((void) ((s)->size_ = (len))) |
1847 #define set_string_data(s, ptr) ((void) ((s)->data_ = (ptr))) | 1947 #define set_lispstringp_data(s, ptr) ((void) ((s)->data_ = (ptr))) |
1848 | 1948 |
1949 /* Operations on strings as Lisp_Objects. Don't manipulate Lisp_String *'s | |
1950 in any new code. */ | |
1849 #define XSTRING_LENGTH(s) (XSTRING (s)->size_) | 1951 #define XSTRING_LENGTH(s) (XSTRING (s)->size_) |
1850 #define XSTRING_PLIST(s) (XSTRING (s)->plist) | 1952 #define XSTRING_PLIST(s) (XSTRING (s)->plist) |
1851 #define XSTRING_DATA(s) (XSTRING (s)->data_ + 0) | 1953 #define XSTRING_DATA(s) (XSTRING (s)->data_ + 0) |
1852 #define XSTRING_ASCII_BEGIN(s) (XSTRING (s)->u.v.ascii_begin + 0) | 1954 #define XSTRING_ASCII_BEGIN(s) (XSTRING (s)->u.v.ascii_begin + 0) |
1853 #define XSTRING_CHAR_LENGTH(s) \ | 1955 #define XSET_STRING_LENGTH(s, ptr) set_lispstringp_length (XSTRING (s), ptr) |
1854 string_index_byte_to_char (s, XSTRING_LENGTH (s)) | 1956 #define XSET_STRING_DATA(s, ptr) set_lispstringp_data (XSTRING (s), ptr) |
1855 #define XSTRING_BYTE(s, i) (XSTRING (s)->data_[i] + 0) | |
1856 #define set_string_byte(s, i, c) (XSTRING (s)->data_[i] = (c)) | |
1857 | |
1858 #define string_byte_addr(s, i) (&((XSTRING (s))->data_[i])) | |
1859 #define XSTRING_CHAR(s, i) charptr_emchar (string_char_addr (s, i)) | |
1860 #define XSET_STRING_LENGTH(s, ptr) set_string_length (XSTRING (s), ptr) | |
1861 #define XSET_STRING_DATA(s, ptr) set_string_data (XSTRING (s), ptr) | |
1862 /* WARNING: If you modify an existing string, you must call | 1957 /* WARNING: If you modify an existing string, you must call |
1863 bump_string_modiff() afterwards. */ | 1958 bump_string_modiff() afterwards. */ |
1864 #define XSET_STRING_ASCII_BEGIN(s, val) \ | 1959 #define XSET_STRING_ASCII_BEGIN(s, val) \ |
1865 ((void) (XSTRING (s)->u.v.ascii_begin = (val))) | 1960 ((void) (XSTRING (s)->u.v.ascii_begin = (val))) |
1866 | 1961 #define XSTRING_FORMAT(s) FORMAT_DEFAULT |
1867 #ifdef ERROR_CHECK_TEXT | |
1868 #define SLEDGEHAMMER_CHECK_ASCII_BEGIN | |
1869 #endif | |
1870 | |
1871 #ifdef SLEDGEHAMMER_CHECK_ASCII_BEGIN | |
1872 void sledgehammer_check_ascii_begin (Lisp_Object str); | |
1873 #else | |
1874 #define sledgehammer_check_ascii_begin(str) | |
1875 #endif | |
1876 | |
1877 /* Make an alloca'd copy of a Lisp string */ | |
1878 #define LISP_STRING_TO_ALLOCA(s, lval) \ | |
1879 do { \ | |
1880 Intbyte **_lta_ = (Intbyte **) &(lval); \ | |
1881 Lisp_Object _lta_2 = (s); \ | |
1882 *_lta_ = alloca_array (Intbyte, 1 + XSTRING_LENGTH (_lta_2)); \ | |
1883 memcpy (*_lta_, XSTRING_DATA (_lta_2), 1 + XSTRING_LENGTH (_lta_2)); \ | |
1884 } while (0) | |
1885 | |
1886 /* Make an alloca'd copy of a Intbyte * */ | |
1887 #define INTBYTE_STRING_TO_ALLOCA(p, lval) \ | |
1888 do { \ | |
1889 Intbyte **_bsta_ = (Intbyte **) &(lval); \ | |
1890 const Intbyte *_bsta_2 = (p); \ | |
1891 Bytecount _bsta_3 = qxestrlen (_bsta_2); \ | |
1892 *_bsta_ = alloca_array (Intbyte, 1 + _bsta_3); \ | |
1893 memcpy (*_bsta_, _bsta_2, 1 + _bsta_3); \ | |
1894 } while (0) | |
1895 | |
1896 #define alloca_intbytes(num) alloca_array (Intbyte, num) | |
1897 #define alloca_extbytes(num) alloca_array (Extbyte, num) | |
1898 | |
1899 void resize_string (Lisp_Object s, Bytecount pos, Bytecount delta); | |
1900 | |
1901 #ifdef MULE | |
1902 | |
1903 /* Convert a byte index into a string into a char index. */ | |
1904 DECLARE_INLINE_HEADER ( | |
1905 Charcount | |
1906 string_index_byte_to_char (Lisp_Object s, Bytecount idx) | |
1907 ) | |
1908 { | |
1909 Charcount retval; | |
1910 if (idx <= (Bytecount) XSTRING_ASCII_BEGIN (s)) | |
1911 retval = (Charcount) idx; | |
1912 else | |
1913 retval = (XSTRING_ASCII_BEGIN (s) + | |
1914 bytecount_to_charcount (XSTRING_DATA (s) + | |
1915 XSTRING_ASCII_BEGIN (s), | |
1916 idx - XSTRING_ASCII_BEGIN (s))); | |
1917 #ifdef SLEDGEHAMMER_CHECK_ASCII_BEGIN | |
1918 assert (retval == bytecount_to_charcount (XSTRING_DATA (s), idx)); | |
1919 #endif | |
1920 return retval; | |
1921 } | |
1922 | |
1923 /* Convert a char index into a string into a byte index. */ | |
1924 DECLARE_INLINE_HEADER ( | |
1925 Bytecount | |
1926 string_index_char_to_byte (Lisp_Object s, Charcount idx) | |
1927 ) | |
1928 { | |
1929 Bytecount retval; | |
1930 if (idx <= (Charcount) XSTRING_ASCII_BEGIN (s)) | |
1931 retval = (Bytecount) idx; | |
1932 else | |
1933 retval = (XSTRING_ASCII_BEGIN (s) + | |
1934 charcount_to_bytecount (XSTRING_DATA (s) + | |
1935 XSTRING_ASCII_BEGIN (s), | |
1936 idx - XSTRING_ASCII_BEGIN (s))); | |
1937 #ifdef SLEDGEHAMMER_CHECK_ASCII_BEGIN | |
1938 assert (retval == charcount_to_bytecount (XSTRING_DATA (s), idx)); | |
1939 #endif | |
1940 return retval; | |
1941 } | |
1942 | |
1943 /* Convert a substring length (starting at byte offset OFF) from bytes to | |
1944 chars. */ | |
1945 DECLARE_INLINE_HEADER ( | |
1946 Charcount | |
1947 string_offset_byte_to_char_len (Lisp_Object s, Bytecount off, Bytecount len) | |
1948 ) | |
1949 { | |
1950 Charcount retval; | |
1951 if (off + len <= (Bytecount) XSTRING_ASCII_BEGIN (s)) | |
1952 retval = (Charcount) len; | |
1953 else if (off < (Bytecount) XSTRING_ASCII_BEGIN (s)) | |
1954 retval = | |
1955 XSTRING_ASCII_BEGIN (s) - (Charcount) off + | |
1956 bytecount_to_charcount (XSTRING_DATA (s) + XSTRING_ASCII_BEGIN (s), | |
1957 len - (XSTRING_ASCII_BEGIN (s) - off)); | |
1958 else | |
1959 retval = bytecount_to_charcount (XSTRING_DATA (s) + off, len); | |
1960 #ifdef SLEDGEHAMMER_CHECK_ASCII_BEGIN | |
1961 assert (retval == bytecount_to_charcount (XSTRING_DATA (s) + off, len)); | |
1962 #endif | |
1963 return retval; | |
1964 } | |
1965 | |
1966 /* Convert a substring length (starting at byte offset OFF) from chars to | |
1967 bytes. */ | |
1968 DECLARE_INLINE_HEADER ( | |
1969 Bytecount | |
1970 string_offset_char_to_byte_len (Lisp_Object s, Bytecount off, Charcount len) | |
1971 ) | |
1972 { | |
1973 Bytecount retval; | |
1974 /* casts to avoid errors from combining Bytecount/Charcount and warnings | |
1975 from signed/unsigned comparisons */ | |
1976 if (off + (Bytecount) len <= (Bytecount) XSTRING_ASCII_BEGIN (s)) | |
1977 retval = (Bytecount) len; | |
1978 else if (off < (Bytecount) XSTRING_ASCII_BEGIN (s)) | |
1979 retval = | |
1980 XSTRING_ASCII_BEGIN (s) - off + | |
1981 charcount_to_bytecount (XSTRING_DATA (s) + XSTRING_ASCII_BEGIN (s), | |
1982 len - (XSTRING_ASCII_BEGIN (s) - | |
1983 (Charcount) off)); | |
1984 else | |
1985 retval = charcount_to_bytecount (XSTRING_DATA (s) + off, len); | |
1986 #ifdef SLEDGEHAMMER_CHECK_ASCII_BEGIN | |
1987 assert (retval == charcount_to_bytecount (XSTRING_DATA (s) + off, len)); | |
1988 #endif | |
1989 return retval; | |
1990 } | |
1991 | |
1992 DECLARE_INLINE_HEADER ( | |
1993 const Intbyte * | |
1994 string_char_addr (Lisp_Object s, Charcount idx) | |
1995 ) | |
1996 { | |
1997 return XSTRING_DATA (s) + string_index_char_to_byte (s, idx); | |
1998 } | |
1999 | |
2000 void set_string_char (Lisp_Object s, Charcount i, Emchar c); | |
2001 | |
2002 #else /* not MULE */ | |
2003 | |
2004 #define string_index_byte_to_char(s, idx) (idx) | |
2005 #define string_index_char_to_byte(s, idx) (idx) | |
2006 #define string_offset_byte_to_char_len(s, off, len) (len) | |
2007 #define string_offset_char_to_byte_len(s, off, len) (len) | |
2008 # define string_char_addr(s, i) string_byte_addr (s, i) | |
2009 /* WARNING: If you modify an existing string, you must call | |
2010 bump_string_modiff() afterwards. */ | |
2011 # define set_string_char(s, i, c) set_string_byte (s, i, c) | |
2012 | |
2013 #endif /* not MULE */ | |
2014 | 1962 |
2015 /* Return the true aligned size of a struct whose last member is a | 1963 /* Return the true aligned size of a struct whose last member is a |
2016 variable-length array field. (this is known as the "struct hack") */ | 1964 variable-length array field. (this is known as the "struct hack") */ |
2017 /* Implementation: in practice, structtype and fieldtype usually have | 1965 /* Implementation: in practice, structtype and fieldtype usually have |
2018 the same alignment, but we can't be sure. We need to use | 1966 the same alignment, but we can't be sure. We need to use |
2026 (ALIGNOF (structtype) == ALIGNOF (fieldtype) \ | 1974 (ALIGNOF (structtype) == ALIGNOF (fieldtype) \ |
2027 ? (offsetof (structtype, fieldname) + \ | 1975 ? (offsetof (structtype, fieldname) + \ |
2028 (offsetof (structtype, fieldname[1]) - \ | 1976 (offsetof (structtype, fieldname[1]) - \ |
2029 offsetof (structtype, fieldname[0])) * \ | 1977 offsetof (structtype, fieldname[0])) * \ |
2030 (array_length)) \ | 1978 (array_length)) \ |
2031 : (ALIGN_SIZE \ | 1979 : (ALIGN_FOR_TYPE \ |
2032 ((offsetof (structtype, fieldname) + \ | 1980 ((offsetof (structtype, fieldname) + \ |
2033 (offsetof (structtype, fieldname[1]) - \ | 1981 (offsetof (structtype, fieldname[1]) - \ |
2034 offsetof (structtype, fieldname[0])) * \ | 1982 offsetof (structtype, fieldname[0])) * \ |
2035 (array_length)), \ | 1983 (array_length)), \ |
2036 ALIGNOF (structtype)))) | 1984 structtype))) |
2037 | 1985 |
2038 /*------------------------------ vector --------------------------------*/ | 1986 /*------------------------------ vector --------------------------------*/ |
2039 | 1987 |
2040 struct Lisp_Vector | 1988 struct Lisp_Vector |
2041 { | 1989 { |
2106 } while (0) | 2054 } while (0) |
2107 | 2055 |
2108 #define bit_vector_length(v) ((v)->size) | 2056 #define bit_vector_length(v) ((v)->size) |
2109 #define bit_vector_next(v) ((v)->next) | 2057 #define bit_vector_next(v) ((v)->next) |
2110 | 2058 |
2111 INLINE_HEADER int bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n); | 2059 DECLARE_INLINE_HEADER ( |
2112 INLINE_HEADER int | 2060 int |
2113 bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n) | 2061 bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n) |
2062 ) | |
2114 { | 2063 { |
2115 return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1))) | 2064 return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1))) |
2116 & 1); | 2065 & 1); |
2117 } | 2066 } |
2118 | 2067 |
2119 INLINE_HEADER void set_bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n, int value); | 2068 DECLARE_INLINE_HEADER ( |
2120 INLINE_HEADER void | 2069 void |
2121 set_bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n, int value) | 2070 set_bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n, int value) |
2071 ) | |
2122 { | 2072 { |
2123 if (value) | 2073 if (value) |
2124 v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1))); | 2074 v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1))); |
2125 else | 2075 else |
2126 v->bits[n >> LONGBITS_LOG2] &= ~(1UL << (n & (LONGBITS_POWER_OF_2 - 1))); | 2076 v->bits[n >> LONGBITS_LOG2] &= ~(1UL << (n & (LONGBITS_POWER_OF_2 - 1))); |
2143 Lisp_Object function; | 2093 Lisp_Object function; |
2144 Lisp_Object plist; | 2094 Lisp_Object plist; |
2145 }; | 2095 }; |
2146 | 2096 |
2147 #define SYMBOL_IS_KEYWORD(sym) \ | 2097 #define SYMBOL_IS_KEYWORD(sym) \ |
2148 ((XSTRING_BYTE (symbol_name (XSYMBOL (sym)), 0) == ':') \ | 2098 ((string_byte (symbol_name (XSYMBOL (sym)), 0) == ':') \ |
2149 && EQ (sym, oblookup (Vobarray, \ | 2099 && EQ (sym, oblookup (Vobarray, \ |
2150 XSTRING_DATA (symbol_name (XSYMBOL (sym))), \ | 2100 XSTRING_DATA (symbol_name (XSYMBOL (sym))), \ |
2151 XSTRING_LENGTH (symbol_name (XSYMBOL (sym)))))) | 2101 XSTRING_LENGTH (symbol_name (XSYMBOL (sym)))))) |
2152 #define KEYWORDP(obj) (SYMBOLP (obj) && SYMBOL_IS_KEYWORD (obj)) | 2102 #define KEYWORDP(obj) (SYMBOLP (obj) && SYMBOL_IS_KEYWORD (obj)) |
2153 | 2103 |
2230 | 2180 |
2231 #define CHARP(x) (XTYPE (x) == Lisp_Type_Char) | 2181 #define CHARP(x) (XTYPE (x) == Lisp_Type_Char) |
2232 | 2182 |
2233 #ifdef ERROR_CHECK_TYPES | 2183 #ifdef ERROR_CHECK_TYPES |
2234 | 2184 |
2235 INLINE_HEADER Emchar XCHAR_1 (Lisp_Object obj, const char *file, int line); | 2185 DECLARE_INLINE_HEADER ( |
2236 INLINE_HEADER Emchar | 2186 Emchar |
2237 XCHAR_1 (Lisp_Object obj, const char *file, int line) | 2187 XCHAR_1 (Lisp_Object obj, const char *file, int line) |
2188 ) | |
2238 { | 2189 { |
2239 assert_at_line (CHARP (obj), file, line); | 2190 assert_at_line (CHARP (obj), file, line); |
2240 return XCHARVAL (obj); | 2191 return XCHARVAL (obj); |
2241 } | 2192 } |
2242 | 2193 |
2313 #ifdef ERROR_CHECK_TYPES | 2264 #ifdef ERROR_CHECK_TYPES |
2314 | 2265 |
2315 #define XCHAR_OR_INT(x) XCHAR_OR_INT_1 (x, __FILE__, __LINE__) | 2266 #define XCHAR_OR_INT(x) XCHAR_OR_INT_1 (x, __FILE__, __LINE__) |
2316 #define XINT(x) XINT_1 (x, __FILE__, __LINE__) | 2267 #define XINT(x) XINT_1 (x, __FILE__, __LINE__) |
2317 | 2268 |
2318 INLINE_HEADER EMACS_INT XINT_1 (Lisp_Object obj, const char *file, int line); | 2269 DECLARE_INLINE_HEADER ( |
2319 INLINE_HEADER EMACS_INT | 2270 EMACS_INT |
2320 XINT_1 (Lisp_Object obj, const char *file, int line) | 2271 XINT_1 (Lisp_Object obj, const char *file, int line) |
2272 ) | |
2321 { | 2273 { |
2322 assert_at_line (INTP (obj), file, line); | 2274 assert_at_line (INTP (obj), file, line); |
2323 return XREALINT (obj); | 2275 return XREALINT (obj); |
2324 } | 2276 } |
2325 | 2277 |
2326 INLINE_HEADER EMACS_INT XCHAR_OR_INT_1 (Lisp_Object obj, const char *file, | 2278 DECLARE_INLINE_HEADER ( |
2327 int line); | 2279 EMACS_INT |
2328 INLINE_HEADER EMACS_INT | |
2329 XCHAR_OR_INT_1 (Lisp_Object obj, const char *file, int line) | 2280 XCHAR_OR_INT_1 (Lisp_Object obj, const char *file, int line) |
2281 ) | |
2330 { | 2282 { |
2331 assert_at_line (INTP (obj) || CHARP (obj), file, line); | 2283 assert_at_line (INTP (obj) || CHARP (obj), file, line); |
2332 return CHARP (obj) ? XCHAR (obj) : XINT (obj); | 2284 return CHARP (obj) ? XCHAR (obj) : XINT (obj); |
2333 } | 2285 } |
2334 | 2286 |
3108 /*--------------- prototypes for various public c functions ------------*/ | 3060 /*--------------- prototypes for various public c functions ------------*/ |
3109 | 3061 |
3110 /* Prototypes for all init/syms_of/vars_of initialization functions. */ | 3062 /* Prototypes for all init/syms_of/vars_of initialization functions. */ |
3111 #include "symsinit.h" | 3063 #include "symsinit.h" |
3112 | 3064 |
3065 /* Defined in abbrev.c */ | |
3066 EXFUN (Fexpand_abbrev, 0); | |
3067 | |
3113 /* Defined in alloc.c */ | 3068 /* Defined in alloc.c */ |
3069 EXFUN (Fcons, 2); | |
3070 EXFUN (Flist, MANY); | |
3071 EXFUN (Fmake_byte_code, MANY); | |
3072 EXFUN (Fmake_list, 2); | |
3073 EXFUN (Fmake_string, 2); | |
3074 EXFUN (Fmake_symbol, 1); | |
3075 EXFUN (Fmake_vector, 2); | |
3076 EXFUN (Fvector, MANY); | |
3077 | |
3114 void release_breathing_space (void); | 3078 void release_breathing_space (void); |
3115 Lisp_Object noseeum_cons (Lisp_Object, Lisp_Object); | 3079 Lisp_Object noseeum_cons (Lisp_Object, Lisp_Object); |
3116 Lisp_Object make_vector (Elemcount, Lisp_Object); | 3080 Lisp_Object make_vector (Elemcount, Lisp_Object); |
3117 Lisp_Object vector1 (Lisp_Object); | 3081 Lisp_Object vector1 (Lisp_Object); |
3118 Lisp_Object vector2 (Lisp_Object, Lisp_Object); | 3082 Lisp_Object vector2 (Lisp_Object, Lisp_Object); |
3216 extern Lisp_Object Vafter_change_functions, Vbefore_change_function; | 3180 extern Lisp_Object Vafter_change_functions, Vbefore_change_function; |
3217 extern Lisp_Object Vbefore_change_functions, Vbuffer_alist, Vbuffer_defaults; | 3181 extern Lisp_Object Vbefore_change_functions, Vbuffer_alist, Vbuffer_defaults; |
3218 extern Lisp_Object Vinhibit_read_only, Vtransient_mark_mode; | 3182 extern Lisp_Object Vinhibit_read_only, Vtransient_mark_mode; |
3219 | 3183 |
3220 /* Defined in bytecode.c */ | 3184 /* Defined in bytecode.c */ |
3185 EXFUN (Fbyte_code, 3); | |
3186 | |
3221 DECLARE_DOESNT_RETURN (invalid_byte_code | 3187 DECLARE_DOESNT_RETURN (invalid_byte_code |
3222 (const CIntbyte *reason, Lisp_Object frob)); | 3188 (const CIntbyte *reason, Lisp_Object frob)); |
3223 | 3189 |
3224 /* Defined in callproc.c */ | 3190 /* Defined in callproc.c */ |
3225 Intbyte *egetenv (const CIntbyte *var); | 3191 Intbyte *egetenv (const CIntbyte *var); |
3226 void eputenv (const CIntbyte *var, const CIntbyte *value); | 3192 void eputenv (const CIntbyte *var, const CIntbyte *value); |
3227 extern int env_initted; | 3193 extern int env_initted; |
3194 | |
3195 /* Defined in callint.c */ | |
3196 EXFUN (Fcall_interactively, 3); | |
3197 EXFUN (Fprefix_numeric_value, 1); | |
3198 | |
3199 /* Defined in casefiddle.c */ | |
3200 EXFUN (Fdowncase, 2); | |
3201 EXFUN (Fupcase, 2); | |
3202 EXFUN (Fupcase_initials, 2); | |
3203 EXFUN (Fupcase_initials_region, 3); | |
3204 EXFUN (Fupcase_region, 3); | |
3205 | |
3206 /* Defined in casetab.c */ | |
3207 EXFUN (Fset_standard_case_table, 1); | |
3208 | |
3209 /* Defined in chartab.c */ | |
3210 EXFUN (Freset_char_table, 1); | |
3211 | |
3212 /* Defined in cmds.c */ | |
3213 EXFUN (Fbeginning_of_line, 2); | |
3214 EXFUN (Fend_of_line, 2); | |
3215 EXFUN (Fforward_char, 2); | |
3216 EXFUN (Fforward_line, 2); | |
3228 | 3217 |
3229 /* Defined in console.c */ | 3218 /* Defined in console.c */ |
3230 void stuff_buffered_input (Lisp_Object); | 3219 void stuff_buffered_input (Lisp_Object); |
3231 | 3220 |
3232 /* Defined in console-msw.c */ | 3221 /* Defined in console-msw.c */ |
3235 void mswindows_hide_console (void); | 3224 void mswindows_hide_console (void); |
3236 int mswindows_output_console_string (const Intbyte *ptr, Bytecount len); | 3225 int mswindows_output_console_string (const Intbyte *ptr, Bytecount len); |
3237 void write_string_to_mswindows_debugging_output (Intbyte *str, Bytecount len); | 3226 void write_string_to_mswindows_debugging_output (Intbyte *str, Bytecount len); |
3238 | 3227 |
3239 /* Defined in data.c */ | 3228 /* Defined in data.c */ |
3229 EXFUN (Fadd1, 1); | |
3230 EXFUN (Faref, 2); | |
3231 EXFUN (Faset, 3); | |
3232 EXFUN (Fcar, 1); | |
3233 EXFUN (Fcar_safe, 1); | |
3234 EXFUN (Fcdr, 1); | |
3235 EXFUN (Fgeq, MANY); | |
3236 EXFUN (Fgtr, MANY); | |
3237 EXFUN (Findirect_function, 1); | |
3238 EXFUN (Fleq, MANY); | |
3239 EXFUN (Flistp, 1); | |
3240 EXFUN (Flss, MANY); | |
3241 EXFUN (Fmax, MANY); | |
3242 EXFUN (Fmin, MANY); | |
3243 EXFUN (Fminus, MANY); | |
3244 EXFUN (Fnumber_to_string, 1); | |
3245 EXFUN (Fplus, MANY); | |
3246 EXFUN (Fquo, MANY); | |
3247 EXFUN (Frem, 2); | |
3248 EXFUN (Fsetcar, 2); | |
3249 EXFUN (Fsetcdr, 2); | |
3250 EXFUN (Fsub1, 1); | |
3251 EXFUN (Fsubr_max_args, 1); | |
3252 EXFUN (Fsubr_min_args, 1); | |
3253 EXFUN (Ftimes, MANY); | |
3254 | |
3240 DECLARE_DOESNT_RETURN (c_write_error (Lisp_Object)); | 3255 DECLARE_DOESNT_RETURN (c_write_error (Lisp_Object)); |
3241 DECLARE_DOESNT_RETURN (lisp_write_error (Lisp_Object)); | 3256 DECLARE_DOESNT_RETURN (lisp_write_error (Lisp_Object)); |
3242 DECLARE_DOESNT_RETURN (args_out_of_range (Lisp_Object, Lisp_Object)); | 3257 DECLARE_DOESNT_RETURN (args_out_of_range (Lisp_Object, Lisp_Object)); |
3243 DECLARE_DOESNT_RETURN (args_out_of_range_3 (Lisp_Object, Lisp_Object, | 3258 DECLARE_DOESNT_RETURN (args_out_of_range_3 (Lisp_Object, Lisp_Object, |
3244 Lisp_Object)); | 3259 Lisp_Object)); |
3267 /* Defined in dired.c */ | 3282 /* Defined in dired.c */ |
3268 Lisp_Object make_directory_hash_table (const Intbyte *); | 3283 Lisp_Object make_directory_hash_table (const Intbyte *); |
3269 Lisp_Object wasteful_word_to_lisp (unsigned int); | 3284 Lisp_Object wasteful_word_to_lisp (unsigned int); |
3270 | 3285 |
3271 /* Defined in doc.c */ | 3286 /* Defined in doc.c */ |
3287 EXFUN (Fsubstitute_command_keys, 1); | |
3288 | |
3272 Lisp_Object unparesseuxify_doc_string (int fd, EMACS_INT position, | 3289 Lisp_Object unparesseuxify_doc_string (int fd, EMACS_INT position, |
3273 Intbyte *name_nonreloc, | 3290 Intbyte *name_nonreloc, |
3274 Lisp_Object name_reloc, | 3291 Lisp_Object name_reloc, |
3275 int standard_doc_file); | 3292 int standard_doc_file); |
3276 Lisp_Object read_doc_string (Lisp_Object); | 3293 Lisp_Object read_doc_string (Lisp_Object); |
3277 | 3294 |
3278 /* Defined in doprnt.c */ | 3295 /* Defined in doprnt.c */ |
3279 | |
3280 Bytecount emacs_doprnt_va (Lisp_Object stream, const Intbyte *format_nonreloc, | 3296 Bytecount emacs_doprnt_va (Lisp_Object stream, const Intbyte *format_nonreloc, |
3281 Bytecount format_length, Lisp_Object format_reloc, | 3297 Bytecount format_length, Lisp_Object format_reloc, |
3282 va_list vargs); | 3298 va_list vargs); |
3283 Bytecount emacs_doprnt (Lisp_Object stream, const Intbyte *format_nonreloc, | 3299 Bytecount emacs_doprnt (Lisp_Object stream, const Intbyte *format_nonreloc, |
3284 Bytecount format_length, Lisp_Object format_reloc, | 3300 Bytecount format_length, Lisp_Object format_reloc, |
3307 Bytecount emacs_sprintf (Intbyte *output, const CIntbyte *format, ...) | 3323 Bytecount emacs_sprintf (Intbyte *output, const CIntbyte *format, ...) |
3308 PRINTF_ARGS (2, 3); | 3324 PRINTF_ARGS (2, 3); |
3309 | 3325 |
3310 | 3326 |
3311 /* Defined in editfns.c */ | 3327 /* Defined in editfns.c */ |
3328 EXFUN (Fbobp, 1); | |
3329 EXFUN (Fbolp, 1); | |
3330 EXFUN (Fbuffer_substring, 3); | |
3331 EXFUN (Fchar_after, 2); | |
3332 EXFUN (Fchar_to_string, 1); | |
3333 EXFUN (Fdelete_region, 3); | |
3334 EXFUN (Feobp, 1); | |
3335 EXFUN (Feolp, 1); | |
3336 EXFUN (Ffollowing_char, 1); | |
3337 EXFUN (Fformat, MANY); | |
3338 EXFUN (Fgoto_char, 2); | |
3339 EXFUN (Finsert, MANY); | |
3340 EXFUN (Finsert_buffer_substring, 3); | |
3341 EXFUN (Finsert_char, 4); | |
3342 EXFUN (Fnarrow_to_region, 3); | |
3343 EXFUN (Fpoint, 1); | |
3344 EXFUN (Fpoint_marker, 2); | |
3345 EXFUN (Fpoint_max, 1); | |
3346 EXFUN (Fpoint_min, 1); | |
3347 EXFUN (Fpreceding_char, 1); | |
3348 EXFUN (Fsystem_name, 0); | |
3349 EXFUN (Fuser_home_directory, 0); | |
3350 EXFUN (Fuser_login_name, 1); | |
3351 EXFUN (Fwiden, 1); | |
3352 | |
3312 void uncache_home_directory (void); | 3353 void uncache_home_directory (void); |
3313 Intbyte *get_home_directory (void); | 3354 Intbyte *get_home_directory (void); |
3314 Intbyte *user_login_name (uid_t *); | 3355 Intbyte *user_login_name (uid_t *); |
3315 Charbpos charbpos_clip_to_bounds (Charbpos, Charbpos, Charbpos); | |
3316 Bytebpos bytebpos_clip_to_bounds (Bytebpos, Bytebpos, Bytebpos); | |
3317 void buffer_insert1 (struct buffer *, Lisp_Object); | 3356 void buffer_insert1 (struct buffer *, Lisp_Object); |
3318 Lisp_Object make_string_from_buffer (struct buffer *, Charbpos, Charcount); | 3357 Lisp_Object make_string_from_buffer (struct buffer *, Charbpos, Charcount); |
3319 Lisp_Object make_string_from_buffer_no_extents (struct buffer *, Charbpos, Charcount); | 3358 Lisp_Object make_string_from_buffer_no_extents (struct buffer *, Charbpos, Charcount); |
3320 Lisp_Object make_time (time_t); | 3359 Lisp_Object make_time (time_t); |
3321 Lisp_Object save_excursion_save (void); | 3360 Lisp_Object save_excursion_save (void); |
3327 | 3366 |
3328 /* Defined in emacsfns.c */ | 3367 /* Defined in emacsfns.c */ |
3329 Lisp_Object save_current_buffer_restore (Lisp_Object); | 3368 Lisp_Object save_current_buffer_restore (Lisp_Object); |
3330 | 3369 |
3331 /* Defined in emacs.c */ | 3370 /* Defined in emacs.c */ |
3371 EXFUN (Fkill_emacs, 1); | |
3372 EXFUN (Frunning_temacs_p, 0); | |
3373 | |
3332 SIGTYPE fatal_error_signal (int); | 3374 SIGTYPE fatal_error_signal (int); |
3333 Lisp_Object make_arg_list (int, Extbyte **); | 3375 Lisp_Object make_arg_list (int, Extbyte **); |
3334 void make_argc_argv (Lisp_Object, int *, Extbyte ***); | 3376 void make_argc_argv (Lisp_Object, int *, Extbyte ***); |
3335 void free_argc_argv (Extbyte **); | 3377 void free_argc_argv (Extbyte **); |
3336 Lisp_Object split_external_path (const Extbyte *path); | 3378 Lisp_Object split_external_path (const Extbyte *path); |
3346 void debug_break (void); | 3388 void debug_break (void); |
3347 int debug_can_access_memory (void *ptr, Bytecount len); | 3389 int debug_can_access_memory (void *ptr, Bytecount len); |
3348 void really_abort (void); | 3390 void really_abort (void); |
3349 void zero_out_command_line_status_vars (void); | 3391 void zero_out_command_line_status_vars (void); |
3350 | 3392 |
3393 /* Defined in emodules.c */ | |
3394 EXFUN (Flist_modules, 0); | |
3395 EXFUN (Fload_module, 3); | |
3396 | |
3397 | |
3351 /* Defined in eval.c */ | 3398 /* Defined in eval.c */ |
3399 EXFUN (Fapply, MANY); | |
3400 EXFUN (Fbacktrace, 2); | |
3401 EXFUN (Fcommand_execute, 3); | |
3402 EXFUN (Fcommandp, 1); | |
3403 EXFUN (Feval, 1); | |
3404 EXFUN (Ffuncall, MANY); | |
3405 EXFUN (Ffunctionp, 1); | |
3406 EXFUN (Finteractive_p, 0); | |
3407 EXFUN (Fprogn, UNEVALLED); | |
3408 EXFUN (Fsignal, 2); | |
3409 EXFUN (Fthrow, 2); | |
3410 | |
3352 DECLARE_DOESNT_RETURN (signal_error_1 (Lisp_Object, Lisp_Object)); | 3411 DECLARE_DOESNT_RETURN (signal_error_1 (Lisp_Object, Lisp_Object)); |
3353 void maybe_signal_error_1 (Lisp_Object, Lisp_Object, Lisp_Object, | 3412 void maybe_signal_error_1 (Lisp_Object, Lisp_Object, Lisp_Object, |
3354 Error_Behavior); | 3413 Error_Behavior); |
3355 Lisp_Object maybe_signal_continuable_error_1 (Lisp_Object, Lisp_Object, | 3414 Lisp_Object maybe_signal_continuable_error_1 (Lisp_Object, Lisp_Object, |
3356 Lisp_Object, Error_Behavior); | 3415 Lisp_Object, Error_Behavior); |
3542 void warn_when_safe (Lisp_Object, Lisp_Object, const CIntbyte *, | 3601 void warn_when_safe (Lisp_Object, Lisp_Object, const CIntbyte *, |
3543 ...) PRINTF_ARGS (3, 4); | 3602 ...) PRINTF_ARGS (3, 4); |
3544 | 3603 |
3545 | 3604 |
3546 /* Defined in event-stream.c */ | 3605 /* Defined in event-stream.c */ |
3606 EXFUN (Faccept_process_output, 3); | |
3607 EXFUN (Fadd_timeout, 4); | |
3608 EXFUN (Fdisable_timeout, 1); | |
3609 EXFUN (Fdiscard_input, 0); | |
3610 EXFUN (Fdispatch_event, 1); | |
3611 EXFUN (Fenqueue_eval_event, 2); | |
3612 EXFUN (Fnext_event, 2); | |
3613 EXFUN (Fread_key_sequence, 3); | |
3614 EXFUN (Fsit_for, 2); | |
3615 EXFUN (Fsleep_for, 1); | |
3616 | |
3547 void wait_delaying_user_input (int (*) (void *), void *); | 3617 void wait_delaying_user_input (int (*) (void *), void *); |
3548 int detect_input_pending (void); | 3618 int detect_input_pending (void); |
3549 void reset_this_command_keys (Lisp_Object, int); | 3619 void reset_this_command_keys (Lisp_Object, int); |
3550 Lisp_Object enqueue_misc_user_event (Lisp_Object, Lisp_Object, Lisp_Object); | 3620 Lisp_Object enqueue_misc_user_event (Lisp_Object, Lisp_Object, Lisp_Object); |
3551 Lisp_Object enqueue_misc_user_event_pos (Lisp_Object, Lisp_Object, | 3621 Lisp_Object enqueue_misc_user_event_pos (Lisp_Object, Lisp_Object, |
3556 void enqueue_Xt_dispatch_event (Lisp_Object event); | 3626 void enqueue_Xt_dispatch_event (Lisp_Object event); |
3557 void signal_special_Xt_user_event (Lisp_Object, Lisp_Object, Lisp_Object); | 3627 void signal_special_Xt_user_event (Lisp_Object, Lisp_Object, Lisp_Object); |
3558 | 3628 |
3559 | 3629 |
3560 /* Defined in events.c */ | 3630 /* Defined in events.c */ |
3631 EXFUN (Fcopy_event, 2); | |
3632 EXFUN (Fevent_to_character, 4); | |
3633 | |
3561 void clear_event_resource (void); | 3634 void clear_event_resource (void); |
3562 Lisp_Object allocate_event (void); | 3635 Lisp_Object allocate_event (void); |
3563 | 3636 |
3564 EXFUN (Fevent_x_pixel, 1); | 3637 EXFUN (Fevent_x_pixel, 1); |
3565 EXFUN (Fevent_y_pixel, 1); | 3638 EXFUN (Fevent_y_pixel, 1); |
3566 | 3639 |
3640 | |
3641 /* Defined in extents.c */ | |
3642 EXFUN (Fextent_at, 5); | |
3643 EXFUN (Fextent_property, 3); | |
3644 EXFUN (Fput_text_property, 5); | |
3645 | |
3646 EXFUN (Fdetach_extent, 1); | |
3647 EXFUN (Fextent_end_position, 1); | |
3648 EXFUN (Fextent_object, 1); | |
3649 EXFUN (Fextent_properties, 1); | |
3650 EXFUN (Fextent_start_position, 1); | |
3651 EXFUN (Fget_char_property, 4); | |
3652 EXFUN (Fmake_extent, 3); | |
3653 EXFUN (Fnext_extent_change, 2); | |
3654 EXFUN (Fprevious_extent_change, 2); | |
3655 EXFUN (Fprevious_single_property_change, 4); | |
3656 EXFUN (Fset_extent_endpoints, 4); | |
3657 EXFUN (Fset_extent_parent, 2); | |
3658 EXFUN (Fset_extent_property, 3); | |
3659 | |
3660 enum extent_at_flag | |
3661 { | |
3662 EXTENT_AT_DEFAULT = 0, | |
3663 EXTENT_AT_AFTER = 0, | |
3664 EXTENT_AT_BEFORE, | |
3665 EXTENT_AT_AT | |
3666 }; | |
3667 | |
3668 Bytexpos extent_endpoint_byte (EXTENT extent, int endp); | |
3669 Charxpos extent_endpoint_char (EXTENT extent, int endp); | |
3670 Bytexpos next_single_property_change (Bytexpos pos, Lisp_Object prop, | |
3671 Lisp_Object object, Bytexpos limit); | |
3672 Bytexpos previous_single_property_change (Bytexpos pos, Lisp_Object prop, | |
3673 Lisp_Object object, Bytexpos limit); | |
3674 Lisp_Object get_char_property (Bytexpos position, Lisp_Object prop, | |
3675 Lisp_Object object, enum extent_at_flag fl, | |
3676 int text_props_only); | |
3677 void adjust_extents (Lisp_Object object, Memxpos from, | |
3678 Memxpos to, int amount); | |
3679 void adjust_extents_for_deletion (Lisp_Object object, Bytexpos from, | |
3680 Bytexpos to, int gapsize, | |
3681 int numdel, int movegapsize); | |
3682 void verify_extent_modification (Lisp_Object object, Bytexpos from, | |
3683 Bytexpos to, | |
3684 Lisp_Object inhibit_read_only_value); | |
3685 void process_extents_for_insertion (Lisp_Object object, | |
3686 Bytexpos opoint, Bytecount length); | |
3687 void process_extents_for_deletion (Lisp_Object object, Bytexpos from, | |
3688 Bytexpos to, int destroy_them); | |
3689 /* Note the following function is in Charbpos's */ | |
3690 void report_extent_modification (Lisp_Object buffer, Charbpos start, | |
3691 Charbpos end, int afterp); | |
3692 void add_string_extents (Lisp_Object string, struct buffer *buf, | |
3693 Bytexpos opoint, Bytecount length); | |
3694 void splice_in_string_extents (Lisp_Object string, struct buffer *buf, | |
3695 Bytexpos opoint, Bytecount length, | |
3696 Bytecount pos); | |
3697 void copy_string_extents (Lisp_Object new_string, | |
3698 Lisp_Object old_string, | |
3699 Bytecount new_pos, Bytecount old_pos, | |
3700 Bytecount length); | |
3701 void detach_all_extents (Lisp_Object object); | |
3702 Lisp_Object extent_at (Bytexpos position, Lisp_Object object, | |
3703 Lisp_Object property, EXTENT before, | |
3704 enum extent_at_flag at_flag, int all_extents); | |
3567 | 3705 |
3568 /* Defined in file-coding.c */ | 3706 /* Defined in file-coding.c */ |
3569 EXFUN (Fcoding_category_list, 0); | 3707 EXFUN (Fcoding_category_list, 0); |
3570 EXFUN (Fcoding_category_system, 1); | 3708 EXFUN (Fcoding_category_system, 1); |
3571 EXFUN (Fcoding_priority_list, 0); | 3709 EXFUN (Fcoding_priority_list, 0); |
3618 Lisp_Object get_coding_system_for_text_file (Lisp_Object name, int eol_wrap); | 3756 Lisp_Object get_coding_system_for_text_file (Lisp_Object name, int eol_wrap); |
3619 int coding_system_is_binary (Lisp_Object coding_system); | 3757 int coding_system_is_binary (Lisp_Object coding_system); |
3620 | 3758 |
3621 | 3759 |
3622 /* Defined in fileio.c */ | 3760 /* Defined in fileio.c */ |
3761 EXFUN (Fdirectory_file_name, 1); | |
3762 EXFUN (Fdo_auto_save, 2); | |
3763 EXFUN (Fexpand_file_name, 2); | |
3764 EXFUN (Ffile_accessible_directory_p, 1); | |
3765 EXFUN (Ffile_directory_p, 1); | |
3766 EXFUN (Ffile_executable_p, 1); | |
3767 EXFUN (Ffile_exists_p, 1); | |
3768 EXFUN (Ffile_name_absolute_p, 1); | |
3769 EXFUN (Ffile_name_as_directory, 1); | |
3770 EXFUN (Ffile_name_directory, 1); | |
3771 EXFUN (Ffile_name_nondirectory, 1); | |
3772 EXFUN (Ffile_readable_p, 1); | |
3773 EXFUN (Ffile_symlink_p, 1); | |
3774 EXFUN (Ffile_truename, 2); | |
3775 EXFUN (Ffind_file_name_handler, 2); | |
3776 EXFUN (Finsert_file_contents_internal, 7); | |
3777 EXFUN (Fmake_temp_name, 1); | |
3778 EXFUN (Fsubstitute_in_file_name, 1); | |
3779 EXFUN (Funhandled_file_name_directory, 1); | |
3780 EXFUN (Fverify_visited_file_modtime, 1); | |
3781 | |
3623 void record_auto_save (void); | 3782 void record_auto_save (void); |
3624 void force_auto_save_soon (void); | 3783 void force_auto_save_soon (void); |
3625 DECLARE_DOESNT_RETURN (report_error_with_errno (Lisp_Object errtype, | 3784 DECLARE_DOESNT_RETURN (report_error_with_errno (Lisp_Object errtype, |
3626 const CIntbyte *string, | 3785 const CIntbyte *string, |
3627 Lisp_Object data)); | 3786 Lisp_Object data)); |
3633 Lisp_Object lisp_strerror (int); | 3792 Lisp_Object lisp_strerror (int); |
3634 Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); | 3793 Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); |
3635 int internal_delete_file (Lisp_Object); | 3794 int internal_delete_file (Lisp_Object); |
3636 | 3795 |
3637 /* Defined in filelock.c */ | 3796 /* Defined in filelock.c */ |
3797 EXFUN (Funlock_buffer, 0); | |
3798 | |
3638 void lock_file (Lisp_Object); | 3799 void lock_file (Lisp_Object); |
3639 void unlock_file (Lisp_Object); | 3800 void unlock_file (Lisp_Object); |
3640 void unlock_all_files (void); | 3801 void unlock_all_files (void); |
3641 void unlock_buffer (struct buffer *); | 3802 void unlock_buffer (struct buffer *); |
3642 | 3803 |
3643 /* Defined in filemode.c */ | 3804 /* Defined in filemode.c */ |
3644 void filemodestring (struct stat *, char *); | 3805 void filemodestring (struct stat *, char *); |
3645 | 3806 |
3646 /* Defined in floatfns.c */ | 3807 /* Defined in floatfns.c */ |
3808 EXFUN (Ftruncate, 1); | |
3809 | |
3647 double extract_float (Lisp_Object); | 3810 double extract_float (Lisp_Object); |
3648 | 3811 |
3649 /* Defined in fns.c */ | 3812 /* Defined in fns.c */ |
3813 EXFUN (Fappend, MANY); | |
3814 EXFUN (Fassoc, 2); | |
3815 EXFUN (Fassq, 2); | |
3816 EXFUN (Fcanonicalize_lax_plist, 2); | |
3817 EXFUN (Fcanonicalize_plist, 2); | |
3818 EXFUN (Fcheck_valid_plist, 1); | |
3819 EXFUN (Fconcat, MANY); | |
3820 EXFUN (Fcopy_alist, 1); | |
3821 EXFUN (Fcopy_list, 1); | |
3822 EXFUN (Fcopy_sequence, 1); | |
3823 EXFUN (Fcopy_tree, 2); | |
3824 EXFUN (Fdelete, 2); | |
3825 EXFUN (Fdelq, 2); | |
3826 EXFUN (Fdestructive_alist_to_plist, 1); | |
3827 EXFUN (Felt, 2); | |
3828 EXFUN (Fequal, 2); | |
3829 EXFUN (Fget, 3); | |
3830 EXFUN (Flast, 2); | |
3831 EXFUN (Flax_plist_get, 3); | |
3832 EXFUN (Flax_plist_remprop, 2); | |
3833 EXFUN (Flength, 1); | |
3834 EXFUN (Fmapcar, 2); | |
3835 EXFUN (Fmember, 2); | |
3836 EXFUN (Fmemq, 2); | |
3837 EXFUN (Fnconc, MANY); | |
3838 EXFUN (Fnreverse, 1); | |
3839 EXFUN (Fnthcdr, 2); | |
3840 EXFUN (Fold_assq, 2); | |
3841 EXFUN (Fold_equal, 2); | |
3842 EXFUN (Fold_member, 2); | |
3843 EXFUN (Fold_memq, 2); | |
3844 EXFUN (Fplist_get, 3); | |
3845 EXFUN (Fplist_member, 2); | |
3846 EXFUN (Fplist_put, 3); | |
3847 EXFUN (Fprovide, 1); | |
3848 EXFUN (Fput, 3); | |
3849 EXFUN (Frassq, 2); | |
3850 EXFUN (Fremassq, 2); | |
3851 EXFUN (Freplace_list, 2); | |
3852 EXFUN (Fsort, 2); | |
3853 EXFUN (Fstring_equal, 2); | |
3854 EXFUN (Fstring_lessp, 2); | |
3855 EXFUN (Fsubstring, 3); | |
3856 EXFUN (Fvalid_plist_p, 1); | |
3857 | |
3650 Lisp_Object list_sort (Lisp_Object, Lisp_Object, | 3858 Lisp_Object list_sort (Lisp_Object, Lisp_Object, |
3651 int (*) (Lisp_Object, Lisp_Object, Lisp_Object)); | 3859 int (*) (Lisp_Object, Lisp_Object, Lisp_Object)); |
3652 Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object); | 3860 Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object); |
3653 | 3861 |
3654 void bump_string_modiff (Lisp_Object); | 3862 void bump_string_modiff (Lisp_Object); |
3684 Lisp_Object add_suffix_to_symbol (Lisp_Object symbol, | 3892 Lisp_Object add_suffix_to_symbol (Lisp_Object symbol, |
3685 const Char_ASCII *ascii_string); | 3893 const Char_ASCII *ascii_string); |
3686 Lisp_Object add_prefix_to_symbol (const Char_ASCII *ascii_string, | 3894 Lisp_Object add_prefix_to_symbol (const Char_ASCII *ascii_string, |
3687 Lisp_Object symbol); | 3895 Lisp_Object symbol); |
3688 | 3896 |
3897 /* Defined in frame.c */ | |
3898 EXFUN (Fselected_frame, 1); | |
3899 | |
3900 /* Defined in free-hook.c */ | |
3901 EXFUN (Freally_free, 1); | |
3902 | |
3689 /* Defined in glyphs.c */ | 3903 /* Defined in glyphs.c */ |
3904 EXFUN (Fmake_glyph_internal, 1); | |
3905 | |
3690 Error_Behavior decode_error_behavior_flag (Lisp_Object); | 3906 Error_Behavior decode_error_behavior_flag (Lisp_Object); |
3691 Lisp_Object encode_error_behavior_flag (Error_Behavior); | 3907 Lisp_Object encode_error_behavior_flag (Error_Behavior); |
3692 | 3908 |
3693 /* Defined in glyphs-shared.c */ | 3909 /* Defined in glyphs-shared.c */ |
3694 void shared_resource_validate (Lisp_Object instantiator); | 3910 void shared_resource_validate (Lisp_Object instantiator); |
3702 DECLARE_DOESNT_RETURN (gui_error (const char *reason, | 3918 DECLARE_DOESNT_RETURN (gui_error (const char *reason, |
3703 Lisp_Object frob)); | 3919 Lisp_Object frob)); |
3704 DECLARE_DOESNT_RETURN (gui_error_2 (const char *reason, | 3920 DECLARE_DOESNT_RETURN (gui_error_2 (const char *reason, |
3705 Lisp_Object frob0, Lisp_Object frob1)); | 3921 Lisp_Object frob0, Lisp_Object frob1)); |
3706 /* Defined in indent.c */ | 3922 /* Defined in indent.c */ |
3707 int bi_spaces_at_point (struct buffer *, Bytebpos); | 3923 EXFUN (Findent_to, 3); |
3924 EXFUN (Fvertical_motion, 3); | |
3925 | |
3926 int byte_spaces_at_point (struct buffer *, Bytebpos); | |
3708 int column_at_point (struct buffer *, Charbpos, int); | 3927 int column_at_point (struct buffer *, Charbpos, int); |
3709 int string_column_at_point (Lisp_Object, Charbpos, int); | 3928 int string_column_at_point (Lisp_Object, Charbpos, int); |
3710 int current_column (struct buffer *); | 3929 int current_column (struct buffer *); |
3711 void invalidate_current_column (void); | 3930 void invalidate_current_column (void); |
3712 Charbpos vmotion (struct window *, Charbpos, int, int *); | 3931 Charbpos vmotion (struct window *, Charbpos, int, int *); |
3713 Charbpos vmotion_pixels (Lisp_Object, Charbpos, int, int, int *); | 3932 Charbpos vmotion_pixels (Lisp_Object, Charbpos, int, int, int *); |
3714 | 3933 |
3715 /* Defined in insdel.c */ | 3934 /* Defined in insdel.c */ |
3716 void set_buffer_point (struct buffer *buf, Charbpos pos, Bytebpos bipos); | 3935 void set_buffer_point (struct buffer *buf, Charbpos pos, Bytebpos bipos); |
3936 | |
3937 /* Defined in intl.c */ | |
3938 EXFUN (Fgettext, 1); | |
3939 | |
3717 | 3940 |
3718 /* Defined in intl-win32.c */ | 3941 /* Defined in intl-win32.c */ |
3719 EXFUN (Fmswindows_set_current_locale, 1); | 3942 EXFUN (Fmswindows_set_current_locale, 1); |
3720 EXFUN (Fmswindows_current_locale, 0); | 3943 EXFUN (Fmswindows_current_locale, 0); |
3721 EXFUN (Fmswindows_user_default_locale, 0); | 3944 EXFUN (Fmswindows_user_default_locale, 0); |
3727 | 3950 |
3728 extern Lisp_Object Qmswindows_tstr, Qmswindows_unicode; | 3951 extern Lisp_Object Qmswindows_tstr, Qmswindows_unicode; |
3729 extern Lisp_Object Qmswindows_multibyte, Qmswindows_multibyte_to_unicode; | 3952 extern Lisp_Object Qmswindows_multibyte, Qmswindows_multibyte_to_unicode; |
3730 | 3953 |
3731 /* Defined in keymap.c */ | 3954 /* Defined in keymap.c */ |
3955 EXFUN (Fdefine_key, 3); | |
3956 EXFUN (Fkey_description, 1); | |
3957 EXFUN (Flookup_key, 3); | |
3958 EXFUN (Fmake_sparse_keymap, 1); | |
3959 | |
3732 void where_is_to_char (Lisp_Object, Eistring *); | 3960 void where_is_to_char (Lisp_Object, Eistring *); |
3733 | 3961 |
3734 /* Defined in lread.c */ | 3962 /* Defined in lread.c */ |
3963 EXFUN (Fread, 1); | |
3964 | |
3735 void ebolify_bytecode_constants (Lisp_Object); | 3965 void ebolify_bytecode_constants (Lisp_Object); |
3736 void close_load_descs (void); | 3966 void close_load_descs (void); |
3737 int locate_file (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object *, int); | 3967 int locate_file (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object *, int); |
3738 EXFUN (Flocate_file_clear_hashing, 1); | 3968 EXFUN (Flocate_file_clear_hashing, 1); |
3739 int isfloat_string (const char *); | 3969 int isfloat_string (const char *); |
3752 while (0) | 3982 while (0) |
3753 #else /*! LOADHIST */ | 3983 #else /*! LOADHIST */ |
3754 # define LOADHIST_ATTACH(x) | 3984 # define LOADHIST_ATTACH(x) |
3755 #endif /*! LOADHIST */ | 3985 #endif /*! LOADHIST */ |
3756 | 3986 |
3987 /* Defined in macros.c */ | |
3988 EXFUN (Fexecute_kbd_macro, 2); | |
3989 | |
3757 /* Defined in marker.c */ | 3990 /* Defined in marker.c */ |
3758 Bytebpos bi_marker_position (Lisp_Object); | 3991 EXFUN (Fcopy_marker, 2); |
3992 EXFUN (Fmake_marker, 0); | |
3993 EXFUN (Fmarker_buffer, 1); | |
3994 EXFUN (Fmarker_position, 1); | |
3995 EXFUN (Fset_marker, 3); | |
3996 EXFUN (Fset_marker_insertion_type, 2); | |
3997 | |
3998 Bytebpos byte_marker_position (Lisp_Object); | |
3759 Charbpos marker_position (Lisp_Object); | 3999 Charbpos marker_position (Lisp_Object); |
3760 void set_bi_marker_position (Lisp_Object, Bytebpos); | 4000 void set_byte_marker_position (Lisp_Object, Bytebpos); |
3761 void set_marker_position (Lisp_Object, Charbpos); | 4001 void set_marker_position (Lisp_Object, Charbpos); |
3762 void unchain_marker (Lisp_Object); | 4002 void unchain_marker (Lisp_Object); |
3763 Lisp_Object noseeum_copy_marker (Lisp_Object, Lisp_Object); | 4003 Lisp_Object noseeum_copy_marker (Lisp_Object, Lisp_Object); |
3764 Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object); | 4004 Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object); |
3765 #ifdef MEMORY_USAGE_STATS | 4005 #ifdef MEMORY_USAGE_STATS |
3796 void message_append (const char *, ...) PRINTF_ARGS (1, 2); | 4036 void message_append (const char *, ...) PRINTF_ARGS (1, 2); |
3797 void message_no_translate (const char *, ...) PRINTF_ARGS (1, 2); | 4037 void message_no_translate (const char *, ...) PRINTF_ARGS (1, 2); |
3798 void clear_message (void); | 4038 void clear_message (void); |
3799 | 4039 |
3800 /* Defined in mule-charset.c */ | 4040 /* Defined in mule-charset.c */ |
4041 EXFUN (Fmake_charset, 3); | |
4042 | |
3801 extern Lisp_Object Ql2r, Qr2l; | 4043 extern Lisp_Object Ql2r, Qr2l; |
3802 | 4044 |
3803 /* Defined in print.c */ | 4045 /* Defined in print.c */ |
4046 EXFUN (Fdisplay_error, 2); | |
4047 EXFUN (Ferror_message_string, 1); | |
4048 EXFUN (Fprin1, 2); | |
4049 EXFUN (Fprin1_to_string, 2); | |
4050 EXFUN (Fprinc, 2); | |
4051 EXFUN (Fprint, 2); | |
4052 | |
3804 | 4053 |
3805 /* Lower-level ways to output data: */ | 4054 /* Lower-level ways to output data: */ |
3806 void print_internal (Lisp_Object, Lisp_Object, int); | 4055 void print_internal (Lisp_Object, Lisp_Object, int); |
3807 void debug_print (Lisp_Object); | 4056 void debug_print (Lisp_Object); |
3808 /* NOTE: Do not call this with the data of a Lisp_String. Use princ. | 4057 /* NOTE: Do not call this with the data of a Lisp_String. Use princ. |
3809 * Note: stream should be defaulted before calling | 4058 * Note: stream should be defaulted before calling |
3810 * (eg Qnil means stdout, not Vstandard_output, etc) */ | 4059 * (eg Qnil means stdout, not Vstandard_output, etc) */ |
3811 void write_c_string (const CIntbyte *str, Lisp_Object stream); | 4060 void write_c_string (Lisp_Object stream, const CIntbyte *str); |
3812 /* Same goes for this function. */ | 4061 /* Same goes for this function. */ |
3813 void write_string (const Intbyte *str, Lisp_Object stream); | 4062 void write_string (Lisp_Object stream, const Intbyte *str); |
3814 /* Same goes for this function. */ | 4063 /* Same goes for this function. */ |
3815 void write_string_1 (const Intbyte *str, Bytecount size, Lisp_Object stream); | 4064 void write_string_1 (Lisp_Object stream, const Intbyte *str, Bytecount size); |
3816 void write_eistring (const Eistring *ei, Lisp_Object stream); | 4065 void write_eistring (Lisp_Object stream, const Eistring *ei); |
3817 | 4066 |
3818 /* Higher-level (printf-style) ways to output data: */ | 4067 /* Higher-level (printf-style) ways to output data: */ |
3819 void write_fmt_string (Lisp_Object stream, const CIntbyte *fmt, ...); | 4068 void write_fmt_string (Lisp_Object stream, const CIntbyte *fmt, ...); |
3820 void write_fmt_string_lisp (Lisp_Object stream, const CIntbyte *fmt, | 4069 void write_fmt_string_lisp (Lisp_Object stream, const CIntbyte *fmt, |
3821 int nargs, ...); | 4070 int nargs, ...); |
3854 void internal_object_printer (Lisp_Object, Lisp_Object, int); | 4103 void internal_object_printer (Lisp_Object, Lisp_Object, int); |
3855 void debug_short_backtrace (int); | 4104 void debug_short_backtrace (int); |
3856 void debug_backtrace (void); | 4105 void debug_backtrace (void); |
3857 | 4106 |
3858 /* Defined in process.c */ | 4107 /* Defined in process.c */ |
4108 EXFUN (Fdelete_process, 1); | |
4109 EXFUN (Fget_buffer_process, 1); | |
4110 EXFUN (Fget_process, 1); | |
4111 EXFUN (Fprocess_status, 1); | |
4112 | |
3859 DECLARE_DOESNT_RETURN (report_process_error (const char *, Lisp_Object)); | 4113 DECLARE_DOESNT_RETURN (report_process_error (const char *, Lisp_Object)); |
3860 DECLARE_DOESNT_RETURN (report_network_error (const char *, Lisp_Object)); | 4114 DECLARE_DOESNT_RETURN (report_network_error (const char *, Lisp_Object)); |
3861 extern Lisp_Object Vlisp_EXEC_SUFFIXES; | 4115 extern Lisp_Object Vlisp_EXEC_SUFFIXES; |
3862 | 4116 |
3863 /* Defined in profile.c */ | 4117 /* Defined in profile.c */ |
3865 void profile_increase_call_count (Lisp_Object); | 4119 void profile_increase_call_count (Lisp_Object); |
3866 extern int profiling_active; | 4120 extern int profiling_active; |
3867 extern int profiling_redisplay_flag; | 4121 extern int profiling_redisplay_flag; |
3868 | 4122 |
3869 /* Defined in rangetab.c */ | 4123 /* Defined in rangetab.c */ |
4124 EXFUN (Fclear_range_table, 1); | |
4125 EXFUN (Fget_range_table, 3); | |
4126 EXFUN (Fmake_range_table, 0); | |
4127 EXFUN (Fput_range_table, 4); | |
4128 | |
3870 void put_range_table (Lisp_Object, EMACS_INT, EMACS_INT, Lisp_Object); | 4129 void put_range_table (Lisp_Object, EMACS_INT, EMACS_INT, Lisp_Object); |
3871 int unified_range_table_bytes_needed (Lisp_Object); | 4130 int unified_range_table_bytes_needed (Lisp_Object); |
3872 int unified_range_table_bytes_used (void *); | 4131 int unified_range_table_bytes_used (void *); |
3873 void unified_range_table_copy_data (Lisp_Object, void *); | 4132 void unified_range_table_copy_data (Lisp_Object, void *); |
3874 Lisp_Object unified_range_table_lookup (void *, EMACS_INT, Lisp_Object); | 4133 Lisp_Object unified_range_table_lookup (void *, EMACS_INT, Lisp_Object); |
3875 int unified_range_table_nentries (void *); | 4134 int unified_range_table_nentries (void *); |
3876 void unified_range_table_get_range (void *, int, EMACS_INT *, EMACS_INT *, | 4135 void unified_range_table_get_range (void *, int, EMACS_INT *, EMACS_INT *, |
3877 Lisp_Object *); | 4136 Lisp_Object *); |
3878 | 4137 |
3879 /* Defined in search.c */ | 4138 /* Defined in search.c */ |
4139 EXFUN (Fmatch_beginning, 1); | |
4140 EXFUN (Fmatch_end, 1); | |
4141 EXFUN (Fskip_chars_backward, 3); | |
4142 EXFUN (Fskip_chars_forward, 3); | |
4143 EXFUN (Fstring_match, 4); | |
4144 | |
3880 struct re_pattern_buffer; | 4145 struct re_pattern_buffer; |
3881 struct re_registers; | 4146 struct re_registers; |
3882 Charbpos scan_buffer (struct buffer *, Emchar, Charbpos, Charbpos, EMACS_INT, EMACS_INT *, int); | 4147 Charbpos scan_buffer (struct buffer *, Emchar, Charbpos, Charbpos, EMACS_INT, |
4148 EMACS_INT *, int); | |
3883 Charbpos find_next_newline (struct buffer *, Charbpos, int); | 4149 Charbpos find_next_newline (struct buffer *, Charbpos, int); |
3884 Charbpos find_next_newline_no_quit (struct buffer *, Charbpos, int); | 4150 Charbpos find_next_newline_no_quit (struct buffer *, Charbpos, int); |
3885 Bytebpos bi_find_next_newline_no_quit (struct buffer *, Bytebpos, int); | 4151 Bytebpos byte_find_next_newline_no_quit (struct buffer *, Bytebpos, int); |
3886 Bytebpos bi_find_next_emchar_in_string (Lisp_Object, Emchar, Bytebpos, EMACS_INT); | 4152 Bytecount byte_find_next_emchar_in_string (Lisp_Object, Emchar, Bytecount, |
4153 EMACS_INT); | |
3887 Charbpos find_before_next_newline (struct buffer *, Charbpos, Charbpos, int); | 4154 Charbpos find_before_next_newline (struct buffer *, Charbpos, Charbpos, int); |
3888 struct re_pattern_buffer *compile_pattern (Lisp_Object, struct re_registers *, | 4155 struct re_pattern_buffer *compile_pattern (Lisp_Object pattern, |
3889 Lisp_Object, int, Error_Behavior); | 4156 struct re_registers *regp, |
3890 Bytecount fast_string_match (Lisp_Object, const Intbyte *, | 4157 Lisp_Object translate, |
4158 Lisp_Object searchobj, | |
4159 struct buffer *searchbuf, | |
4160 int posix, Error_Behavior errb); | |
4161 Bytecount fast_string_match (Lisp_Object, const Intbyte *, | |
3891 Lisp_Object, Bytecount, | 4162 Lisp_Object, Bytecount, |
3892 Bytecount, int, Error_Behavior, int); | 4163 Bytecount, int, Error_Behavior, int); |
3893 Bytecount fast_lisp_string_match (Lisp_Object, Lisp_Object); | 4164 Bytecount fast_lisp_string_match (Lisp_Object, Lisp_Object); |
3894 void restore_match_data (void); | 4165 void restore_match_data (void); |
3895 extern Fixnum warn_about_possibly_incompatible_back_references; | 4166 extern Fixnum warn_about_possibly_incompatible_back_references; |
3898 /* Defined in signal.c */ | 4169 /* Defined in signal.c */ |
3899 void init_interrupts_late (void); | 4170 void init_interrupts_late (void); |
3900 int begin_dont_check_for_quit (void); | 4171 int begin_dont_check_for_quit (void); |
3901 | 4172 |
3902 /* Defined in sound.c */ | 4173 /* Defined in sound.c */ |
4174 EXFUN (Fding, 3); | |
4175 | |
3903 void init_device_sound (struct device *); | 4176 void init_device_sound (struct device *); |
3904 DECLARE_DOESNT_RETURN (report_sound_error (const Char_ASCII *, Lisp_Object)); | 4177 DECLARE_DOESNT_RETURN (report_sound_error (const Char_ASCII *, Lisp_Object)); |
3905 | 4178 |
3906 /* Defined in specifier.c */ | 4179 /* Defined in specifier.c */ |
4180 EXFUN (Fadd_spec_to_specifier, 5); | |
4181 EXFUN (Fspecifier_spec_list, 4); | |
4182 | |
3907 Lisp_Object specifier_instance (Lisp_Object, Lisp_Object, Lisp_Object, | 4183 Lisp_Object specifier_instance (Lisp_Object, Lisp_Object, Lisp_Object, |
3908 Error_Behavior, int, int, Lisp_Object); | 4184 Error_Behavior, int, int, Lisp_Object); |
3909 Lisp_Object specifier_instance_no_quit (Lisp_Object, Lisp_Object, Lisp_Object, | 4185 Lisp_Object specifier_instance_no_quit (Lisp_Object, Lisp_Object, Lisp_Object, |
3910 Error_Behavior, int, Lisp_Object); | 4186 Error_Behavior, int, Lisp_Object); |
3911 | 4187 |
3912 /* Defined in symbols.c */ | 4188 /* Defined in symbols.c */ |
4189 EXFUN (Fboundp, 1); | |
4190 EXFUN (Fbuilt_in_variable_type, 1); | |
4191 EXFUN (Fdefault_boundp, 1); | |
4192 EXFUN (Fdefault_value, 1); | |
4193 EXFUN (Ffboundp, 1); | |
4194 EXFUN (Ffset, 2); | |
4195 EXFUN (Fintern, 2); | |
4196 EXFUN (Fintern_soft, 2); | |
4197 EXFUN (Fkill_local_variable, 1); | |
4198 EXFUN (Fset, 2); | |
4199 EXFUN (Fset_default, 2); | |
4200 EXFUN (Fsymbol_function, 1); | |
4201 EXFUN (Fsymbol_name, 1); | |
4202 EXFUN (Fsymbol_plist, 1); | |
4203 EXFUN (Fsymbol_value, 1); | |
4204 | |
3913 unsigned int hash_string (const Intbyte *, Bytecount); | 4205 unsigned int hash_string (const Intbyte *, Bytecount); |
3914 Lisp_Object intern_int (const Intbyte *str); | 4206 Lisp_Object intern_int (const Intbyte *str); |
3915 Lisp_Object intern (const CIntbyte *str); | 4207 Lisp_Object intern (const CIntbyte *str); |
3916 Lisp_Object intern_converting_underscores_to_dashes (const CIntbyte *str); | 4208 Lisp_Object intern_converting_underscores_to_dashes (const CIntbyte *str); |
3917 Lisp_Object oblookup (Lisp_Object, const Intbyte *, Bytecount); | 4209 Lisp_Object oblookup (Lisp_Object, const Intbyte *, Bytecount); |
3927 int function_p, | 4219 int function_p, |
3928 Lisp_Object follow_past_lisp_magic); | 4220 Lisp_Object follow_past_lisp_magic); |
3929 | 4221 |
3930 /* Defined in syntax.c */ | 4222 /* Defined in syntax.c */ |
3931 Charbpos scan_words (struct buffer *, Charbpos, int); | 4223 Charbpos scan_words (struct buffer *, Charbpos, int); |
4224 EXFUN (Fchar_syntax, 2); | |
4225 EXFUN (Fforward_word, 2); | |
4226 extern Lisp_Object Vstandard_syntax_table; | |
4227 void signal_syntax_table_extent_changed (EXTENT extent); | |
4228 void signal_syntax_table_extent_adjust (struct buffer *buf); | |
4229 void init_buffer_syntax_cache (struct buffer *buf); | |
4230 void mark_buffer_syntax_cache (struct buffer *buf); | |
4231 void uninit_buffer_syntax_cache (struct buffer *buf); | |
4232 extern Lisp_Object Qsyntax_table; | |
3932 | 4233 |
3933 /* Defined in sysdep.c */ | 4234 /* Defined in sysdep.c */ |
3934 long get_random (void); | 4235 long get_random (void); |
3935 void seed_random (long arg); | 4236 void seed_random (long arg); |
3936 | 4237 |
3952 Emchar *arr); | 4253 Emchar *arr); |
3953 void convert_emchar_string_into_intbyte_dynarr (Emchar *arr, int nels, | 4254 void convert_emchar_string_into_intbyte_dynarr (Emchar *arr, int nels, |
3954 Intbyte_dynarr *dyn); | 4255 Intbyte_dynarr *dyn); |
3955 Intbyte *convert_emchar_string_into_malloced_string (Emchar *arr, int nels, | 4256 Intbyte *convert_emchar_string_into_malloced_string (Emchar *arr, int nels, |
3956 Bytecount *len_out); | 4257 Bytecount *len_out); |
4258 Bytecount copy_text_between_formats (const Intbyte *src, Bytecount srclen, | |
4259 Internal_Format srcfmt, | |
4260 Lisp_Object srcobj, | |
4261 Intbyte *dst, Bytecount dstlen, | |
4262 Internal_Format dstfmt, | |
4263 Lisp_Object dstobj, | |
4264 Bytecount *src_used); | |
4265 Bytecount copy_buffer_text_out (struct buffer *buf, Bytebpos pos, | |
4266 Bytecount len, Intbyte *dst, Bytecount dstlen, | |
4267 Internal_Format dstfmt, Lisp_Object dstobj, | |
4268 Bytecount *src_used); | |
3957 | 4269 |
3958 /* flags for get_buffer_pos_char(), get_buffer_range_char(), etc. */ | 4270 /* flags for get_buffer_pos_char(), get_buffer_range_char(), etc. */ |
3959 /* At most one of GB_COERCE_RANGE and GB_NO_ERROR_IF_BAD should be | 4271 /* At most one of GB_COERCE_RANGE and GB_NO_ERROR_IF_BAD should be |
3960 specified. At most one of GB_NEGATIVE_FROM_END and GB_NO_ERROR_IF_BAD | 4272 specified. At most one of GB_NEGATIVE_FROM_END and GB_NO_ERROR_IF_BAD |
3961 should be specified. */ | 4273 should be specified. */ |
3986 Lisp_Object to, Charcount *from_out, | 4298 Lisp_Object to, Charcount *from_out, |
3987 Charcount *to_out, unsigned int flags); | 4299 Charcount *to_out, unsigned int flags); |
3988 void get_string_range_byte (Lisp_Object string, Lisp_Object from, | 4300 void get_string_range_byte (Lisp_Object string, Lisp_Object from, |
3989 Lisp_Object to, Bytecount *from_out, | 4301 Lisp_Object to, Bytecount *from_out, |
3990 Bytecount *to_out, unsigned int flags); | 4302 Bytecount *to_out, unsigned int flags); |
3991 Charbpos get_buffer_or_string_pos_char (Lisp_Object object, Lisp_Object pos, | 4303 Charxpos get_buffer_or_string_pos_char (Lisp_Object object, Lisp_Object pos, |
3992 unsigned int flags); | 4304 unsigned int flags); |
3993 Bytebpos get_buffer_or_string_pos_byte (Lisp_Object object, Lisp_Object pos, | 4305 Bytexpos get_buffer_or_string_pos_byte (Lisp_Object object, Lisp_Object pos, |
3994 unsigned int flags); | 4306 unsigned int flags); |
3995 void get_buffer_or_string_range_char (Lisp_Object object, Lisp_Object from, | 4307 void get_buffer_or_string_range_char (Lisp_Object object, Lisp_Object from, |
3996 Lisp_Object to, Charbpos *from_out, | 4308 Lisp_Object to, Charxpos *from_out, |
3997 Charbpos *to_out, unsigned int flags); | 4309 Charxpos *to_out, unsigned int flags); |
3998 void get_buffer_or_string_range_byte (Lisp_Object object, Lisp_Object from, | 4310 void get_buffer_or_string_range_byte (Lisp_Object object, Lisp_Object from, |
3999 Lisp_Object to, Bytebpos *from_out, | 4311 Lisp_Object to, Bytexpos *from_out, |
4000 Bytebpos *to_out, unsigned int flags); | 4312 Bytexpos *to_out, unsigned int flags); |
4001 Charbpos buffer_or_string_accessible_begin_char (Lisp_Object object); | 4313 Charxpos buffer_or_string_accessible_begin_char (Lisp_Object object); |
4002 Charbpos buffer_or_string_accessible_end_char (Lisp_Object object); | 4314 Charxpos buffer_or_string_accessible_end_char (Lisp_Object object); |
4003 Bytebpos buffer_or_string_accessible_begin_byte (Lisp_Object object); | 4315 Bytexpos buffer_or_string_accessible_begin_byte (Lisp_Object object); |
4004 Bytebpos buffer_or_string_accessible_end_byte (Lisp_Object object); | 4316 Bytexpos buffer_or_string_accessible_end_byte (Lisp_Object object); |
4005 Charbpos buffer_or_string_absolute_begin_char (Lisp_Object object); | 4317 Charxpos buffer_or_string_absolute_begin_char (Lisp_Object object); |
4006 Charbpos buffer_or_string_absolute_end_char (Lisp_Object object); | 4318 Charxpos buffer_or_string_absolute_end_char (Lisp_Object object); |
4007 Bytebpos buffer_or_string_absolute_begin_byte (Lisp_Object object); | 4319 Bytexpos buffer_or_string_absolute_begin_byte (Lisp_Object object); |
4008 Bytebpos buffer_or_string_absolute_end_byte (Lisp_Object object); | 4320 Bytexpos buffer_or_string_absolute_end_byte (Lisp_Object object); |
4321 Charbpos charbpos_clip_to_bounds (Charbpos lower, Charbpos num, | |
4322 Charbpos upper); | |
4323 Bytebpos bytebpos_clip_to_bounds (Bytebpos lower, Bytebpos num, | |
4324 Bytebpos upper); | |
4325 Charxpos charxpos_clip_to_bounds (Charxpos lower, Charxpos num, | |
4326 Charxpos upper); | |
4327 Bytexpos bytexpos_clip_to_bounds (Bytexpos lower, Bytexpos num, | |
4328 Bytexpos upper); | |
4329 Charxpos buffer_or_string_clip_to_accessible_char (Lisp_Object object, | |
4330 Charxpos pos); | |
4331 Bytexpos buffer_or_string_clip_to_accessible_byte (Lisp_Object object, | |
4332 Bytexpos pos); | |
4333 Charxpos buffer_or_string_clip_to_absolute_char (Lisp_Object object, | |
4334 Charxpos pos); | |
4335 Bytexpos buffer_or_string_clip_to_absolute_byte (Lisp_Object object, | |
4336 Bytexpos pos); | |
4337 | |
4009 | 4338 |
4010 #ifdef ENABLE_COMPOSITE_CHARS | 4339 #ifdef ENABLE_COMPOSITE_CHARS |
4011 | 4340 |
4012 Emchar lookup_composite_char (Intbyte *str, int len); | 4341 Emchar lookup_composite_char (Intbyte *str, int len); |
4013 Lisp_Object composite_char_string (Emchar ch); | 4342 Lisp_Object composite_char_string (Emchar ch); |
4245 | 4574 |
4246 void buffer_mule_signal_inserted_region (struct buffer *buf, Charbpos start, | 4575 void buffer_mule_signal_inserted_region (struct buffer *buf, Charbpos start, |
4247 Bytecount bytelength, | 4576 Bytecount bytelength, |
4248 Charcount charlength); | 4577 Charcount charlength); |
4249 void buffer_mule_signal_deleted_region (struct buffer *buf, Charbpos start, | 4578 void buffer_mule_signal_deleted_region (struct buffer *buf, Charbpos start, |
4250 Charbpos end, Bytebpos bi_start, | 4579 Charbpos end, Bytebpos byte_start, |
4251 Bytebpos bi_end); | 4580 Bytebpos byte_end); |
4252 | 4581 |
4253 /* Defined in unicode.c */ | 4582 /* Defined in unicode.c */ |
4254 extern const struct struct_description to_unicode_description[]; | 4583 extern const struct struct_description to_unicode_description[]; |
4255 extern const struct struct_description from_unicode_description[]; | 4584 extern const struct struct_description from_unicode_description[]; |
4256 void init_charset_unicode_tables (Lisp_Object charset); | 4585 void init_charset_unicode_tables (Lisp_Object charset); |
4264 Bytecount compute_to_unicode_table_size (Lisp_Object charset, | 4593 Bytecount compute_to_unicode_table_size (Lisp_Object charset, |
4265 struct overhead_stats *stats); | 4594 struct overhead_stats *stats); |
4266 #endif /* MEMORY_USAGE_STATS */ | 4595 #endif /* MEMORY_USAGE_STATS */ |
4267 | 4596 |
4268 /* Defined in undo.c */ | 4597 /* Defined in undo.c */ |
4598 EXFUN (Fundo_boundary, 0); | |
4599 | |
4269 Lisp_Object truncate_undo_list (Lisp_Object, int, int); | 4600 Lisp_Object truncate_undo_list (Lisp_Object, int, int); |
4270 void record_extent (Lisp_Object, int); | 4601 void record_extent (Lisp_Object, int); |
4271 void record_insert (struct buffer *, Charbpos, Charcount); | 4602 void record_insert (struct buffer *, Charbpos, Charcount); |
4272 void record_delete (struct buffer *, Charbpos, Charcount); | 4603 void record_delete (struct buffer *, Charbpos, Charcount); |
4273 void record_change (struct buffer *, Charbpos, Charcount); | 4604 void record_change (struct buffer *, Charbpos, Charcount); |
4284 | 4615 |
4285 /* Defined in vm-limit.c */ | 4616 /* Defined in vm-limit.c */ |
4286 void memory_warnings (void *, void (*) (const char *)); | 4617 void memory_warnings (void *, void (*) (const char *)); |
4287 | 4618 |
4288 /* Defined in window.c */ | 4619 /* Defined in window.c */ |
4620 EXFUN (Fcurrent_window_configuration, 1); | |
4621 | |
4289 Lisp_Object save_window_excursion_unwind (Lisp_Object); | 4622 Lisp_Object save_window_excursion_unwind (Lisp_Object); |
4290 Lisp_Object display_buffer (Lisp_Object, Lisp_Object, Lisp_Object); | 4623 Lisp_Object display_buffer (Lisp_Object, Lisp_Object, Lisp_Object); |
4291 | 4624 |
4292 /*--------------- prototypes for Lisp primitives in C ------------*/ | |
4293 | |
4294 /* The following were machine generated 19980312 */ | |
4295 | |
4296 EXFUN (Faccept_process_output, 3); | |
4297 EXFUN (Fadd1, 1); | |
4298 EXFUN (Fadd_spec_to_specifier, 5); | |
4299 EXFUN (Fadd_timeout, 4); | |
4300 EXFUN (Fappend, MANY); | |
4301 EXFUN (Fapply, MANY); | |
4302 EXFUN (Faref, 2); | |
4303 EXFUN (Faset, 3); | |
4304 EXFUN (Fassoc, 2); | |
4305 EXFUN (Fassq, 2); | |
4306 EXFUN (Fbacktrace, 2); | |
4307 EXFUN (Fbeginning_of_line, 2); | |
4308 EXFUN (Fbobp, 1); | |
4309 EXFUN (Fbolp, 1); | |
4310 EXFUN (Fboundp, 1); | |
4311 EXFUN (Fbuffer_substring, 3); | |
4312 EXFUN (Fbuilt_in_variable_type, 1); | |
4313 EXFUN (Fbyte_code, 3); | |
4314 EXFUN (Fcall_interactively, 3); | |
4315 EXFUN (Fcanonicalize_lax_plist, 2); | |
4316 EXFUN (Fcanonicalize_plist, 2); | |
4317 EXFUN (Fcar, 1); | |
4318 EXFUN (Fcar_safe, 1); | |
4319 EXFUN (Fcdr, 1); | |
4320 EXFUN (Fchar_after, 2); | |
4321 EXFUN (Fchar_to_string, 1); | |
4322 EXFUN (Fcheck_valid_plist, 1); | |
4323 EXFUN (Fvalid_plist_p, 1); | |
4324 EXFUN (Fclear_range_table, 1); | |
4325 EXFUN (Fcommand_execute, 3); | |
4326 EXFUN (Fcommandp, 1); | |
4327 EXFUN (Fconcat, MANY); | |
4328 EXFUN (Fcons, 2); | |
4329 EXFUN (Fcopy_alist, 1); | |
4330 EXFUN (Fcopy_event, 2); | |
4331 EXFUN (Fcopy_list, 1); | |
4332 EXFUN (Fcopy_marker, 2); | |
4333 EXFUN (Fcopy_sequence, 1); | |
4334 EXFUN (Fcopy_tree, 2); | |
4335 EXFUN (Fcurrent_window_configuration, 1); | |
4336 EXFUN (Fdefault_boundp, 1); | |
4337 EXFUN (Fdefault_value, 1); | |
4338 EXFUN (Fdefine_key, 3); | |
4339 EXFUN (Fdelete, 2); | |
4340 EXFUN (Fdelete_region, 3); | |
4341 EXFUN (Fdelete_process, 1); | |
4342 EXFUN (Fdelq, 2); | |
4343 EXFUN (Fdestructive_alist_to_plist, 1); | |
4344 EXFUN (Fdgettext, 2); | |
4345 EXFUN (Fding, 3); | |
4346 EXFUN (Fdirectory_file_name, 1); | |
4347 EXFUN (Fdisable_timeout, 1); | |
4348 EXFUN (Fdiscard_input, 0); | |
4349 EXFUN (Fdispatch_event, 1); | |
4350 EXFUN (Fdisplay_error, 2); | |
4351 EXFUN (Fdo_auto_save, 2); | |
4352 EXFUN (Fdowncase, 2); | |
4353 EXFUN (Felt, 2); | |
4354 EXFUN (Fend_of_line, 2); | |
4355 EXFUN (Fenqueue_eval_event, 2); | |
4356 EXFUN (Feobp, 1); | |
4357 EXFUN (Feolp, 1); | |
4358 EXFUN (Fequal, 2); | |
4359 EXFUN (Ferror_message_string, 1); | |
4360 EXFUN (Feval, 1); | |
4361 EXFUN (Fevent_to_character, 4); | |
4362 EXFUN (Fexecute_kbd_macro, 2); | |
4363 EXFUN (Fexpand_abbrev, 0); | |
4364 EXFUN (Fexpand_file_name, 2); | |
4365 EXFUN (Fextent_at, 5); | |
4366 EXFUN (Fextent_property, 3); | |
4367 EXFUN (Ffboundp, 1); | |
4368 EXFUN (Ffile_accessible_directory_p, 1); | |
4369 EXFUN (Ffile_directory_p, 1); | |
4370 EXFUN (Ffile_executable_p, 1); | |
4371 EXFUN (Ffile_exists_p, 1); | |
4372 EXFUN (Ffile_name_absolute_p, 1); | |
4373 EXFUN (Ffile_name_as_directory, 1); | |
4374 EXFUN (Ffile_name_directory, 1); | |
4375 EXFUN (Ffile_name_nondirectory, 1); | |
4376 EXFUN (Ffile_readable_p, 1); | |
4377 EXFUN (Ffile_symlink_p, 1); | |
4378 EXFUN (Ffile_truename, 2); | |
4379 EXFUN (Ffind_file_name_handler, 2); | |
4380 EXFUN (Ffollowing_char, 1); | |
4381 EXFUN (Fformat, MANY); | |
4382 EXFUN (Fforward_char, 2); | |
4383 EXFUN (Fforward_line, 2); | |
4384 EXFUN (Ffset, 2); | |
4385 EXFUN (Ffuncall, MANY); | |
4386 EXFUN (Ffunctionp, 1); | |
4387 EXFUN (Fgeq, MANY); | |
4388 EXFUN (Fget, 3); | |
4389 EXFUN (Fget_buffer_process, 1); | |
4390 EXFUN (Fget_process, 1); | |
4391 EXFUN (Fget_range_table, 3); | |
4392 EXFUN (Fgettext, 1); | |
4393 EXFUN (Fgoto_char, 2); | |
4394 EXFUN (Fgtr, MANY); | |
4395 EXFUN (Findent_to, 3); | |
4396 EXFUN (Findirect_function, 1); | |
4397 EXFUN (Finsert, MANY); | |
4398 EXFUN (Finsert_buffer_substring, 3); | |
4399 EXFUN (Finsert_char, 4); | |
4400 EXFUN (Finsert_file_contents_internal, 7); | |
4401 EXFUN (Finteractive_p, 0); | |
4402 EXFUN (Fintern, 2); | |
4403 EXFUN (Fintern_soft, 2); | |
4404 EXFUN (Fkey_description, 1); | |
4405 EXFUN (Fkill_emacs, 1); | |
4406 EXFUN (Fkill_local_variable, 1); | |
4407 EXFUN (Flast, 2); | |
4408 EXFUN (Flax_plist_get, 3); | |
4409 EXFUN (Flax_plist_remprop, 2); | |
4410 EXFUN (Flength, 1); | |
4411 EXFUN (Fleq, MANY); | |
4412 EXFUN (Flist, MANY); | |
4413 EXFUN (Flistp, 1); | |
4414 EXFUN (Flist_modules, 0); | |
4415 EXFUN (Fload_module, 3); | |
4416 EXFUN (Flookup_key, 3); | |
4417 EXFUN (Flss, MANY); | |
4418 EXFUN (Fmake_byte_code, MANY); | |
4419 EXFUN (Fmake_charset, 3); | |
4420 EXFUN (Fmake_glyph_internal, 1); | |
4421 EXFUN (Fmake_list, 2); | |
4422 EXFUN (Fmake_marker, 0); | |
4423 EXFUN (Fmake_range_table, 0); | |
4424 EXFUN (Fmake_temp_name, 1); | |
4425 EXFUN (Fmake_sparse_keymap, 1); | |
4426 EXFUN (Fmake_string, 2); | |
4427 EXFUN (Fmake_symbol, 1); | |
4428 EXFUN (Fmake_vector, 2); | |
4429 EXFUN (Fmapcar, 2); | |
4430 EXFUN (Fmarker_buffer, 1); | |
4431 EXFUN (Fmarker_position, 1); | |
4432 EXFUN (Fmatch_beginning, 1); | |
4433 EXFUN (Fmatch_end, 1); | |
4434 EXFUN (Fmax, MANY); | |
4435 EXFUN (Fmember, 2); | |
4436 EXFUN (Fmemq, 2); | |
4437 EXFUN (Fmin, MANY); | |
4438 EXFUN (Fminus, MANY); | |
4439 EXFUN (Fnarrow_to_region, 3); | |
4440 EXFUN (Fnconc, MANY); | |
4441 EXFUN (Fnext_event, 2); | |
4442 EXFUN (Fnreverse, 1); | |
4443 EXFUN (Fnthcdr, 2); | |
4444 EXFUN (Fnumber_to_string, 1); | |
4445 EXFUN (Fold_assq, 2); | |
4446 EXFUN (Fold_equal, 2); | |
4447 EXFUN (Fold_member, 2); | |
4448 EXFUN (Fold_memq, 2); | |
4449 EXFUN (Fplist_get, 3); | |
4450 EXFUN (Fplist_member, 2); | |
4451 EXFUN (Fplist_put, 3); | |
4452 EXFUN (Fplus, MANY); | |
4453 EXFUN (Fpoint, 1); | |
4454 EXFUN (Fpoint_marker, 2); | |
4455 EXFUN (Fpoint_max, 1); | |
4456 EXFUN (Fpoint_min, 1); | |
4457 EXFUN (Fpreceding_char, 1); | |
4458 EXFUN (Fprefix_numeric_value, 1); | |
4459 EXFUN (Fprin1, 2); | |
4460 EXFUN (Fprin1_to_string, 2); | |
4461 EXFUN (Fprinc, 2); | |
4462 EXFUN (Fprint, 2); | |
4463 EXFUN (Fprocess_status, 1); | |
4464 EXFUN (Fprogn, UNEVALLED); | |
4465 EXFUN (Fprovide, 1); | |
4466 EXFUN (Fput, 3); | |
4467 EXFUN (Fput_range_table, 4); | |
4468 EXFUN (Fput_text_property, 5); | |
4469 EXFUN (Fquo, MANY); | |
4470 EXFUN (Frassq, 2); | |
4471 EXFUN (Fread, 1); | |
4472 EXFUN (Fread_key_sequence, 3); | |
4473 EXFUN (Freally_free, 1); | |
4474 EXFUN (Frem, 2); | |
4475 EXFUN (Fremassq, 2); | |
4476 EXFUN (Freplace_list, 2); | |
4477 EXFUN (Frunning_temacs_p, 0); | |
4478 EXFUN (Fselected_frame, 1); | |
4479 EXFUN (Fset, 2); | |
4480 EXFUN (Fset_default, 2); | |
4481 EXFUN (Fset_marker, 3); | |
4482 EXFUN (Fset_standard_case_table, 1); | |
4483 EXFUN (Fsetcar, 2); | |
4484 EXFUN (Fsetcdr, 2); | |
4485 EXFUN (Fsignal, 2); | |
4486 EXFUN (Fsit_for, 2); | |
4487 EXFUN (Fskip_chars_backward, 3); | |
4488 EXFUN (Fskip_chars_forward, 3); | |
4489 EXFUN (Fsleep_for, 1); | |
4490 EXFUN (Fsort, 2); | |
4491 EXFUN (Fspecifier_spec_list, 4); | |
4492 EXFUN (Fstring_equal, 2); | |
4493 EXFUN (Fstring_lessp, 2); | |
4494 EXFUN (Fstring_match, 4); | |
4495 EXFUN (Fsub1, 1); | |
4496 EXFUN (Fsubr_max_args, 1); | |
4497 EXFUN (Fsubr_min_args, 1); | |
4498 EXFUN (Fsubstitute_command_keys, 1); | |
4499 EXFUN (Fsubstitute_in_file_name, 1); | |
4500 EXFUN (Fsubstring, 3); | |
4501 EXFUN (Fsymbol_function, 1); | |
4502 EXFUN (Fsymbol_name, 1); | |
4503 EXFUN (Fsymbol_plist, 1); | |
4504 EXFUN (Fsymbol_value, 1); | |
4505 EXFUN (Fsystem_name, 0); | |
4506 EXFUN (Fthrow, 2); | |
4507 EXFUN (Ftimes, MANY); | |
4508 EXFUN (Ftruncate, 1); | |
4509 EXFUN (Fundo_boundary, 0); | |
4510 EXFUN (Funhandled_file_name_directory, 1); | |
4511 EXFUN (Funlock_buffer, 0); | |
4512 EXFUN (Fupcase, 2); | |
4513 EXFUN (Fupcase_initials, 2); | |
4514 EXFUN (Fupcase_initials_region, 3); | |
4515 EXFUN (Fupcase_region, 3); | |
4516 EXFUN (Fuser_home_directory, 0); | |
4517 EXFUN (Fuser_login_name, 1); | |
4518 EXFUN (Fvector, MANY); | |
4519 EXFUN (Fverify_visited_file_modtime, 1); | |
4520 EXFUN (Fvertical_motion, 3); | |
4521 EXFUN (Fwiden, 1); | |
4522 | |
4523 /*--------------- prototypes for constant symbols ------------*/ | 4625 /*--------------- prototypes for constant symbols ------------*/ |
4626 | |
4627 /* #### We should get rid of this and put the prototypes back up there in | |
4628 #### the per-file stuff, where they belong. */ | |
4524 | 4629 |
4525 /* Use the following when you have to add a bunch of symbols. */ | 4630 /* Use the following when you have to add a bunch of symbols. */ |
4526 | 4631 |
4527 /* | 4632 /* |
4528 | 4633 |
4640 #undef SYMBOL_KEYWORD | 4745 #undef SYMBOL_KEYWORD |
4641 #undef SYMBOL_GENERAL | 4746 #undef SYMBOL_GENERAL |
4642 | 4747 |
4643 /*--------------- prototypes for variables of type Lisp_Object ------------*/ | 4748 /*--------------- prototypes for variables of type Lisp_Object ------------*/ |
4644 | 4749 |
4750 /* #### We should get rid of this and put the prototypes back up there in | |
4751 #### the per-file stuff, where they belong. */ | |
4752 | |
4645 extern Lisp_Object Vactivate_menubar_hook; | 4753 extern Lisp_Object Vactivate_menubar_hook; |
4646 extern Lisp_Object Vautoload_queue, Vblank_menubar; | 4754 extern Lisp_Object Vautoload_queue, Vblank_menubar; |
4647 extern Lisp_Object Vcommand_history; | 4755 extern Lisp_Object Vcommand_history; |
4648 extern Lisp_Object Vcommand_line_args, Vconfigure_info_directory; | 4756 extern Lisp_Object Vcommand_line_args, Vconfigure_info_directory; |
4649 extern Lisp_Object Vconfigure_site_directory, Vconfigure_site_module_directory; | 4757 extern Lisp_Object Vconfigure_site_directory, Vconfigure_site_module_directory; |