comparison src/lisp.h @ 665:fdefd0186b75

[xemacs-hg @ 2001-09-20 06:28:42 by ben] The great integral types renaming. The purpose of this is to rationalize the names used for various integral types, so that they match their intended uses and follow consist conventions, and eliminate types that were not semantically different from each other. The conventions are: -- All integral types that measure quantities of anything are signed. Some people disagree vociferously with this, but their arguments are mostly theoretical, and are vastly outweighed by the practical headaches of mixing signed and unsigned values, and more importantly by the far increased likelihood of inadvertent bugs: Because of the broken "viral" nature of unsigned quantities in C (operations involving mixed signed/unsigned are done unsigned, when exactly the opposite is nearly always wanted), even a single error in declaring a quantity unsigned that should be signed, or even the even more subtle error of comparing signed and unsigned values and forgetting the necessary cast, can be catastrophic, as comparisons will yield wrong results. -Wsign-compare is turned on specifically to catch this, but this tends to result in a great number of warnings when mixing signed and unsigned, and the casts are annoying. More has been written on this elsewhere. -- All such quantity types just mentioned boil down to EMACS_INT, which is 32 bits on 32-bit machines and 64 bits on 64-bit machines. This is guaranteed to be the same size as Lisp objects of type `int', and (as far as I can tell) of size_t (unsigned!) and ssize_t. The only type below that is not an EMACS_INT is Hashcode, which is an unsigned value of the same size as EMACS_INT. -- Type names should be relatively short (no more than 10 characters or so), with the first letter capitalized and no underscores if they can at all be avoided. -- "count" == a zero-based measurement of some quantity. Includes sizes, offsets, and indexes. -- "bpos" == a one-based measurement of a position in a buffer. "Charbpos" and "Bytebpos" count text in the buffer, rather than bytes in memory; thus Bytebpos does not directly correspond to the memory representation. Use "Membpos" for this. -- "Char" refers to internal-format characters, not to the C type "char", which is really a byte. -- For the actual name changes, see the script below. I ran the following script to do the conversion. (NOTE: This script is idempotent. You can safely run it multiple times and it will not screw up previous results -- in fact, it will do nothing if nothing has changed. Thus, it can be run repeatedly as necessary to handle patches coming in from old workspaces, or old branches.) There are two tags, just before and just after the change: `pre-integral-type-rename' and `post-integral-type-rename'. When merging code from the main trunk into a branch, the best thing to do is first merge up to `pre-integral-type-rename', then apply the script and associated changes, then merge from `post-integral-type-change' to the present. (Alternatively, just do the merging in one operation; but you may then have a lot of conflicts needing to be resolved by hand.) Script `fixtypes.sh' follows: ----------------------------------- cut ------------------------------------ files="*.[ch] s/*.h m/*.h config.h.in ../configure.in Makefile.in.in ../lib-src/*.[ch] ../lwlib/*.[ch]" gr Memory_Count Bytecount $files gr Lstream_Data_Count Bytecount $files gr Element_Count Elemcount $files gr Hash_Code Hashcode $files gr extcount bytecount $files gr bufpos charbpos $files gr bytind bytebpos $files gr memind membpos $files gr bufbyte intbyte $files gr Extcount Bytecount $files gr Bufpos Charbpos $files gr Bytind Bytebpos $files gr Memind Membpos $files gr Bufbyte Intbyte $files gr EXTCOUNT BYTECOUNT $files gr BUFPOS CHARBPOS $files gr BYTIND BYTEBPOS $files gr MEMIND MEMBPOS $files gr BUFBYTE INTBYTE $files gr MEMORY_COUNT BYTECOUNT $files gr LSTREAM_DATA_COUNT BYTECOUNT $files gr ELEMENT_COUNT ELEMCOUNT $files gr HASH_CODE HASHCODE $files ----------------------------------- cut ------------------------------------ `fixtypes.sh' is a Bourne-shell script; it uses 'gr': ----------------------------------- cut ------------------------------------ #!/bin/sh # Usage is like this: # gr FROM TO FILES ... # globally replace FROM with TO in FILES. FROM and TO are regular expressions. # backup files are stored in the `backup' directory. from="$1" to="$2" shift 2 echo ${1+"$@"} | xargs global-replace "s/$from/$to/g" ----------------------------------- cut ------------------------------------ `gr' in turn uses a Perl script to do its real work, `global-replace', which follows: ----------------------------------- cut ------------------------------------ : #-*- Perl -*- ### global-modify --- modify the contents of a file by a Perl expression ## Copyright (C) 1999 Martin Buchholz. ## Copyright (C) 2001 Ben Wing. ## Authors: Martin Buchholz <martin@xemacs.org>, Ben Wing <ben@xemacs.org> ## Maintainer: Ben Wing <ben@xemacs.org> ## Current Version: 1.0, May 5, 2001 # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with XEmacs; see the file COPYING. If not, write to the Free # Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. eval 'exec perl -w -S $0 ${1+"$@"}' if 0; use strict; use FileHandle; use Carp; use Getopt::Long; use File::Basename; (my $myName = $0) =~ s@.*/@@; my $usage=" Usage: $myName [--help] [--backup-dir=DIR] [--line-mode] [--hunk-mode] PERLEXPR FILE ... Globally modify a file, either line by line or in one big hunk. Typical usage is like this: [with GNU print, GNU xargs: guaranteed to handle spaces, quotes, etc. in file names] find . -name '*.[ch]' -print0 | xargs -0 $0 's/\bCONST\b/const/g'\n [with non-GNU print, xargs] find . -name '*.[ch]' -print | xargs $0 's/\bCONST\b/const/g'\n The file is read in, either line by line (with --line-mode specified) or in one big hunk (with --hunk-mode specified; it's the default), and the Perl expression is then evalled with \$_ set to the line or hunk of text, including the terminating newline if there is one. It should destructively modify the value there, storing the changed result in \$_. Files in which any modifications are made are backed up to the directory specified using --backup-dir, or to `backup' by default. To disable this, use --backup-dir= with no argument. Hunk mode is the default because it is MUCH MUCH faster than line-by-line. Use line-by-line only when it matters, e.g. you want to do a replacement only once per line (the default without the `g' argument). Conversely, when using hunk mode, *ALWAYS* use `g'; otherwise, you will only make one replacement in the entire file! "; my %options = (); $Getopt::Long::ignorecase = 0; &GetOptions ( \%options, 'help', 'backup-dir=s', 'line-mode', 'hunk-mode', ); die $usage if $options{"help"} or @ARGV <= 1; my $code = shift; die $usage if grep (-d || ! -w, @ARGV); sub SafeOpen { open ((my $fh = new FileHandle), $_[0]); confess "Can't open $_[0]: $!" if ! defined $fh; return $fh; } sub SafeClose { close $_[0] or confess "Can't close $_[0]: $!"; } sub FileContents { my $fh = SafeOpen ("< $_[0]"); my $olddollarslash = $/; local $/ = undef; my $contents = <$fh>; $/ = $olddollarslash; return $contents; } sub WriteStringToFile { my $fh = SafeOpen ("> $_[0]"); binmode $fh; print $fh $_[1] or confess "$_[0]: $!\n"; SafeClose $fh; } foreach my $file (@ARGV) { my $changed_p = 0; my $new_contents = ""; if ($options{"line-mode"}) { my $fh = SafeOpen $file; while (<$fh>) { my $save_line = $_; eval $code; $changed_p = 1 if $save_line ne $_; $new_contents .= $_; } } else { my $orig_contents = $_ = FileContents $file; eval $code; if ($_ ne $orig_contents) { $changed_p = 1; $new_contents = $_; } } if ($changed_p) { my $backdir = $options{"backup-dir"}; $backdir = "backup" if !defined ($backdir); if ($backdir) { my ($name, $path, $suffix) = fileparse ($file, ""); my $backfulldir = $path . $backdir; my $backfile = "$backfulldir/$name"; mkdir $backfulldir, 0755 unless -d $backfulldir; print "modifying $file (original saved in $backfile)\n"; rename $file, $backfile; } WriteStringToFile ($file, $new_contents); } } ----------------------------------- cut ------------------------------------ In addition to those programs, I needed to fix up a few other things, particularly relating to the duplicate definitions of types, now that some types merged with others. Specifically: 1. in lisp.h, removed duplicate declarations of Bytecount. The changed code should now look like this: (In each code snippet below, the first and last lines are the same as the original, as are all lines outside of those lines. That allows you to locate the section to be replaced, and replace the stuff in that section, verifying that there isn't anything new added that would need to be kept.) --------------------------------- snip ------------------------------------- /* Counts of bytes or chars */ typedef EMACS_INT Bytecount; typedef EMACS_INT Charcount; /* Counts of elements */ typedef EMACS_INT Elemcount; /* Hash codes */ typedef unsigned long Hashcode; /* ------------------------ dynamic arrays ------------------- */ --------------------------------- snip ------------------------------------- 2. in lstream.h, removed duplicate declaration of Bytecount. Rewrote the comment about this type. The changed code should now look like this: --------------------------------- snip ------------------------------------- #endif /* The have been some arguments over the what the type should be that specifies a count of bytes in a data block to be written out or read in, using Lstream_read(), Lstream_write(), and related functions. Originally it was long, which worked fine; Martin "corrected" these to size_t and ssize_t on the grounds that this is theoretically cleaner and is in keeping with the C standards. Unfortunately, this practice is horribly error-prone due to design flaws in the way that mixed signed/unsigned arithmetic happens. In fact, by doing this change, Martin introduced a subtle but fatal error that caused the operation of sending large mail messages to the SMTP server under Windows to fail. By putting all values back to be signed, avoiding any signed/unsigned mixing, the bug immediately went away. The type then in use was Lstream_Data_Count, so that it be reverted cleanly if a vote came to that. Now it is Bytecount. Some earlier comments about why the type must be signed: This MUST BE SIGNED, since it also is used in functions that return the number of bytes actually read to or written from in an operation, and these functions can return -1 to signal error. Note that the standard Unix read() and write() functions define the count going in as a size_t, which is UNSIGNED, and the count going out as an ssize_t, which is SIGNED. This is a horrible design flaw. Not only is it highly likely to lead to logic errors when a -1 gets interpreted as a large positive number, but operations are bound to fail in all sorts of horrible ways when a number in the upper-half of the size_t range is passed in -- this number is unrepresentable as an ssize_t, so code that checks to see how many bytes are actually written (which is mandatory if you are dealing with certain types of devices) will get completely screwed up. --ben */ typedef enum lstream_buffering --------------------------------- snip ------------------------------------- 3. in dumper.c, there are four places, all inside of switch() statements, where XD_BYTECOUNT appears twice as a case tag. In each case, the two case blocks contain identical code, and you should *REMOVE THE SECOND* and leave the first.
author ben
date Thu, 20 Sep 2001 06:31:11 +0000
parents b39c14581166
children a307f9a2021d
comparison
equal deleted inserted replaced
664:6e99cc8c6ca5 665:fdefd0186b75
94 the C code's perspective, they are exactly equivalent to `char *', 94 the C code's perspective, they are exactly equivalent to `char *',
95 `unsigned char *', etc., so you can freely use them with library 95 `unsigned char *', etc., so you can freely use them with library
96 functions declared as such. */ 96 functions declared as such. */
97 97
98 /* The data representing the text in a buffer is logically a set 98 /* The data representing the text in a buffer is logically a set
99 of Bufbytes, declared as follows. */ 99 of Intbytes, declared as follows. */
100 100
101 typedef unsigned char Bufbyte; 101 typedef unsigned char Intbyte;
102 102
103 /* The following should be used when you are working with internal data 103 /* The following should be used when you are working with internal data
104 but for whatever reason need to have it declared a "char *". Examples 104 but for whatever reason need to have it declared a "char *". Examples
105 are function arguments whose values are most commonly literal strings, 105 are function arguments whose values are most commonly literal strings,
106 or where you have to apply a stdlib string function to internal data. 106 or where you have to apply a stdlib string function to internal data.
107 107
108 In general, you should avoid this where possible and use Bufbyte instead, 108 In general, you should avoid this where possible and use Intbyte instead,
109 for consistency. For example, the new Mule workspace contains 109 for consistency. For example, the new Mule workspace contains
110 Bufbyte versions of the stdlib string functions. */ 110 Intbyte versions of the stdlib string functions. */
111 111
112 typedef char CBufbyte; 112 typedef char CIntbyte;
113 113
114 /* The data representing a string in "external" format (binary or any 114 /* The data representing a string in "external" format (binary or any
115 external encoding) is logically a set of Extbytes, declared as 115 external encoding) is logically a set of Extbytes, declared as
116 follows. Extbyte is guaranteed to be just a char, so for example 116 follows. Extbyte is guaranteed to be just a char, so for example
117 strlen (Extbyte *) is OK. Extbyte is only a documentation device 117 strlen (Extbyte *) is OK. Extbyte is only a documentation device
130 typedef char Char_ASCII; 130 typedef char Char_ASCII;
131 typedef unsigned char UChar_ASCII; 131 typedef unsigned char UChar_ASCII;
132 132
133 133
134 /* To the user, a buffer is made up of characters, declared as follows. 134 /* To the user, a buffer is made up of characters, declared as follows.
135 In the non-Mule world, characters and Bufbytes are equivalent. 135 In the non-Mule world, characters and Intbytes are equivalent.
136 In the Mule world, a character requires (typically) 1 to 4 136 In the Mule world, a character requires (typically) 1 to 4
137 Bufbytes for its representation in a buffer. */ 137 Intbytes for its representation in a buffer. */
138 138
139 typedef int Emchar; 139 typedef int Emchar;
140 140
141 /* Different ways of referring to a position in a buffer. We use 141 /* Different ways of referring to a position in a buffer. We use
142 the typedefs in preference to 'EMACS_INT' to make it clearer what 142 the typedefs in preference to 'EMACS_INT' to make it clearer what
143 sort of position is being used. See extents.c for a description 143 sort of position is being used. See extents.c for a description
144 of the different positions. We put them here instead of in 144 of the different positions. We put them here instead of in
145 buffer.h (where they rightfully belong) to avoid syntax errors 145 buffer.h (where they rightfully belong) to avoid syntax errors
146 in function prototypes. */ 146 in function prototypes. */
147 147
148 typedef EMACS_INT Bufpos; 148 typedef EMACS_INT Charbpos;
149 typedef EMACS_INT Bytind; 149 typedef EMACS_INT Bytebpos;
150 typedef EMACS_INT Memind; 150 typedef EMACS_INT Membpos;
151 151
152 /* Counts of bytes or chars */ 152 /* Counts of bytes or chars */
153
154 typedef EMACS_INT Bytecount; 153 typedef EMACS_INT Bytecount;
155 typedef EMACS_INT Charcount; 154 typedef EMACS_INT Charcount;
156 155
157 /* Length in bytes of a string in external format */ 156 /* Counts of elements */
158 typedef EMACS_INT Extcount; 157 typedef EMACS_INT Elemcount;
159 158
160 /* General counts of bytes or elements */ 159 /* Hash codes */
161 typedef EMACS_INT Memory_Count; 160 typedef unsigned long Hashcode;
162 typedef EMACS_INT Element_Count;
163
164 typedef unsigned long Hash_Code;
165 161
166 /* ------------------------ dynamic arrays ------------------- */ 162 /* ------------------------ dynamic arrays ------------------- */
167 163
168 #define Dynarr_declare(type) \ 164 #define Dynarr_declare(type) \
169 type *base; \ 165 type *base; \
214 #define Dynarr_increment(d) ((d)->cur++) 210 #define Dynarr_increment(d) ((d)->cur++)
215 #define Dynarr_set_size(d, n) ((d)->cur = n) 211 #define Dynarr_set_size(d, n) ((d)->cur = n)
216 212
217 #ifdef MEMORY_USAGE_STATS 213 #ifdef MEMORY_USAGE_STATS
218 struct overhead_stats; 214 struct overhead_stats;
219 Memory_Count Dynarr_memory_usage (void *d, struct overhead_stats *stats); 215 Bytecount Dynarr_memory_usage (void *d, struct overhead_stats *stats);
220 #endif 216 #endif
221 217
222 /* Also define min() and max(). (Some compilers put them in strange 218 /* Also define min() and max(). (Some compilers put them in strange
223 places that won't be referenced by the above include files, such 219 places that won't be referenced by the above include files, such
224 as 'macros.h' under Solaris.) */ 220 as 'macros.h' under Solaris.) */
230 #define max(a,b) (((a) > (b)) ? (a) : (b)) 226 #define max(a,b) (((a) > (b)) ? (a) : (b))
231 #endif 227 #endif
232 228
233 /* Memory allocation */ 229 /* Memory allocation */
234 void malloc_warning (const char *); 230 void malloc_warning (const char *);
235 void *xmalloc (Memory_Count size); 231 void *xmalloc (Bytecount size);
236 void *xmalloc_and_zero (Memory_Count size); 232 void *xmalloc_and_zero (Bytecount size);
237 void *xrealloc (void *, Memory_Count size); 233 void *xrealloc (void *, Bytecount size);
238 char *xstrdup (const char *); 234 char *xstrdup (const char *);
239 /* generally useful */ 235 /* generally useful */
240 #define countof(x) ((int) (sizeof(x)/sizeof((x)[0]))) 236 #define countof(x) ((int) (sizeof(x)/sizeof((x)[0])))
241 #define xnew(type) ((type *) xmalloc (sizeof (type))) 237 #define xnew(type) ((type *) xmalloc (sizeof (type)))
242 #define xnew_array(type, len) ((type *) xmalloc ((len) * sizeof (type))) 238 #define xnew_array(type, len) ((type *) xmalloc ((len) * sizeof (type)))
252 if SIZEVAR is 0), with the total size stored in SIZEVAR. This 248 if SIZEVAR is 0), with the total size stored in SIZEVAR. This
253 macro will realloc BASEVAR as necessary so that it can hold at 249 macro will realloc BASEVAR as necessary so that it can hold at
254 least NEEDED_SIZE objects. The reallocing is done by doubling, 250 least NEEDED_SIZE objects. The reallocing is done by doubling,
255 which ensures constant amortized time per element. */ 251 which ensures constant amortized time per element. */
256 #define DO_REALLOC(basevar, sizevar, needed_size, type) do { \ 252 #define DO_REALLOC(basevar, sizevar, needed_size, type) do { \
257 Memory_Count do_realloc_needed_size = (needed_size); \ 253 Bytecount do_realloc_needed_size = (needed_size); \
258 if ((sizevar) < do_realloc_needed_size) \ 254 if ((sizevar) < do_realloc_needed_size) \
259 { \ 255 { \
260 if ((sizevar) < 32) \ 256 if ((sizevar) < 32) \
261 (sizevar) = 32; \ 257 (sizevar) = 32; \
262 while ((sizevar) < do_realloc_needed_size) \ 258 while ((sizevar) < do_realloc_needed_size) \
441 struct face_cachel; 437 struct face_cachel;
442 struct console_type_entry; 438 struct console_type_entry;
443 439
444 typedef struct 440 typedef struct
445 { 441 {
446 Dynarr_declare (Bufbyte); 442 Dynarr_declare (Intbyte);
447 } Bufbyte_dynarr; 443 } Intbyte_dynarr;
448 444
449 typedef struct 445 typedef struct
450 { 446 {
451 Dynarr_declare (Extbyte); 447 Dynarr_declare (Extbyte);
452 } Extbyte_dynarr; 448 } Extbyte_dynarr;
478 Dynarr_declare (int); 474 Dynarr_declare (int);
479 } int_dynarr; 475 } int_dynarr;
480 476
481 typedef struct 477 typedef struct
482 { 478 {
483 Dynarr_declare (Bufpos); 479 Dynarr_declare (Charbpos);
484 } Bufpos_dynarr; 480 } Charbpos_dynarr;
485 481
486 typedef struct 482 typedef struct
487 { 483 {
488 Dynarr_declare (Bytind); 484 Dynarr_declare (Bytebpos);
489 } Bytind_dynarr; 485 } Bytebpos_dynarr;
490 486
491 typedef struct 487 typedef struct
492 { 488 {
493 Dynarr_declare (Charcount); 489 Dynarr_declare (Charcount);
494 } Charcount_dynarr; 490 } Charcount_dynarr;
671 667
672 struct Lisp_Buffer_Cons 668 struct Lisp_Buffer_Cons
673 { 669 {
674 Lisp_Object car, cdr; 670 Lisp_Object car, cdr;
675 struct buffer *buffer; 671 struct buffer *buffer;
676 int bufpos; 672 int charbpos;
677 }; 673 };
678 #endif 674 #endif
679 675
680 DECLARE_LRECORD (cons, Lisp_Cons); 676 DECLARE_LRECORD (cons, Lisp_Cons);
681 #define XCONS(x) XRECORD (x, cons, Lisp_Cons) 677 #define XCONS(x) XRECORD (x, cons, Lisp_Cons)
1158 1154
1159 struct Lisp_String 1155 struct Lisp_String
1160 { 1156 {
1161 struct lrecord_header lheader; 1157 struct lrecord_header lheader;
1162 Bytecount size; 1158 Bytecount size;
1163 Bufbyte *data; 1159 Intbyte *data;
1164 Lisp_Object plist; 1160 Lisp_Object plist;
1165 }; 1161 };
1166 typedef struct Lisp_String Lisp_String; 1162 typedef struct Lisp_String Lisp_String;
1167 1163
1168 DECLARE_LRECORD (string, Lisp_String); 1164 DECLARE_LRECORD (string, Lisp_String);
1173 #define CHECK_STRING(x) CHECK_RECORD (x, string) 1169 #define CHECK_STRING(x) CHECK_RECORD (x, string)
1174 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string) 1170 #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string)
1175 1171
1176 #ifdef MULE 1172 #ifdef MULE
1177 1173
1178 Charcount bytecount_to_charcount (const Bufbyte *ptr, Bytecount len); 1174 Charcount bytecount_to_charcount (const Intbyte *ptr, Bytecount len);
1179 Bytecount charcount_to_bytecount (const Bufbyte *ptr, Charcount len); 1175 Bytecount charcount_to_bytecount (const Intbyte *ptr, Charcount len);
1180 1176
1181 #else /* not MULE */ 1177 #else /* not MULE */
1182 1178
1183 # define bytecount_to_charcount(ptr, len) (len) 1179 # define bytecount_to_charcount(ptr, len) (len)
1184 # define charcount_to_bytecount(ptr, len) (len) 1180 # define charcount_to_bytecount(ptr, len) (len)
1215 #else /* not MULE */ 1211 #else /* not MULE */
1216 1212
1217 # define string_char_length(s) string_length (s) 1213 # define string_char_length(s) string_length (s)
1218 # define string_char(s, i) ((Emchar) string_byte (s, i)) 1214 # define string_char(s, i) ((Emchar) string_byte (s, i))
1219 # define string_char_addr(s, i) string_byte_addr (s, i) 1215 # define string_char_addr(s, i) string_byte_addr (s, i)
1220 # define set_string_char(s, i, c) set_string_byte (s, i, (Bufbyte)c) 1216 # define set_string_char(s, i, c) set_string_byte (s, i, (Intbyte)c)
1221 1217
1222 #endif /* not MULE */ 1218 #endif /* not MULE */
1223 1219
1224 /* Return the true aligned size of a struct whose last member is a 1220 /* Return the true aligned size of a struct whose last member is a
1225 variable-length array field. (this is known as the "struct hack") */ 1221 variable-length array field. (this is known as the "struct hack") */
1289 1285
1290 struct Lisp_Bit_Vector 1286 struct Lisp_Bit_Vector
1291 { 1287 {
1292 struct lrecord_header lheader; 1288 struct lrecord_header lheader;
1293 Lisp_Object next; 1289 Lisp_Object next;
1294 Element_Count size; 1290 Elemcount size;
1295 unsigned long bits[1]; 1291 unsigned long bits[1];
1296 }; 1292 };
1297 typedef struct Lisp_Bit_Vector Lisp_Bit_Vector; 1293 typedef struct Lisp_Bit_Vector Lisp_Bit_Vector;
1298 1294
1299 DECLARE_LRECORD (bit_vector, Lisp_Bit_Vector); 1295 DECLARE_LRECORD (bit_vector, Lisp_Bit_Vector);
1317 } while (0) 1313 } while (0)
1318 1314
1319 #define bit_vector_length(v) ((v)->size) 1315 #define bit_vector_length(v) ((v)->size)
1320 #define bit_vector_next(v) ((v)->next) 1316 #define bit_vector_next(v) ((v)->next)
1321 1317
1322 INLINE_HEADER int bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n); 1318 INLINE_HEADER int bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n);
1323 INLINE_HEADER int 1319 INLINE_HEADER int
1324 bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n) 1320 bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n)
1325 { 1321 {
1326 return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1))) 1322 return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1)))
1327 & 1); 1323 & 1);
1328 } 1324 }
1329 1325
1330 INLINE_HEADER void set_bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n, int value); 1326 INLINE_HEADER void set_bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n, int value);
1331 INLINE_HEADER void 1327 INLINE_HEADER void
1332 set_bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n, int value) 1328 set_bit_vector_bit (Lisp_Bit_Vector *v, Elemcount n, int value)
1333 { 1329 {
1334 if (value) 1330 if (value)
1335 v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1))); 1331 v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1)));
1336 else 1332 else
1337 v->bits[n >> LONGBITS_LOG2] &= ~(1UL << (n & (LONGBITS_POWER_OF_2 - 1))); 1333 v->bits[n >> LONGBITS_LOG2] &= ~(1UL << (n & (LONGBITS_POWER_OF_2 - 1)));
1413 { 1409 {
1414 struct lrecord_header lheader; 1410 struct lrecord_header lheader;
1415 Lisp_Marker *next; 1411 Lisp_Marker *next;
1416 Lisp_Marker *prev; 1412 Lisp_Marker *prev;
1417 struct buffer *buffer; 1413 struct buffer *buffer;
1418 Memind memind; 1414 Membpos membpos;
1419 char insertion_type; 1415 char insertion_type;
1420 }; 1416 };
1421 1417
1422 DECLARE_LRECORD (marker, Lisp_Marker); 1418 DECLARE_LRECORD (marker, Lisp_Marker);
1423 #define XMARKER(x) XRECORD (x, marker, Lisp_Marker) 1419 #define XMARKER(x) XRECORD (x, marker, Lisp_Marker)
1693 1689
1694 struct lcrecord_list 1690 struct lcrecord_list
1695 { 1691 {
1696 struct lcrecord_header header; 1692 struct lcrecord_header header;
1697 Lisp_Object free; 1693 Lisp_Object free;
1698 Element_Count size; 1694 Elemcount size;
1699 const struct lrecord_implementation *implementation; 1695 const struct lrecord_implementation *implementation;
1700 }; 1696 };
1701 1697
1702 DECLARE_LRECORD (lcrecord_list, struct lcrecord_list); 1698 DECLARE_LRECORD (lcrecord_list, struct lcrecord_list);
1703 #define XLCRECORD_LIST(x) XRECORD (x, lcrecord_list, struct lcrecord_list) 1699 #define XLCRECORD_LIST(x) XRECORD (x, lcrecord_list, struct lcrecord_list)
1706 #define LCRECORD_LISTP(x) RECORDP (x, lcrecord_list) 1702 #define LCRECORD_LISTP(x) RECORDP (x, lcrecord_list)
1707 /* #define CHECK_LCRECORD_LIST(x) CHECK_RECORD (x, lcrecord_list) 1703 /* #define CHECK_LCRECORD_LIST(x) CHECK_RECORD (x, lcrecord_list)
1708 Lcrecord lists should never escape to the Lisp level, so 1704 Lcrecord lists should never escape to the Lisp level, so
1709 functions should not be doing this. */ 1705 functions should not be doing this. */
1710 1706
1711 Lisp_Object make_lcrecord_list (Element_Count size, 1707 Lisp_Object make_lcrecord_list (Elemcount size,
1712 const struct lrecord_implementation 1708 const struct lrecord_implementation
1713 *implementation); 1709 *implementation);
1714 Lisp_Object allocate_managed_lcrecord (Lisp_Object lcrecord_list); 1710 Lisp_Object allocate_managed_lcrecord (Lisp_Object lcrecord_list);
1715 void free_managed_lcrecord (Lisp_Object lcrecord_list, Lisp_Object lcrecord); 1711 void free_managed_lcrecord (Lisp_Object lcrecord_list, Lisp_Object lcrecord);
1716 1712
1887 #define HASH8(a,b,c,d,e,f,g,h) (GOOD_HASH * HASH7 (a,b,c,d,e,f,g) + (h)) 1883 #define HASH8(a,b,c,d,e,f,g,h) (GOOD_HASH * HASH7 (a,b,c,d,e,f,g) + (h))
1888 #define HASH9(a,b,c,d,e,f,g,h,i) (GOOD_HASH * HASH8 (a,b,c,d,e,f,g,h) + (i)) 1884 #define HASH9(a,b,c,d,e,f,g,h,i) (GOOD_HASH * HASH8 (a,b,c,d,e,f,g,h) + (i))
1889 1885
1890 #define LISP_HASH(obj) ((unsigned long) LISP_TO_VOID (obj)) 1886 #define LISP_HASH(obj) ((unsigned long) LISP_TO_VOID (obj))
1891 unsigned long string_hash (const char *xv); 1887 unsigned long string_hash (const char *xv);
1892 unsigned long memory_hash (const void *xv, Memory_Count size); 1888 unsigned long memory_hash (const void *xv, Bytecount size);
1893 unsigned long internal_hash (Lisp_Object obj, int depth); 1889 unsigned long internal_hash (Lisp_Object obj, int depth);
1894 unsigned long internal_array_hash (Lisp_Object *arr, int size, int depth); 1890 unsigned long internal_array_hash (Lisp_Object *arr, int size, int depth);
1895 1891
1896 1892
1897 /************************************************************************/ 1893 /************************************************************************/
2188 #define dump_add_root_struct_ptr(varaddr,descaddr) DO_NOTHING 2184 #define dump_add_root_struct_ptr(varaddr,descaddr) DO_NOTHING
2189 #endif 2185 #endif
2190 2186
2191 /* dump_add_opaque (&var, size) dumps the opaque static structure `var'. */ 2187 /* dump_add_opaque (&var, size) dumps the opaque static structure `var'. */
2192 #ifdef PDUMP 2188 #ifdef PDUMP
2193 void dump_add_opaque (const void *, Memory_Count); 2189 void dump_add_opaque (const void *, Bytecount);
2194 #else 2190 #else
2195 #define dump_add_opaque(varaddr,size) DO_NOTHING 2191 #define dump_add_opaque(varaddr,size) DO_NOTHING
2196 #endif 2192 #endif
2197 2193
2198 /* Call dump_add_opaque_int (&int_var) to dump `int_var', of type `int'. */ 2194 /* Call dump_add_opaque_int (&int_var) to dump `int_var', of type `int'. */
2256 the fields to 0, and add any existing values to whatever was there 2252 the fields to 0, and add any existing values to whatever was there
2257 before; this way, you can get a cumulative effect. */ 2253 before; this way, you can get a cumulative effect. */
2258 2254
2259 struct overhead_stats 2255 struct overhead_stats
2260 { 2256 {
2261 Memory_Count was_requested; 2257 Bytecount was_requested;
2262 Memory_Count malloc_overhead; 2258 Bytecount malloc_overhead;
2263 Memory_Count dynarr_overhead; 2259 Bytecount dynarr_overhead;
2264 Memory_Count gap_overhead; 2260 Bytecount gap_overhead;
2265 }; 2261 };
2266 2262
2267 #endif /* MEMORY_USAGE_STATS */ 2263 #endif /* MEMORY_USAGE_STATS */
2268 2264
2269 #ifndef DIRECTORY_SEP 2265 #ifndef DIRECTORY_SEP
2321 #include "symsinit.h" 2317 #include "symsinit.h"
2322 2318
2323 /* Defined in alloc.c */ 2319 /* Defined in alloc.c */
2324 void release_breathing_space (void); 2320 void release_breathing_space (void);
2325 Lisp_Object noseeum_cons (Lisp_Object, Lisp_Object); 2321 Lisp_Object noseeum_cons (Lisp_Object, Lisp_Object);
2326 Lisp_Object make_vector (Element_Count, Lisp_Object); 2322 Lisp_Object make_vector (Elemcount, Lisp_Object);
2327 Lisp_Object vector1 (Lisp_Object); 2323 Lisp_Object vector1 (Lisp_Object);
2328 Lisp_Object vector2 (Lisp_Object, Lisp_Object); 2324 Lisp_Object vector2 (Lisp_Object, Lisp_Object);
2329 Lisp_Object vector3 (Lisp_Object, Lisp_Object, Lisp_Object); 2325 Lisp_Object vector3 (Lisp_Object, Lisp_Object, Lisp_Object);
2330 Lisp_Object make_bit_vector (Element_Count, Lisp_Object); 2326 Lisp_Object make_bit_vector (Elemcount, Lisp_Object);
2331 Lisp_Object make_bit_vector_from_byte_vector (unsigned char *, Element_Count); 2327 Lisp_Object make_bit_vector_from_byte_vector (unsigned char *, Elemcount);
2332 Lisp_Object noseeum_make_marker (void); 2328 Lisp_Object noseeum_make_marker (void);
2333 void garbage_collect_1 (void); 2329 void garbage_collect_1 (void);
2334 Lisp_Object acons (Lisp_Object, Lisp_Object, Lisp_Object); 2330 Lisp_Object acons (Lisp_Object, Lisp_Object, Lisp_Object);
2335 Lisp_Object cons3 (Lisp_Object, Lisp_Object, Lisp_Object); 2331 Lisp_Object cons3 (Lisp_Object, Lisp_Object, Lisp_Object);
2336 Lisp_Object list1 (Lisp_Object); 2332 Lisp_Object list1 (Lisp_Object);
2347 extern int gc_currently_forbidden; 2343 extern int gc_currently_forbidden;
2348 Lisp_Object restore_gc_inhibit (Lisp_Object); 2344 Lisp_Object restore_gc_inhibit (Lisp_Object);
2349 extern EMACS_INT gc_generation_number[1]; 2345 extern EMACS_INT gc_generation_number[1];
2350 int c_readonly (Lisp_Object); 2346 int c_readonly (Lisp_Object);
2351 int lisp_readonly (Lisp_Object); 2347 int lisp_readonly (Lisp_Object);
2352 Lisp_Object build_string (const CBufbyte *); 2348 Lisp_Object build_string (const CIntbyte *);
2353 Lisp_Object build_ext_string (const Extbyte *, Lisp_Object); 2349 Lisp_Object build_ext_string (const Extbyte *, Lisp_Object);
2354 Lisp_Object build_translated_string (const CBufbyte *); 2350 Lisp_Object build_translated_string (const CIntbyte *);
2355 Lisp_Object make_string (const Bufbyte *, Bytecount); 2351 Lisp_Object make_string (const Intbyte *, Bytecount);
2356 Lisp_Object make_ext_string (const Extbyte *, EMACS_INT, Lisp_Object); 2352 Lisp_Object make_ext_string (const Extbyte *, EMACS_INT, Lisp_Object);
2357 Lisp_Object make_uninit_string (Bytecount); 2353 Lisp_Object make_uninit_string (Bytecount);
2358 Lisp_Object make_float (double); 2354 Lisp_Object make_float (double);
2359 Lisp_Object make_string_nocopy (const Bufbyte *, Bytecount); 2355 Lisp_Object make_string_nocopy (const Intbyte *, Bytecount);
2360 void free_cons (Lisp_Cons *); 2356 void free_cons (Lisp_Cons *);
2361 void free_list (Lisp_Object); 2357 void free_list (Lisp_Object);
2362 void free_alist (Lisp_Object); 2358 void free_alist (Lisp_Object);
2363 void mark_conses_in_list (Lisp_Object); 2359 void mark_conses_in_list (Lisp_Object);
2364 void free_marker (Lisp_Marker *); 2360 void free_marker (Lisp_Marker *);
2365 int object_dead_p (Lisp_Object); 2361 int object_dead_p (Lisp_Object);
2366 void mark_object (Lisp_Object obj); 2362 void mark_object (Lisp_Object obj);
2367 int marked_p (Lisp_Object obj); 2363 int marked_p (Lisp_Object obj);
2368 2364
2369 #ifdef MEMORY_USAGE_STATS 2365 #ifdef MEMORY_USAGE_STATS
2370 Memory_Count malloced_storage_size (void *, Memory_Count, struct overhead_stats *); 2366 Bytecount malloced_storage_size (void *, Bytecount, struct overhead_stats *);
2371 Memory_Count fixed_type_block_overhead (Memory_Count); 2367 Bytecount fixed_type_block_overhead (Bytecount);
2372 #endif 2368 #endif
2373 #ifdef PDUMP 2369 #ifdef PDUMP
2374 void pdump (void); 2370 void pdump (void);
2375 int pdump_load (const char *); 2371 int pdump_load (const char *);
2376 2372
2387 extern int find_file_compare_truenames; 2383 extern int find_file_compare_truenames;
2388 extern int find_file_use_truenames; 2384 extern int find_file_use_truenames;
2389 2385
2390 /* Defined in bytecode.c */ 2386 /* Defined in bytecode.c */
2391 DECLARE_DOESNT_RETURN (invalid_byte_code 2387 DECLARE_DOESNT_RETURN (invalid_byte_code
2392 (const CBufbyte *reason, Lisp_Object frob)); 2388 (const CIntbyte *reason, Lisp_Object frob));
2393 2389
2394 /* Defined in callproc.c */ 2390 /* Defined in callproc.c */
2395 char *egetenv (const char *); 2391 char *egetenv (const char *);
2396 2392
2397 /* Defined in console.c */ 2393 /* Defined in console.c */
2430 /* Defined in doc.c */ 2426 /* Defined in doc.c */
2431 Lisp_Object unparesseuxify_doc_string (int, EMACS_INT, char *, Lisp_Object); 2427 Lisp_Object unparesseuxify_doc_string (int, EMACS_INT, char *, Lisp_Object);
2432 Lisp_Object read_doc_string (Lisp_Object); 2428 Lisp_Object read_doc_string (Lisp_Object);
2433 2429
2434 /* Defined in doprnt.c */ 2430 /* Defined in doprnt.c */
2435 Bytecount emacs_doprnt_c (Lisp_Object, const Bufbyte *, Lisp_Object, 2431 Bytecount emacs_doprnt_c (Lisp_Object, const Intbyte *, Lisp_Object,
2436 Bytecount, ...); 2432 Bytecount, ...);
2437 Bytecount emacs_doprnt_va (Lisp_Object, const Bufbyte *, Lisp_Object, 2433 Bytecount emacs_doprnt_va (Lisp_Object, const Intbyte *, Lisp_Object,
2438 Bytecount, va_list); 2434 Bytecount, va_list);
2439 Bytecount emacs_doprnt_lisp (Lisp_Object, const Bufbyte *, Lisp_Object, 2435 Bytecount emacs_doprnt_lisp (Lisp_Object, const Intbyte *, Lisp_Object,
2440 Bytecount, int, const Lisp_Object *); 2436 Bytecount, int, const Lisp_Object *);
2441 Bytecount emacs_doprnt_lisp_2 (Lisp_Object, const Bufbyte *, Lisp_Object, 2437 Bytecount emacs_doprnt_lisp_2 (Lisp_Object, const Intbyte *, Lisp_Object,
2442 Bytecount, int, ...); 2438 Bytecount, int, ...);
2443 Lisp_Object emacs_doprnt_string_c (const Bufbyte *, Lisp_Object, 2439 Lisp_Object emacs_doprnt_string_c (const Intbyte *, Lisp_Object,
2444 Bytecount, ...); 2440 Bytecount, ...);
2445 Lisp_Object emacs_doprnt_string_va (const Bufbyte *, Lisp_Object, 2441 Lisp_Object emacs_doprnt_string_va (const Intbyte *, Lisp_Object,
2446 Bytecount, va_list); 2442 Bytecount, va_list);
2447 Lisp_Object emacs_doprnt_string_lisp (const Bufbyte *, Lisp_Object, 2443 Lisp_Object emacs_doprnt_string_lisp (const Intbyte *, Lisp_Object,
2448 Bytecount, int, const Lisp_Object *); 2444 Bytecount, int, const Lisp_Object *);
2449 Lisp_Object emacs_doprnt_string_lisp_2 (const Bufbyte *, Lisp_Object, 2445 Lisp_Object emacs_doprnt_string_lisp_2 (const Intbyte *, Lisp_Object,
2450 Bytecount, int, ...); 2446 Bytecount, int, ...);
2451 2447
2452 /* Defined in editfns.c */ 2448 /* Defined in editfns.c */
2453 void uncache_home_directory (void); 2449 void uncache_home_directory (void);
2454 Extbyte *get_home_directory (void); 2450 Extbyte *get_home_directory (void);
2455 char *user_login_name (uid_t *); 2451 char *user_login_name (uid_t *);
2456 Bufpos bufpos_clip_to_bounds (Bufpos, Bufpos, Bufpos); 2452 Charbpos charbpos_clip_to_bounds (Charbpos, Charbpos, Charbpos);
2457 Bytind bytind_clip_to_bounds (Bytind, Bytind, Bytind); 2453 Bytebpos bytebpos_clip_to_bounds (Bytebpos, Bytebpos, Bytebpos);
2458 void buffer_insert1 (struct buffer *, Lisp_Object); 2454 void buffer_insert1 (struct buffer *, Lisp_Object);
2459 Lisp_Object make_string_from_buffer (struct buffer *, Bufpos, Charcount); 2455 Lisp_Object make_string_from_buffer (struct buffer *, Charbpos, Charcount);
2460 Lisp_Object make_string_from_buffer_no_extents (struct buffer *, Bufpos, Charcount); 2456 Lisp_Object make_string_from_buffer_no_extents (struct buffer *, Charbpos, Charcount);
2461 Lisp_Object save_excursion_save (void); 2457 Lisp_Object save_excursion_save (void);
2462 Lisp_Object save_restriction_save (void); 2458 Lisp_Object save_restriction_save (void);
2463 Lisp_Object save_excursion_restore (Lisp_Object); 2459 Lisp_Object save_excursion_restore (Lisp_Object);
2464 Lisp_Object save_restriction_restore (Lisp_Object); 2460 Lisp_Object save_restriction_restore (Lisp_Object);
2465 2461
2491 Error_Behavior); 2487 Error_Behavior);
2492 Lisp_Object maybe_signal_continuable_error_1 (Lisp_Object, Lisp_Object, 2488 Lisp_Object maybe_signal_continuable_error_1 (Lisp_Object, Lisp_Object,
2493 Lisp_Object, Error_Behavior); 2489 Lisp_Object, Error_Behavior);
2494 DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (signal_ferror 2490 DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (signal_ferror
2495 (Lisp_Object, 2491 (Lisp_Object,
2496 const CBufbyte *, 2492 const CIntbyte *,
2497 ...), 2, 3); 2493 ...), 2, 3);
2498 void maybe_signal_ferror (Lisp_Object, Lisp_Object, Error_Behavior, 2494 void maybe_signal_ferror (Lisp_Object, Lisp_Object, Error_Behavior,
2499 const CBufbyte *, ...) PRINTF_ARGS (4, 5); 2495 const CIntbyte *, ...) PRINTF_ARGS (4, 5);
2500 Lisp_Object signal_continuable_ferror (Lisp_Object, const CBufbyte *, ...) 2496 Lisp_Object signal_continuable_ferror (Lisp_Object, const CIntbyte *, ...)
2501 PRINTF_ARGS (2, 3); 2497 PRINTF_ARGS (2, 3);
2502 Lisp_Object maybe_signal_continuable_ferror (Lisp_Object, Lisp_Object, 2498 Lisp_Object maybe_signal_continuable_ferror (Lisp_Object, Lisp_Object,
2503 Error_Behavior, 2499 Error_Behavior,
2504 const CBufbyte *, ...) 2500 const CIntbyte *, ...)
2505 PRINTF_ARGS (4, 5); 2501 PRINTF_ARGS (4, 5);
2506 2502
2507 Lisp_Object build_error_data (const CBufbyte *reason, Lisp_Object frob); 2503 Lisp_Object build_error_data (const CIntbyte *reason, Lisp_Object frob);
2508 DECLARE_DOESNT_RETURN (signal_error (Lisp_Object, const CBufbyte *, 2504 DECLARE_DOESNT_RETURN (signal_error (Lisp_Object, const CIntbyte *,
2509 Lisp_Object)); 2505 Lisp_Object));
2510 void maybe_signal_error (Lisp_Object, const CBufbyte *, Lisp_Object, 2506 void maybe_signal_error (Lisp_Object, const CIntbyte *, Lisp_Object,
2511 Lisp_Object, Error_Behavior); 2507 Lisp_Object, Error_Behavior);
2512 Lisp_Object signal_continuable_error (Lisp_Object, const CBufbyte *, 2508 Lisp_Object signal_continuable_error (Lisp_Object, const CIntbyte *,
2513 Lisp_Object); 2509 Lisp_Object);
2514 Lisp_Object maybe_signal_continuable_error (Lisp_Object, const CBufbyte *, 2510 Lisp_Object maybe_signal_continuable_error (Lisp_Object, const CIntbyte *,
2515 Lisp_Object, 2511 Lisp_Object,
2516 Lisp_Object, Error_Behavior); 2512 Lisp_Object, Error_Behavior);
2517 DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (signal_ferror_with_frob 2513 DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (signal_ferror_with_frob
2518 (Lisp_Object, Lisp_Object, 2514 (Lisp_Object, Lisp_Object,
2519 const CBufbyte *, 2515 const CIntbyte *,
2520 ...), 3, 4); 2516 ...), 3, 4);
2521 void maybe_signal_ferror_with_frob (Lisp_Object, Lisp_Object, Lisp_Object, 2517 void maybe_signal_ferror_with_frob (Lisp_Object, Lisp_Object, Lisp_Object,
2522 Error_Behavior, 2518 Error_Behavior,
2523 const CBufbyte *, ...) PRINTF_ARGS (5, 6); 2519 const CIntbyte *, ...) PRINTF_ARGS (5, 6);
2524 Lisp_Object signal_continuable_ferror_with_frob (Lisp_Object, Lisp_Object, 2520 Lisp_Object signal_continuable_ferror_with_frob (Lisp_Object, Lisp_Object,
2525 const CBufbyte *, 2521 const CIntbyte *,
2526 ...) PRINTF_ARGS (3, 4); 2522 ...) PRINTF_ARGS (3, 4);
2527 Lisp_Object maybe_signal_continuable_ferror_with_frob (Lisp_Object, 2523 Lisp_Object maybe_signal_continuable_ferror_with_frob (Lisp_Object,
2528 Lisp_Object, 2524 Lisp_Object,
2529 Lisp_Object, 2525 Lisp_Object,
2530 Error_Behavior, 2526 Error_Behavior,
2531 const CBufbyte *, ...) 2527 const CIntbyte *, ...)
2532 PRINTF_ARGS (5, 6); 2528 PRINTF_ARGS (5, 6);
2533 DECLARE_DOESNT_RETURN (signal_error_2 (Lisp_Object, const CBufbyte *, 2529 DECLARE_DOESNT_RETURN (signal_error_2 (Lisp_Object, const CIntbyte *,
2534 Lisp_Object, Lisp_Object)); 2530 Lisp_Object, Lisp_Object));
2535 void maybe_signal_error_2 (Lisp_Object, const CBufbyte *, Lisp_Object, 2531 void maybe_signal_error_2 (Lisp_Object, const CIntbyte *, Lisp_Object,
2536 Lisp_Object, Lisp_Object, Error_Behavior); 2532 Lisp_Object, Lisp_Object, Error_Behavior);
2537 Lisp_Object signal_continuable_error_2 (Lisp_Object, const CBufbyte *, 2533 Lisp_Object signal_continuable_error_2 (Lisp_Object, const CIntbyte *,
2538 Lisp_Object, Lisp_Object); 2534 Lisp_Object, Lisp_Object);
2539 Lisp_Object maybe_signal_continuable_error_2 (Lisp_Object, const CBufbyte *, 2535 Lisp_Object maybe_signal_continuable_error_2 (Lisp_Object, const CIntbyte *,
2540 Lisp_Object, Lisp_Object, 2536 Lisp_Object, Lisp_Object,
2541 Lisp_Object, 2537 Lisp_Object,
2542 Error_Behavior); 2538 Error_Behavior);
2543 2539
2544 2540
2545 DECLARE_DOESNT_RETURN (signal_malformed_list_error (Lisp_Object)); 2541 DECLARE_DOESNT_RETURN (signal_malformed_list_error (Lisp_Object));
2546 DECLARE_DOESNT_RETURN (signal_malformed_property_list_error (Lisp_Object)); 2542 DECLARE_DOESNT_RETURN (signal_malformed_property_list_error (Lisp_Object));
2547 DECLARE_DOESNT_RETURN (signal_circular_list_error (Lisp_Object)); 2543 DECLARE_DOESNT_RETURN (signal_circular_list_error (Lisp_Object));
2548 DECLARE_DOESNT_RETURN (signal_circular_property_list_error (Lisp_Object)); 2544 DECLARE_DOESNT_RETURN (signal_circular_property_list_error (Lisp_Object));
2549 2545
2550 DECLARE_DOESNT_RETURN (syntax_error (const CBufbyte *reason, 2546 DECLARE_DOESNT_RETURN (syntax_error (const CIntbyte *reason,
2551 Lisp_Object frob)); 2547 Lisp_Object frob));
2552 DECLARE_DOESNT_RETURN (syntax_error_2 (const CBufbyte *reason, 2548 DECLARE_DOESNT_RETURN (syntax_error_2 (const CIntbyte *reason,
2553 Lisp_Object frob1, 2549 Lisp_Object frob1,
2554 Lisp_Object frob2)); 2550 Lisp_Object frob2));
2555 void maybe_syntax_error (const CBufbyte *, Lisp_Object, Lisp_Object, 2551 void maybe_syntax_error (const CIntbyte *, Lisp_Object, Lisp_Object,
2556 Error_Behavior); 2552 Error_Behavior);
2557 DECLARE_DOESNT_RETURN (sferror (const CBufbyte *reason, Lisp_Object frob)); 2553 DECLARE_DOESNT_RETURN (sferror (const CIntbyte *reason, Lisp_Object frob));
2558 DECLARE_DOESNT_RETURN (sferror_2 (const CBufbyte *reason, Lisp_Object frob1, 2554 DECLARE_DOESNT_RETURN (sferror_2 (const CIntbyte *reason, Lisp_Object frob1,
2559 Lisp_Object frob2)); 2555 Lisp_Object frob2));
2560 void maybe_sferror (const CBufbyte *, Lisp_Object, Lisp_Object, 2556 void maybe_sferror (const CIntbyte *, Lisp_Object, Lisp_Object,
2561 Error_Behavior); 2557 Error_Behavior);
2562 DECLARE_DOESNT_RETURN (invalid_argument (const CBufbyte *reason, 2558 DECLARE_DOESNT_RETURN (invalid_argument (const CIntbyte *reason,
2563 Lisp_Object frob)); 2559 Lisp_Object frob));
2564 DECLARE_DOESNT_RETURN (invalid_argument_2 (const CBufbyte *reason, 2560 DECLARE_DOESNT_RETURN (invalid_argument_2 (const CIntbyte *reason,
2565 Lisp_Object frob1, 2561 Lisp_Object frob1,
2566 Lisp_Object frob2)); 2562 Lisp_Object frob2));
2567 void maybe_invalid_argument (const CBufbyte *, Lisp_Object, Lisp_Object, 2563 void maybe_invalid_argument (const CIntbyte *, Lisp_Object, Lisp_Object,
2568 Error_Behavior); 2564 Error_Behavior);
2569 DECLARE_DOESNT_RETURN (invalid_operation (const CBufbyte *reason, 2565 DECLARE_DOESNT_RETURN (invalid_operation (const CIntbyte *reason,
2570 Lisp_Object frob)); 2566 Lisp_Object frob));
2571 DECLARE_DOESNT_RETURN (invalid_operation_2 (const CBufbyte *reason, 2567 DECLARE_DOESNT_RETURN (invalid_operation_2 (const CIntbyte *reason,
2572 Lisp_Object frob1, 2568 Lisp_Object frob1,
2573 Lisp_Object frob2)); 2569 Lisp_Object frob2));
2574 void maybe_invalid_operation (const CBufbyte *, Lisp_Object, Lisp_Object, 2570 void maybe_invalid_operation (const CIntbyte *, Lisp_Object, Lisp_Object,
2575 Error_Behavior); 2571 Error_Behavior);
2576 DECLARE_DOESNT_RETURN (invalid_state (const CBufbyte *reason, 2572 DECLARE_DOESNT_RETURN (invalid_state (const CIntbyte *reason,
2577 Lisp_Object frob)); 2573 Lisp_Object frob));
2578 DECLARE_DOESNT_RETURN (invalid_state_2 (const CBufbyte *reason, 2574 DECLARE_DOESNT_RETURN (invalid_state_2 (const CIntbyte *reason,
2579 Lisp_Object frob1, 2575 Lisp_Object frob1,
2580 Lisp_Object frob2)); 2576 Lisp_Object frob2));
2581 void maybe_invalid_state (const CBufbyte *, Lisp_Object, Lisp_Object, 2577 void maybe_invalid_state (const CIntbyte *, Lisp_Object, Lisp_Object,
2582 Error_Behavior); 2578 Error_Behavior);
2583 DECLARE_DOESNT_RETURN (invalid_change (const CBufbyte *reason, 2579 DECLARE_DOESNT_RETURN (invalid_change (const CIntbyte *reason,
2584 Lisp_Object frob)); 2580 Lisp_Object frob));
2585 DECLARE_DOESNT_RETURN (invalid_change_2 (const CBufbyte *reason, 2581 DECLARE_DOESNT_RETURN (invalid_change_2 (const CIntbyte *reason,
2586 Lisp_Object frob1, 2582 Lisp_Object frob1,
2587 Lisp_Object frob2)); 2583 Lisp_Object frob2));
2588 void maybe_invalid_change (const CBufbyte *, Lisp_Object, Lisp_Object, 2584 void maybe_invalid_change (const CIntbyte *, Lisp_Object, Lisp_Object,
2589 Error_Behavior); 2585 Error_Behavior);
2590 DECLARE_DOESNT_RETURN (invalid_constant (const CBufbyte *reason, 2586 DECLARE_DOESNT_RETURN (invalid_constant (const CIntbyte *reason,
2591 Lisp_Object frob)); 2587 Lisp_Object frob));
2592 DECLARE_DOESNT_RETURN (invalid_constant_2 (const CBufbyte *reason, 2588 DECLARE_DOESNT_RETURN (invalid_constant_2 (const CIntbyte *reason,
2593 Lisp_Object frob1, 2589 Lisp_Object frob1,
2594 Lisp_Object frob2)); 2590 Lisp_Object frob2));
2595 void maybe_invalid_constant (const CBufbyte *, Lisp_Object, Lisp_Object, 2591 void maybe_invalid_constant (const CIntbyte *, Lisp_Object, Lisp_Object,
2596 Error_Behavior); 2592 Error_Behavior);
2597 DECLARE_DOESNT_RETURN (wtaerror (const CBufbyte *reason, Lisp_Object frob)); 2593 DECLARE_DOESNT_RETURN (wtaerror (const CIntbyte *reason, Lisp_Object frob));
2598 DECLARE_DOESNT_RETURN (out_of_memory (const CBufbyte *reason, 2594 DECLARE_DOESNT_RETURN (out_of_memory (const CIntbyte *reason,
2599 Lisp_Object frob)); 2595 Lisp_Object frob));
2600 DECLARE_DOESNT_RETURN (stack_overflow (const CBufbyte *reason, 2596 DECLARE_DOESNT_RETURN (stack_overflow (const CIntbyte *reason,
2601 Lisp_Object frob)); 2597 Lisp_Object frob));
2602 DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (printing_unreadable_object 2598 DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (printing_unreadable_object
2603 (const CBufbyte *, 2599 (const CIntbyte *,
2604 ...), 1, 2); 2600 ...), 1, 2);
2605 2601
2606 Lisp_Object signal_void_function_error (Lisp_Object); 2602 Lisp_Object signal_void_function_error (Lisp_Object);
2607 Lisp_Object signal_invalid_function_error (Lisp_Object); 2603 Lisp_Object signal_invalid_function_error (Lisp_Object);
2608 Lisp_Object signal_wrong_number_of_arguments_error (Lisp_Object, int); 2604 Lisp_Object signal_wrong_number_of_arguments_error (Lisp_Object, int);
2644 Lisp_Object, Lisp_Object, Lisp_Object, 2640 Lisp_Object, Lisp_Object, Lisp_Object,
2645 Lisp_Object, Lisp_Object); 2641 Lisp_Object, Lisp_Object);
2646 Lisp_Object eval_in_buffer (struct buffer *, Lisp_Object); 2642 Lisp_Object eval_in_buffer (struct buffer *, Lisp_Object);
2647 Lisp_Object call0_with_handler (Lisp_Object, Lisp_Object); 2643 Lisp_Object call0_with_handler (Lisp_Object, Lisp_Object);
2648 Lisp_Object call1_with_handler (Lisp_Object, Lisp_Object, Lisp_Object); 2644 Lisp_Object call1_with_handler (Lisp_Object, Lisp_Object, Lisp_Object);
2649 Lisp_Object eval_in_buffer_trapping_errors (const CBufbyte *, struct buffer *, 2645 Lisp_Object eval_in_buffer_trapping_errors (const CIntbyte *, struct buffer *,
2650 Lisp_Object); 2646 Lisp_Object);
2651 Lisp_Object run_hook_trapping_errors (const CBufbyte *, Lisp_Object); 2647 Lisp_Object run_hook_trapping_errors (const CIntbyte *, Lisp_Object);
2652 Lisp_Object safe_run_hook_trapping_errors (const CBufbyte *, Lisp_Object, int); 2648 Lisp_Object safe_run_hook_trapping_errors (const CIntbyte *, Lisp_Object, int);
2653 Lisp_Object call0_trapping_errors (const CBufbyte *, Lisp_Object); 2649 Lisp_Object call0_trapping_errors (const CIntbyte *, Lisp_Object);
2654 Lisp_Object call1_trapping_errors (const CBufbyte *, Lisp_Object, Lisp_Object); 2650 Lisp_Object call1_trapping_errors (const CIntbyte *, Lisp_Object, Lisp_Object);
2655 Lisp_Object call2_trapping_errors (const CBufbyte *, 2651 Lisp_Object call2_trapping_errors (const CIntbyte *,
2656 Lisp_Object, Lisp_Object, Lisp_Object); 2652 Lisp_Object, Lisp_Object, Lisp_Object);
2657 Lisp_Object call_with_suspended_errors (lisp_fn_t, volatile Lisp_Object, Lisp_Object, 2653 Lisp_Object call_with_suspended_errors (lisp_fn_t, volatile Lisp_Object, Lisp_Object,
2658 Error_Behavior, int, ...); 2654 Error_Behavior, int, ...);
2659 /* C Code should be using internal_catch, record_unwind_p, condition_case_1 */ 2655 /* C Code should be using internal_catch, record_unwind_p, condition_case_1 */
2660 Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object), 2656 Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object),
2669 void specbind (Lisp_Object, Lisp_Object); 2665 void specbind (Lisp_Object, Lisp_Object);
2670 void record_unwind_protect (Lisp_Object (*) (Lisp_Object), Lisp_Object); 2666 void record_unwind_protect (Lisp_Object (*) (Lisp_Object), Lisp_Object);
2671 void do_autoload (Lisp_Object, Lisp_Object); 2667 void do_autoload (Lisp_Object, Lisp_Object);
2672 Lisp_Object un_autoload (Lisp_Object); 2668 Lisp_Object un_autoload (Lisp_Object);
2673 void warn_when_safe_lispobj (Lisp_Object, Lisp_Object, Lisp_Object); 2669 void warn_when_safe_lispobj (Lisp_Object, Lisp_Object, Lisp_Object);
2674 void warn_when_safe (Lisp_Object, Lisp_Object, const CBufbyte *, 2670 void warn_when_safe (Lisp_Object, Lisp_Object, const CIntbyte *,
2675 ...) PRINTF_ARGS (3, 4); 2671 ...) PRINTF_ARGS (3, 4);
2676 2672
2677 2673
2678 /* Defined in event-stream.c */ 2674 /* Defined in event-stream.c */
2679 void wait_delaying_user_input (int (*) (void *), void *); 2675 void wait_delaying_user_input (int (*) (void *), void *);
2695 2691
2696 /* Defined in fileio.c */ 2692 /* Defined in fileio.c */
2697 void record_auto_save (void); 2693 void record_auto_save (void);
2698 void force_auto_save_soon (void); 2694 void force_auto_save_soon (void);
2699 DECLARE_DOESNT_RETURN (report_error_with_errno (Lisp_Object errtype, 2695 DECLARE_DOESNT_RETURN (report_error_with_errno (Lisp_Object errtype,
2700 const CBufbyte *string, 2696 const CIntbyte *string,
2701 Lisp_Object data)); 2697 Lisp_Object data));
2702 DECLARE_DOESNT_RETURN (report_file_type_error (Lisp_Object errtype, 2698 DECLARE_DOESNT_RETURN (report_file_type_error (Lisp_Object errtype,
2703 Lisp_Object oserrmess, 2699 Lisp_Object oserrmess,
2704 const CBufbyte *string, 2700 const CIntbyte *string,
2705 Lisp_Object data)); 2701 Lisp_Object data));
2706 DECLARE_DOESNT_RETURN (report_file_error (const CBufbyte *, Lisp_Object)); 2702 DECLARE_DOESNT_RETURN (report_file_error (const CIntbyte *, Lisp_Object));
2707 Lisp_Object lisp_strerror (int); 2703 Lisp_Object lisp_strerror (int);
2708 Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); 2704 Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object);
2709 Memory_Count read_allowing_quit (int fildes, void *buf, Memory_Count size); 2705 Bytecount read_allowing_quit (int fildes, void *buf, Bytecount size);
2710 Memory_Count write_allowing_quit (int fildes, const void *buf, 2706 Bytecount write_allowing_quit (int fildes, const void *buf,
2711 Memory_Count size); 2707 Bytecount size);
2712 int internal_delete_file (Lisp_Object); 2708 int internal_delete_file (Lisp_Object);
2713 2709
2714 /* Defined in filelock.c */ 2710 /* Defined in filelock.c */
2715 void lock_file (Lisp_Object); 2711 void lock_file (Lisp_Object);
2716 void unlock_file (Lisp_Object); 2712 void unlock_file (Lisp_Object);
2773 DECLARE_DOESNT_RETURN (gui_error (const char *reason, 2769 DECLARE_DOESNT_RETURN (gui_error (const char *reason,
2774 Lisp_Object frob)); 2770 Lisp_Object frob));
2775 DECLARE_DOESNT_RETURN (gui_error_2 (const char *reason, 2771 DECLARE_DOESNT_RETURN (gui_error_2 (const char *reason,
2776 Lisp_Object frob0, Lisp_Object frob1)); 2772 Lisp_Object frob0, Lisp_Object frob1));
2777 /* Defined in indent.c */ 2773 /* Defined in indent.c */
2778 int bi_spaces_at_point (struct buffer *, Bytind); 2774 int bi_spaces_at_point (struct buffer *, Bytebpos);
2779 int column_at_point (struct buffer *, Bufpos, int); 2775 int column_at_point (struct buffer *, Charbpos, int);
2780 int string_column_at_point (Lisp_String *, Bufpos, int); 2776 int string_column_at_point (Lisp_String *, Charbpos, int);
2781 int current_column (struct buffer *); 2777 int current_column (struct buffer *);
2782 void invalidate_current_column (void); 2778 void invalidate_current_column (void);
2783 Bufpos vmotion (struct window *, Bufpos, int, int *); 2779 Charbpos vmotion (struct window *, Charbpos, int, int *);
2784 Bufpos vmotion_pixels (Lisp_Object, Bufpos, int, int, int *); 2780 Charbpos vmotion_pixels (Lisp_Object, Charbpos, int, int, int *);
2785 2781
2786 /* Defined in keymap.c */ 2782 /* Defined in keymap.c */
2787 void where_is_to_char (Lisp_Object, char *); 2783 void where_is_to_char (Lisp_Object, char *);
2788 2784
2789 /* Defined in lread.c */ 2785 /* Defined in lread.c */
2808 #else /*! LOADHIST */ 2804 #else /*! LOADHIST */
2809 # define LOADHIST_ATTACH(x) 2805 # define LOADHIST_ATTACH(x)
2810 #endif /*! LOADHIST */ 2806 #endif /*! LOADHIST */
2811 2807
2812 /* Defined in marker.c */ 2808 /* Defined in marker.c */
2813 Bytind bi_marker_position (Lisp_Object); 2809 Bytebpos bi_marker_position (Lisp_Object);
2814 Bufpos marker_position (Lisp_Object); 2810 Charbpos marker_position (Lisp_Object);
2815 void set_bi_marker_position (Lisp_Object, Bytind); 2811 void set_bi_marker_position (Lisp_Object, Bytebpos);
2816 void set_marker_position (Lisp_Object, Bufpos); 2812 void set_marker_position (Lisp_Object, Charbpos);
2817 void unchain_marker (Lisp_Object); 2813 void unchain_marker (Lisp_Object);
2818 Lisp_Object noseeum_copy_marker (Lisp_Object, Lisp_Object); 2814 Lisp_Object noseeum_copy_marker (Lisp_Object, Lisp_Object);
2819 Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object); 2815 Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object);
2820 #ifdef MEMORY_USAGE_STATS 2816 #ifdef MEMORY_USAGE_STATS
2821 int compute_buffer_marker_usage (struct buffer *, struct overhead_stats *); 2817 int compute_buffer_marker_usage (struct buffer *, struct overhead_stats *);
2826 extern int menubar_show_keybindings; 2822 extern int menubar_show_keybindings;
2827 extern int popup_menu_titles; 2823 extern int popup_menu_titles;
2828 2824
2829 /* Defined in minibuf.c */ 2825 /* Defined in minibuf.c */
2830 extern int minibuf_level; 2826 extern int minibuf_level;
2831 Charcount scmp_1 (const Bufbyte *, const Bufbyte *, Charcount, int); 2827 Charcount scmp_1 (const Intbyte *, const Intbyte *, Charcount, int);
2832 #define scmp(s1, s2, len) scmp_1 (s1, s2, len, completion_ignore_case) 2828 #define scmp(s1, s2, len) scmp_1 (s1, s2, len, completion_ignore_case)
2833 extern int completion_ignore_case; 2829 extern int completion_ignore_case;
2834 int regexp_ignore_completion_p (const Bufbyte *, Lisp_Object, 2830 int regexp_ignore_completion_p (const Intbyte *, Lisp_Object,
2835 Bytecount, Bytecount); 2831 Bytecount, Bytecount);
2836 Lisp_Object clear_echo_area (struct frame *, Lisp_Object, int); 2832 Lisp_Object clear_echo_area (struct frame *, Lisp_Object, int);
2837 Lisp_Object clear_echo_area_from_print (struct frame *, Lisp_Object, int); 2833 Lisp_Object clear_echo_area_from_print (struct frame *, Lisp_Object, int);
2838 void echo_area_append (struct frame *, const Bufbyte *, Lisp_Object, 2834 void echo_area_append (struct frame *, const Intbyte *, Lisp_Object,
2839 Bytecount, Bytecount, Lisp_Object); 2835 Bytecount, Bytecount, Lisp_Object);
2840 void echo_area_message (struct frame *, const Bufbyte *, Lisp_Object, 2836 void echo_area_message (struct frame *, const Intbyte *, Lisp_Object,
2841 Bytecount, Bytecount, Lisp_Object); 2837 Bytecount, Bytecount, Lisp_Object);
2842 Lisp_Object echo_area_status (struct frame *); 2838 Lisp_Object echo_area_status (struct frame *);
2843 int echo_area_active (struct frame *); 2839 int echo_area_active (struct frame *);
2844 Lisp_Object echo_area_contents (struct frame *); 2840 Lisp_Object echo_area_contents (struct frame *);
2845 void message_internal (const Bufbyte *, Lisp_Object, Bytecount, Bytecount); 2841 void message_internal (const Intbyte *, Lisp_Object, Bytecount, Bytecount);
2846 void message_append_internal (const Bufbyte *, Lisp_Object, 2842 void message_append_internal (const Intbyte *, Lisp_Object,
2847 Bytecount, Bytecount); 2843 Bytecount, Bytecount);
2848 void message (const char *, ...) PRINTF_ARGS (1, 2); 2844 void message (const char *, ...) PRINTF_ARGS (1, 2);
2849 void message_append (const char *, ...) PRINTF_ARGS (1, 2); 2845 void message_append (const char *, ...) PRINTF_ARGS (1, 2);
2850 void message_no_translate (const char *, ...) PRINTF_ARGS (1, 2); 2846 void message_no_translate (const char *, ...) PRINTF_ARGS (1, 2);
2851 void clear_message (void); 2847 void clear_message (void);
2852 2848
2853 /* Defined in print.c */ 2849 /* Defined in print.c */
2854 void write_string_to_stdio_stream (FILE *, struct console *, 2850 void write_string_to_stdio_stream (FILE *, struct console *,
2855 const Bufbyte *, Bytecount, Bytecount, 2851 const Intbyte *, Bytecount, Bytecount,
2856 Lisp_Object, int); 2852 Lisp_Object, int);
2857 void debug_print (Lisp_Object); 2853 void debug_print (Lisp_Object);
2858 void debug_short_backtrace (int); 2854 void debug_short_backtrace (int);
2859 void temp_output_buffer_setup (Lisp_Object); 2855 void temp_output_buffer_setup (Lisp_Object);
2860 void temp_output_buffer_show (Lisp_Object, Lisp_Object); 2856 void temp_output_buffer_show (Lisp_Object, Lisp_Object);
2861 /* NOTE: Do not call this with the data of a Lisp_String. Use princ. 2857 /* NOTE: Do not call this with the data of a Lisp_String. Use princ.
2862 * Note: stream should be defaulted before calling 2858 * Note: stream should be defaulted before calling
2863 * (eg Qnil means stdout, not Vstandard_output, etc) */ 2859 * (eg Qnil means stdout, not Vstandard_output, etc) */
2864 void write_c_string (const char *, Lisp_Object); 2860 void write_c_string (const char *, Lisp_Object);
2865 /* Same goes for this function. */ 2861 /* Same goes for this function. */
2866 void write_string_1 (const Bufbyte *, Bytecount, Lisp_Object); 2862 void write_string_1 (const Intbyte *, Bytecount, Lisp_Object);
2867 void print_cons (Lisp_Object, Lisp_Object, int); 2863 void print_cons (Lisp_Object, Lisp_Object, int);
2868 void print_vector (Lisp_Object, Lisp_Object, int); 2864 void print_vector (Lisp_Object, Lisp_Object, int);
2869 void print_string (Lisp_Object, Lisp_Object, int); 2865 void print_string (Lisp_Object, Lisp_Object, int);
2870 2866
2871 /* The number of bytes required to store the decimal printed 2867 /* The number of bytes required to store the decimal printed
2912 Lisp_Object *); 2908 Lisp_Object *);
2913 2909
2914 /* Defined in search.c */ 2910 /* Defined in search.c */
2915 struct re_pattern_buffer; 2911 struct re_pattern_buffer;
2916 struct re_registers; 2912 struct re_registers;
2917 Bufpos scan_buffer (struct buffer *, Emchar, Bufpos, Bufpos, EMACS_INT, EMACS_INT *, int); 2913 Charbpos scan_buffer (struct buffer *, Emchar, Charbpos, Charbpos, EMACS_INT, EMACS_INT *, int);
2918 Bufpos find_next_newline (struct buffer *, Bufpos, int); 2914 Charbpos find_next_newline (struct buffer *, Charbpos, int);
2919 Bufpos find_next_newline_no_quit (struct buffer *, Bufpos, int); 2915 Charbpos find_next_newline_no_quit (struct buffer *, Charbpos, int);
2920 Bytind bi_find_next_newline_no_quit (struct buffer *, Bytind, int); 2916 Bytebpos bi_find_next_newline_no_quit (struct buffer *, Bytebpos, int);
2921 Bytind bi_find_next_emchar_in_string (Lisp_String*, Emchar, Bytind, EMACS_INT); 2917 Bytebpos bi_find_next_emchar_in_string (Lisp_String*, Emchar, Bytebpos, EMACS_INT);
2922 Bufpos find_before_next_newline (struct buffer *, Bufpos, Bufpos, int); 2918 Charbpos find_before_next_newline (struct buffer *, Charbpos, Charbpos, int);
2923 struct re_pattern_buffer *compile_pattern (Lisp_Object, struct re_registers *, 2919 struct re_pattern_buffer *compile_pattern (Lisp_Object, struct re_registers *,
2924 Lisp_Object, int, Error_Behavior); 2920 Lisp_Object, int, Error_Behavior);
2925 Bytecount fast_string_match (Lisp_Object, const Bufbyte *, 2921 Bytecount fast_string_match (Lisp_Object, const Intbyte *,
2926 Lisp_Object, Bytecount, 2922 Lisp_Object, Bytecount,
2927 Bytecount, int, Error_Behavior, int); 2923 Bytecount, int, Error_Behavior, int);
2928 Bytecount fast_lisp_string_match (Lisp_Object, Lisp_Object); 2924 Bytecount fast_lisp_string_match (Lisp_Object, Lisp_Object);
2929 void restore_match_data (void); 2925 void restore_match_data (void);
2930 extern Fixnum warn_about_possibly_incompatible_back_references; 2926 extern Fixnum warn_about_possibly_incompatible_back_references;
2945 Error_Behavior, int, int, Lisp_Object); 2941 Error_Behavior, int, int, Lisp_Object);
2946 Lisp_Object specifier_instance_no_quit (Lisp_Object, Lisp_Object, Lisp_Object, 2942 Lisp_Object specifier_instance_no_quit (Lisp_Object, Lisp_Object, Lisp_Object,
2947 Error_Behavior, int, Lisp_Object); 2943 Error_Behavior, int, Lisp_Object);
2948 2944
2949 /* Defined in symbols.c */ 2945 /* Defined in symbols.c */
2950 unsigned int hash_string (const Bufbyte *, Bytecount); 2946 unsigned int hash_string (const Intbyte *, Bytecount);
2951 Lisp_Object intern (const char *); 2947 Lisp_Object intern (const char *);
2952 Lisp_Object oblookup (Lisp_Object, const Bufbyte *, Bytecount); 2948 Lisp_Object oblookup (Lisp_Object, const Intbyte *, Bytecount);
2953 void map_obarray (Lisp_Object, int (*) (Lisp_Object, void *), void *); 2949 void map_obarray (Lisp_Object, int (*) (Lisp_Object, void *), void *);
2954 Lisp_Object indirect_function (Lisp_Object, int); 2950 Lisp_Object indirect_function (Lisp_Object, int);
2955 Lisp_Object symbol_value_in_buffer (Lisp_Object, Lisp_Object); 2951 Lisp_Object symbol_value_in_buffer (Lisp_Object, Lisp_Object);
2956 void kill_buffer_local_variables (struct buffer *); 2952 void kill_buffer_local_variables (struct buffer *);
2957 int symbol_value_buffer_local_info (Lisp_Object, struct buffer *); 2953 int symbol_value_buffer_local_info (Lisp_Object, struct buffer *);
2961 void reject_constant_symbols (Lisp_Object sym, Lisp_Object newval, 2957 void reject_constant_symbols (Lisp_Object sym, Lisp_Object newval,
2962 int function_p, 2958 int function_p,
2963 Lisp_Object follow_past_lisp_magic); 2959 Lisp_Object follow_past_lisp_magic);
2964 2960
2965 /* Defined in syntax.c */ 2961 /* Defined in syntax.c */
2966 Bufpos scan_words (struct buffer *, Bufpos, int); 2962 Charbpos scan_words (struct buffer *, Charbpos, int);
2967 2963
2968 /* Defined in undo.c */ 2964 /* Defined in undo.c */
2969 Lisp_Object truncate_undo_list (Lisp_Object, int, int); 2965 Lisp_Object truncate_undo_list (Lisp_Object, int, int);
2970 void record_extent (Lisp_Object, int); 2966 void record_extent (Lisp_Object, int);
2971 void record_insert (struct buffer *, Bufpos, Charcount); 2967 void record_insert (struct buffer *, Charbpos, Charcount);
2972 void record_delete (struct buffer *, Bufpos, Charcount); 2968 void record_delete (struct buffer *, Charbpos, Charcount);
2973 void record_change (struct buffer *, Bufpos, Charcount); 2969 void record_change (struct buffer *, Charbpos, Charcount);
2974 2970
2975 /* Defined in unex*.c */ 2971 /* Defined in unex*.c */
2976 int unexec (char *, char *, uintptr_t, uintptr_t, uintptr_t); 2972 int unexec (char *, char *, uintptr_t, uintptr_t, uintptr_t);
2977 #ifdef RUN_TIME_REMAP 2973 #ifdef RUN_TIME_REMAP
2978 int run_time_remap (char *); 2974 int run_time_remap (char *);