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;