comparison src/data.c @ 272:c5d627a313b1 r21-0b34

Import from CVS: tag r21-0b34
author cvs
date Mon, 13 Aug 2007 10:28:48 +0200
parents 11cf20601dec
children 6330739388db
comparison
equal deleted inserted replaced
271:c7b7086b0a39 272:c5d627a313b1
27 #include <config.h> 27 #include <config.h>
28 #include "lisp.h" 28 #include "lisp.h"
29 29
30 #include "buffer.h" 30 #include "buffer.h"
31 #include "bytecode.h" 31 #include "bytecode.h"
32
33 #include "syssignal.h" 32 #include "syssignal.h"
33
34 #ifdef LISP_FLOAT_TYPE 34 #ifdef LISP_FLOAT_TYPE
35 /* Need to define a differentiating symbol -- see sysfloat.h */ 35 /* Need to define a differentiating symbol -- see sysfloat.h */
36 # define THIS_FILENAME data_c 36 # define THIS_FILENAME data_c
37 # include "sysfloat.h" 37 # include "sysfloat.h"
38 #endif /* LISP_FLOAT_TYPE */ 38 #endif /* LISP_FLOAT_TYPE */
39 39
40 Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound; 40 Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound;
41 Lisp_Object Qerror_conditions, Qerror_message, Qtop_level; 41 Lisp_Object Qerror_conditions, Qerror_message;
42 Lisp_Object Qsignal, Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range; 42 Lisp_Object Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range;
43 Lisp_Object Qvoid_variable, Qcyclic_variable_indirection; 43 Lisp_Object Qvoid_variable, Qcyclic_variable_indirection;
44 Lisp_Object Qvoid_function, Qcyclic_function_indirection; 44 Lisp_Object Qvoid_function, Qcyclic_function_indirection;
45 Lisp_Object Qsetting_constant, Qinvalid_read_syntax; 45 Lisp_Object Qsetting_constant, Qinvalid_read_syntax;
46 Lisp_Object Qmalformed_list, Qmalformed_property_list; 46 Lisp_Object Qmalformed_list, Qmalformed_property_list;
47 Lisp_Object Qcircular_list, Qcircular_property_list; 47 Lisp_Object Qcircular_list, Qcircular_property_list;
48 Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch; 48 Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch;
49 Lisp_Object Qio_error, Qend_of_file; 49 Lisp_Object Qio_error, Qend_of_file;
50 Lisp_Object Qarith_error, Qrange_error, Qdomain_error; 50 Lisp_Object Qarith_error, Qrange_error, Qdomain_error;
51 Lisp_Object Qsingularity_error, Qoverflow_error, Qunderflow_error; 51 Lisp_Object Qsingularity_error, Qoverflow_error, Qunderflow_error;
52 Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only; 52 Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
53 Lisp_Object Qintegerp, Qnatnump, Qsymbolp, Qkeywordp, Qlistp, Qconsp, Qsubrp; 53 Lisp_Object Qintegerp, Qnatnump, Qsymbolp, Qkeywordp;
54 Lisp_Object Qcharacterp, Qstringp, Qarrayp, Qsequencep, Qbufferp; 54 Lisp_Object Qlistp, Qtrue_list_p, Qweak_listp;
55 Lisp_Object Qcompiled_functionp; 55 Lisp_Object Qconsp, Qsubrp, Qcompiled_functionp;
56 Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; 56 Lisp_Object Qcharacterp, Qstringp, Qarrayp, Qsequencep, Qvectorp;
57 Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qbufferp;
57 Lisp_Object Qinteger_or_char_p, Qinteger_char_or_marker_p; 58 Lisp_Object Qinteger_or_char_p, Qinteger_char_or_marker_p;
58 Lisp_Object Qbit_vectorp, Qbitp; 59 Lisp_Object Qnumberp, Qnumber_or_marker_p, Qnumber_char_or_marker_p;
59 60 Lisp_Object Qbit_vectorp, Qbitp, Qcons, Qkeyword, Qcdr, Qignore;
60 /* Qstring, Qinteger, Qsymbol, Qvector defined in general.c */
61 Lisp_Object Qcons, Qkeyword;
62
63 Lisp_Object Qcdr;
64
65 Lisp_Object Qignore;
66 61
67 #ifdef LISP_FLOAT_TYPE 62 #ifdef LISP_FLOAT_TYPE
68 Lisp_Object Qfloatp; 63 Lisp_Object Qfloatp;
69 #endif 64 #endif
70 Lisp_Object Qnumberp, Qnumber_or_marker_p, Qnumber_char_or_marker_p;
71
72 Lisp_Object Qweak_listp;
73 65
74 #ifdef DEBUG_XEMACS 66 #ifdef DEBUG_XEMACS
75 67
76 int debug_issue_ebola_notices; 68 int debug_issue_ebola_notices;
77 69
155 147
156 void 148 void
157 check_int_range (int val, int min, int max) 149 check_int_range (int val, int min, int max)
158 { 150 {
159 if (val < min || val > max) 151 if (val < min || val > max)
160 args_out_of_range_3 (make_int (val), make_int (min), 152 args_out_of_range_3 (make_int (val), make_int (min), make_int (max));
161 make_int (max)); 153 }
162 }
163
164 #ifndef make_int
165 Lisp_Object
166 make_int (EMACS_INT num)
167 {
168 Lisp_Object val;
169 #ifdef USE_MINIMAL_TAGBITS
170 XSETINT(val, num);
171 #else
172 /* Don't use XSETINT here -- it's defined in terms of make_int (). */
173 XSETOBJ (val, Lisp_Type_Int, num);
174 #endif
175 return val;
176 }
177 #endif /* ! defined (make_int) */
178 154
179 /* On some machines, XINT needs a temporary location. 155 /* On some machines, XINT needs a temporary location.
180 Here it is, in case it is needed. */ 156 Here it is, in case it is needed. */
181 157
182 EMACS_INT sign_extend_temp; 158 EMACS_INT sign_extend_temp;
191 return num | ((-1L) << VALBITS); 167 return num | ((-1L) << VALBITS);
192 else 168 else
193 return num & ((1L << VALBITS) - 1); 169 return num & ((1L << VALBITS) - 1);
194 } 170 }
195 171
196 /* characters do not need to sign extend so there's no need for special
197 futzing like with ints. */
198 #ifndef make_char
199 Lisp_Object
200 make_char (Emchar num)
201 {
202 Lisp_Object val;
203 #ifdef USE_MINIMAL_TAGBITS
204 XSETCHAR (val, num);
205 #else
206 XSETOBJ (val, Lisp_Type_Char, num);
207 #endif
208 return val;
209 }
210 #endif /* ! make_char */
211 172
212 /* Data type predicates */ 173 /* Data type predicates */
213 174
214 DEFUN ("eq", Feq, 2, 2, 0, /* 175 DEFUN ("eq", Feq, 2, 2, 0, /*
215 T if the two args are the same Lisp object. 176 Return t if the two args are the same Lisp object.
216 */ 177 */
217 (obj1, obj2)) 178 (obj1, obj2))
218 { 179 {
219 return EQ_WITH_EBOLA_NOTICE (obj1, obj2) ? Qt : Qnil; 180 return EQ_WITH_EBOLA_NOTICE (obj1, obj2) ? Qt : Qnil;
220 } 181 }
221 182
222 DEFUN ("old-eq", Fold_eq, 2, 2, 0, /* 183 DEFUN ("old-eq", Fold_eq, 2, 2, 0, /*
223 T if the two args are (in most cases) the same Lisp object. 184 Return t if the two args are (in most cases) the same Lisp object.
224 185
225 Special kludge: A character is considered `old-eq' to its equivalent integer 186 Special kludge: A character is considered `old-eq' to its equivalent integer
226 even though they are not the same object and are in fact of different 187 even though they are not the same object and are in fact of different
227 types. This is ABSOLUTELY AND UTTERLY HORRENDOUS but is necessary to 188 types. This is ABSOLUTELY AND UTTERLY HORRENDOUS but is necessary to
228 preserve byte-code compatibility with v19. This kludge is known as the 189 preserve byte-code compatibility with v19. This kludge is known as the
236 /* #### blasphemy */ 197 /* #### blasphemy */
237 return HACKEQ_UNSAFE (obj1, obj2) ? Qt : Qnil; 198 return HACKEQ_UNSAFE (obj1, obj2) ? Qt : Qnil;
238 } 199 }
239 200
240 DEFUN ("null", Fnull, 1, 1, 0, /* 201 DEFUN ("null", Fnull, 1, 1, 0, /*
241 T if OBJECT is nil. 202 Return t if OBJECT is nil.
242 */ 203 */
243 (object)) 204 (object))
244 { 205 {
245 return NILP (object) ? Qt : Qnil; 206 return NILP (object) ? Qt : Qnil;
246 } 207 }
247 208
248 DEFUN ("consp", Fconsp, 1, 1, 0, /* 209 DEFUN ("consp", Fconsp, 1, 1, 0, /*
249 T if OBJECT is a cons cell. 210 Return t if OBJECT is a cons cell.
250 */ 211 */
251 (object)) 212 (object))
252 { 213 {
253 return CONSP (object) ? Qt : Qnil; 214 return CONSP (object) ? Qt : Qnil;
254 } 215 }
255 216
256 DEFUN ("atom", Fatom, 1, 1, 0, /* 217 DEFUN ("atom", Fatom, 1, 1, 0, /*
257 T if OBJECT is not a cons cell. This includes nil. 218 Return t if OBJECT is not a cons cell. Atoms include nil.
258 */ 219 */
259 (object)) 220 (object))
260 { 221 {
261 return CONSP (object) ? Qnil : Qt; 222 return CONSP (object) ? Qnil : Qt;
262 } 223 }
263 224
264 DEFUN ("listp", Flistp, 1, 1, 0, /* 225 DEFUN ("listp", Flistp, 1, 1, 0, /*
265 T if OBJECT is a list. This includes nil. 226 Return t if OBJECT is a list. Lists includes nil.
266 */ 227 */
267 (object)) 228 (object))
268 { 229 {
269 return CONSP (object) || NILP (object) ? Qt : Qnil; 230 return LISTP (object) ? Qt : Qnil;
270 } 231 }
271 232
272 DEFUN ("nlistp", Fnlistp, 1, 1, 0, /* 233 DEFUN ("nlistp", Fnlistp, 1, 1, 0, /*
273 T if OBJECT is not a list. Lists include nil. 234 Return t if OBJECT is not a list. Lists include nil.
274 */ 235 */
275 (object)) 236 (object))
276 { 237 {
277 return CONSP (object) || NILP (object) ? Qnil : Qt; 238 return LISTP (object) ? Qnil : Qt;
239 }
240
241 DEFUN ("true-list-p", Ftrue_list_p, 1, 1, 0, /*
242 Return t if OBJECT is a non-dotted, i.e. nil-terminated, list.
243 */
244 (object))
245 {
246 return TRUE_LIST_P (object) ? Qt : Qnil;
278 } 247 }
279 248
280 DEFUN ("symbolp", Fsymbolp, 1, 1, 0, /* 249 DEFUN ("symbolp", Fsymbolp, 1, 1, 0, /*
281 T if OBJECT is a symbol. 250 Return t if OBJECT is a symbol.
282 */ 251 */
283 (object)) 252 (object))
284 { 253 {
285 return SYMBOLP (object) ? Qt : Qnil; 254 return SYMBOLP (object) ? Qt : Qnil;
286 } 255 }
287 256
288 DEFUN ("keywordp", Fkeywordp, 1, 1, 0, /* 257 DEFUN ("keywordp", Fkeywordp, 1, 1, 0, /*
289 T if OBJECT is a keyword. 258 Return t if OBJECT is a keyword.
290 */ 259 */
291 (object)) 260 (object))
292 { 261 {
293 return KEYWORDP (object) ? Qt : Qnil; 262 return KEYWORDP (object) ? Qt : Qnil;
294 } 263 }
295 264
296 DEFUN ("vectorp", Fvectorp, 1, 1, 0, /* 265 DEFUN ("vectorp", Fvectorp, 1, 1, 0, /*
297 T if OBJECT is a vector. 266 REturn t if OBJECT is a vector.
298 */ 267 */
299 (object)) 268 (object))
300 { 269 {
301 return VECTORP (object) ? Qt : Qnil; 270 return VECTORP (object) ? Qt : Qnil;
302 } 271 }
303 272
304 DEFUN ("bit-vector-p", Fbit_vector_p, 1, 1, 0, /* 273 DEFUN ("bit-vector-p", Fbit_vector_p, 1, 1, 0, /*
305 T if OBJECT is a bit vector. 274 Return t if OBJECT is a bit vector.
306 */ 275 */
307 (object)) 276 (object))
308 { 277 {
309 return BIT_VECTORP (object) ? Qt : Qnil; 278 return BIT_VECTORP (object) ? Qt : Qnil;
310 } 279 }
311 280
312 DEFUN ("stringp", Fstringp, 1, 1, 0, /* 281 DEFUN ("stringp", Fstringp, 1, 1, 0, /*
313 T if OBJECT is a string. 282 Return t if OBJECT is a string.
314 */ 283 */
315 (object)) 284 (object))
316 { 285 {
317 return STRINGP (object) ? Qt : Qnil; 286 return STRINGP (object) ? Qt : Qnil;
318 } 287 }
319 288
320 DEFUN ("arrayp", Farrayp, 1, 1, 0, /* 289 DEFUN ("arrayp", Farrayp, 1, 1, 0, /*
321 T if OBJECT is an array (string, vector, or bit vector). 290 Return t if OBJECT is an array (string, vector, or bit vector).
322 */ 291 */
323 (object)) 292 (object))
324 { 293 {
325 return (VECTORP (object) || 294 return (VECTORP (object) ||
326 STRINGP (object) || 295 STRINGP (object) ||
327 BIT_VECTORP (object)) 296 BIT_VECTORP (object))
328 ? Qt : Qnil; 297 ? Qt : Qnil;
329 } 298 }
330 299
331 DEFUN ("sequencep", Fsequencep, 1, 1, 0, /* 300 DEFUN ("sequencep", Fsequencep, 1, 1, 0, /*
332 T if OBJECT is a sequence (list or array). 301 Return t if OBJECT is a sequence (list or array).
333 */ 302 */
334 (object)) 303 (object))
335 { 304 {
336 return (CONSP (object) || 305 return (CONSP (object) ||
337 NILP (object) || 306 NILP (object) ||
338 VECTORP (object) || 307 VECTORP (object) ||
339 STRINGP (object) || 308 STRINGP (object) ||
340 BIT_VECTORP (object)) 309 BIT_VECTORP (object))
341 ? Qt : Qnil; 310 ? Qt : Qnil;
342 } 311 }
343 312
344 DEFUN ("markerp", Fmarkerp, 1, 1, 0, /* 313 DEFUN ("markerp", Fmarkerp, 1, 1, 0, /*
345 T if OBJECT is a marker (editor pointer). 314 Return t if OBJECT is a marker (editor pointer).
346 */ 315 */
347 (object)) 316 (object))
348 { 317 {
349 return MARKERP (object) ? Qt : Qnil; 318 return MARKERP (object) ? Qt : Qnil;
350 } 319 }
351 320
352 DEFUN ("subrp", Fsubrp, 1, 1, 0, /* 321 DEFUN ("subrp", Fsubrp, 1, 1, 0, /*
353 T if OBJECT is a built-in function. 322 Return t if OBJECT is a built-in function.
354 */ 323 */
355 (object)) 324 (object))
356 { 325 {
357 return SUBRP (object) ? Qt : Qnil; 326 return SUBRP (object) ? Qt : Qnil;
358 } 327 }
393 prompt = XSUBR (subr)->prompt; 362 prompt = XSUBR (subr)->prompt;
394 return prompt ? list2 (Qinteractive, build_string (prompt)) : Qnil; 363 return prompt ? list2 (Qinteractive, build_string (prompt)) : Qnil;
395 } 364 }
396 365
397 DEFUN ("compiled-function-p", Fcompiled_function_p, 1, 1, 0, /* 366 DEFUN ("compiled-function-p", Fcompiled_function_p, 1, 1, 0, /*
398 t if OBJECT is a byte-compiled function object. 367 Return t if OBJECT is a byte-compiled function object.
399 */ 368 */
400 (object)) 369 (object))
401 { 370 {
402 return COMPILED_FUNCTIONP (object) ? Qt : Qnil; 371 return COMPILED_FUNCTIONP (object) ? Qt : Qnil;
403 } 372 }
404 373
405 374
406 DEFUN ("characterp", Fcharacterp, 1, 1, 0, /* 375 DEFUN ("characterp", Fcharacterp, 1, 1, 0, /*
407 t if OBJECT is a character. 376 Return t if OBJECT is a character.
408 Unlike in XEmacs v19 and Emacs, a character is its own primitive type. 377 Unlike in XEmacs v19 and Emacs, a character is its own primitive type.
409 Any character can be converted into an equivalent integer using 378 Any character can be converted into an equivalent integer using
410 `char-to-int'. To convert the other way, use `int-to-char'; however, 379 `char-to-int'. To convert the other way, use `int-to-char'; however,
411 only some integers can be converted into characters. Such an integer 380 only some integers can be converted into characters. Such an integer
412 is called a `char-int'; see `char-int-p'. 381 is called a `char-int'; see `char-int-p'.
462 else 431 else
463 return Qnil; 432 return Qnil;
464 } 433 }
465 434
466 DEFUN ("char-int-p", Fchar_int_p, 1, 1, 0, /* 435 DEFUN ("char-int-p", Fchar_int_p, 1, 1, 0, /*
467 t if OBJECT is an integer that can be converted into a character. 436 Return t if OBJECT is an integer that can be converted into a character.
468 See `char-to-int'. 437 See `char-to-int'.
469 */ 438 */
470 (object)) 439 (object))
471 { 440 {
472 return CHAR_INTP (object) ? Qt : Qnil; 441 return CHAR_INTP (object) ? Qt : Qnil;
473 } 442 }
474 443
475 DEFUN ("char-or-char-int-p", Fchar_or_char_int_p, 1, 1, 0, /* 444 DEFUN ("char-or-char-int-p", Fchar_or_char_int_p, 1, 1, 0, /*
476 t if OBJECT is a character or an integer that can be converted into one. 445 Return t if OBJECT is a character or an integer that can be converted into one.
477 */ 446 */
478 (object)) 447 (object))
479 { 448 {
480 return CHAR_OR_CHAR_INTP (object) ? Qt : Qnil; 449 return CHAR_OR_CHAR_INTP (object) ? Qt : Qnil;
481 } 450 }
482 451
483 DEFUN ("char-or-string-p", Fchar_or_string_p, 1, 1, 0, /* 452 DEFUN ("char-or-string-p", Fchar_or_string_p, 1, 1, 0, /*
484 t if OBJECT is a character (or a char-int) or a string. 453 Return t if OBJECT is a character (or a char-int) or a string.
485 It is semi-hateful that we allow a char-int here, as it goes against 454 It is semi-hateful that we allow a char-int here, as it goes against
486 the name of this function, but it makes the most sense considering the 455 the name of this function, but it makes the most sense considering the
487 other steps we take to maintain compatibility with the old character/integer 456 other steps we take to maintain compatibility with the old character/integer
488 confoundedness in older versions of E-Lisp. 457 confoundedness in older versions of E-Lisp.
489 */ 458 */
491 { 460 {
492 return CHAR_OR_CHAR_INTP (object) || STRINGP (object) ? Qt : Qnil; 461 return CHAR_OR_CHAR_INTP (object) || STRINGP (object) ? Qt : Qnil;
493 } 462 }
494 463
495 DEFUN ("integerp", Fintegerp, 1, 1, 0, /* 464 DEFUN ("integerp", Fintegerp, 1, 1, 0, /*
496 t if OBJECT is an integer. 465 Return t if OBJECT is an integer.
497 */ 466 */
498 (object)) 467 (object))
499 { 468 {
500 return INTP (object) ? Qt : Qnil; 469 return INTP (object) ? Qt : Qnil;
501 } 470 }
502 471
503 DEFUN ("integer-or-marker-p", Finteger_or_marker_p, 1, 1, 0, /* 472 DEFUN ("integer-or-marker-p", Finteger_or_marker_p, 1, 1, 0, /*
504 t if OBJECT is an integer or a marker (editor pointer). 473 Return t if OBJECT is an integer or a marker (editor pointer).
505 */ 474 */
506 (object)) 475 (object))
507 { 476 {
508 return INTP (object) || MARKERP (object) ? Qt : Qnil; 477 return INTP (object) || MARKERP (object) ? Qt : Qnil;
509 } 478 }
510 479
511 DEFUN ("integer-or-char-p", Finteger_or_char_p, 1, 1, 0, /* 480 DEFUN ("integer-or-char-p", Finteger_or_char_p, 1, 1, 0, /*
512 t if OBJECT is an integer or a character. 481 Return t if OBJECT is an integer or a character.
513 */ 482 */
514 (object)) 483 (object))
515 { 484 {
516 return INTP (object) || CHARP (object) ? Qt : Qnil; 485 return INTP (object) || CHARP (object) ? Qt : Qnil;
517 } 486 }
518 487
519 DEFUN ("integer-char-or-marker-p", Finteger_char_or_marker_p, 1, 1, 0, /* 488 DEFUN ("integer-char-or-marker-p", Finteger_char_or_marker_p, 1, 1, 0, /*
520 t if OBJECT is an integer, character or a marker (editor pointer). 489 Return t if OBJECT is an integer, character or a marker (editor pointer).
521 */ 490 */
522 (object)) 491 (object))
523 { 492 {
524 return INTP (object) || CHARP (object) || MARKERP (object) ? Qt : Qnil; 493 return INTP (object) || CHARP (object) || MARKERP (object) ? Qt : Qnil;
525 } 494 }
526 495
527 DEFUN ("natnump", Fnatnump, 1, 1, 0, /* 496 DEFUN ("natnump", Fnatnump, 1, 1, 0, /*
528 t if OBJECT is a nonnegative integer. 497 Return t if OBJECT is a nonnegative integer.
529 */ 498 */
530 (object)) 499 (object))
531 { 500 {
532 return NATNUMP (object) ? Qt : Qnil; 501 return NATNUMP (object) ? Qt : Qnil;
533 } 502 }
534 503
535 DEFUN ("bitp", Fbitp, 1, 1, 0, /* 504 DEFUN ("bitp", Fbitp, 1, 1, 0, /*
536 t if OBJECT is a bit (0 or 1). 505 Return t if OBJECT is a bit (0 or 1).
537 */ 506 */
538 (object)) 507 (object))
539 { 508 {
540 return BITP (object) ? Qt : Qnil; 509 return BITP (object) ? Qt : Qnil;
541 } 510 }
542 511
543 DEFUN ("numberp", Fnumberp, 1, 1, 0, /* 512 DEFUN ("numberp", Fnumberp, 1, 1, 0, /*
544 t if OBJECT is a number (floating point or integer). 513 Return t if OBJECT is a number (floating point or integer).
545 */ 514 */
546 (object)) 515 (object))
547 { 516 {
548 return INT_OR_FLOATP (object) ? Qt : Qnil; 517 return INT_OR_FLOATP (object) ? Qt : Qnil;
549 } 518 }
550 519
551 DEFUN ("number-or-marker-p", Fnumber_or_marker_p, 1, 1, 0, /* 520 DEFUN ("number-or-marker-p", Fnumber_or_marker_p, 1, 1, 0, /*
552 t if OBJECT is a number or a marker. 521 Return t if OBJECT is a number or a marker.
553 */ 522 */
554 (object)) 523 (object))
555 { 524 {
556 return INT_OR_FLOATP (object) || MARKERP (object) ? Qt : Qnil; 525 return INT_OR_FLOATP (object) || MARKERP (object) ? Qt : Qnil;
557 } 526 }
558 527
559 DEFUN ("number-char-or-marker-p", Fnumber_char_or_marker_p, 1, 1, 0, /* 528 DEFUN ("number-char-or-marker-p", Fnumber_char_or_marker_p, 1, 1, 0, /*
560 t if OBJECT is a number, character or a marker. 529 Return t if OBJECT is a number, character or a marker.
561 */ 530 */
562 (object)) 531 (object))
563 { 532 {
564 return (INT_OR_FLOATP (object) || 533 return (INT_OR_FLOATP (object) ||
565 CHARP (object) || 534 CHARP (object) ||
567 ? Qt : Qnil; 536 ? Qt : Qnil;
568 } 537 }
569 538
570 #ifdef LISP_FLOAT_TYPE 539 #ifdef LISP_FLOAT_TYPE
571 DEFUN ("floatp", Ffloatp, 1, 1, 0, /* 540 DEFUN ("floatp", Ffloatp, 1, 1, 0, /*
572 t if OBJECT is a floating point number. 541 Return t if OBJECT is a floating point number.
573 */ 542 */
574 (object)) 543 (object))
575 { 544 {
576 return FLOATP (object) ? Qt : Qnil; 545 return FLOATP (object) ? Qt : Qnil;
577 } 546 }
608 if (CONSP (list)) 577 if (CONSP (list))
609 return XCAR (list); 578 return XCAR (list);
610 else if (NILP (list)) 579 else if (NILP (list))
611 return Qnil; 580 return Qnil;
612 else 581 else
613 list = wrong_type_argument (Qconsp, list); 582 list = wrong_type_argument (Qlistp, list);
614 } 583 }
615 } 584 }
616 585
617 DEFUN ("car-safe", Fcar_safe, 1, 1, 0, /* 586 DEFUN ("car-safe", Fcar_safe, 1, 1, 0, /*
618 Return the car of OBJECT if it is a cons cell, or else nil. 587 Return the car of OBJECT if it is a cons cell, or else nil.
633 if (CONSP (list)) 602 if (CONSP (list))
634 return XCDR (list); 603 return XCDR (list);
635 else if (NILP (list)) 604 else if (NILP (list))
636 return Qnil; 605 return Qnil;
637 else 606 else
638 list = wrong_type_argument (Qconsp, list); 607 list = wrong_type_argument (Qlistp, list);
639 } 608 }
640 } 609 }
641 610
642 DEFUN ("cdr-safe", Fcdr_safe, 1, 1, 0, /* 611 DEFUN ("cdr-safe", Fcdr_safe, 1, 1, 0, /*
643 Return the cdr of OBJECT if it is a cons cell, or else nil. 612 Return the cdr of OBJECT if it is a cons cell, else nil.
644 */ 613 */
645 (object)) 614 (object))
646 { 615 {
647 return CONSP (object) ? XCDR (object) : Qnil; 616 return CONSP (object) ? XCDR (object) : Qnil;
648 } 617 }
649 618
650 DEFUN ("setcar", Fsetcar, 2, 2, 0, /* 619 DEFUN ("setcar", Fsetcar, 2, 2, 0, /*
651 Set the car of CONSCELL to be NEWCAR. Returns NEWCAR. 620 Set the car of CONSCELL to be NEWCAR. Return NEWCAR.
652 */ 621 */
653 (conscell, newcar)) 622 (conscell, newcar))
654 { 623 {
655 if (!CONSP (conscell)) 624 if (!CONSP (conscell))
656 conscell = wrong_type_argument (Qconsp, conscell); 625 conscell = wrong_type_argument (Qconsp, conscell);
659 XCAR (conscell) = newcar; 628 XCAR (conscell) = newcar;
660 return newcar; 629 return newcar;
661 } 630 }
662 631
663 DEFUN ("setcdr", Fsetcdr, 2, 2, 0, /* 632 DEFUN ("setcdr", Fsetcdr, 2, 2, 0, /*
664 Set the cdr of CONSCELL to be NEWCDR. Returns NEWCDR. 633 Set the cdr of CONSCELL to be NEWCDR. Return NEWCDR.
665 */ 634 */
666 (conscell, newcdr)) 635 (conscell, newcdr))
667 { 636 {
668 if (!CONSP (conscell)) 637 if (!CONSP (conscell))
669 conscell = wrong_type_argument (Qconsp, conscell); 638 conscell = wrong_type_argument (Qconsp, conscell);
751 if (idxval >= bit_vector_length (XBIT_VECTOR (array))) goto lose; 720 if (idxval >= bit_vector_length (XBIT_VECTOR (array))) goto lose;
752 return make_int (bit_vector_bit (XBIT_VECTOR (array), idxval)); 721 return make_int (bit_vector_bit (XBIT_VECTOR (array), idxval));
753 } 722 }
754 else if (STRINGP (array)) 723 else if (STRINGP (array))
755 { 724 {
756 if (idxval >= string_char_length (XSTRING (array))) goto lose; 725 if (idxval >= XSTRING_CHAR_LENGTH (array)) goto lose;
757 return make_char (string_char (XSTRING (array), idxval)); 726 return make_char (string_char (XSTRING (array), idxval));
758 } 727 }
759 #ifdef LOSING_BYTECODE 728 #ifdef LOSING_BYTECODE
760 else if (COMPILED_FUNCTIONP (array)) 729 else if (COMPILED_FUNCTIONP (array))
761 { 730 {
803 set_bit_vector_bit (XBIT_VECTOR (array), idxval, !ZEROP (newval)); 772 set_bit_vector_bit (XBIT_VECTOR (array), idxval, !ZEROP (newval));
804 } 773 }
805 else /* string */ 774 else /* string */
806 { 775 {
807 CHECK_CHAR_COERCE_INT (newval); 776 CHECK_CHAR_COERCE_INT (newval);
808 if (idxval >= string_char_length (XSTRING (array))) goto lose; 777 if (idxval >= XSTRING_CHAR_LENGTH (array)) goto lose;
809 set_string_char (XSTRING (array), idxval, XCHAR (newval)); 778 set_string_char (XSTRING (array), idxval, XCHAR (newval));
810 bump_string_modiff (array); 779 bump_string_modiff (array);
811 } 780 }
812 781
813 return newval; 782 return newval;
1014 CHECK_INT_OR_FLOAT_COERCE_CHAR_OR_MARKER (num2); 983 CHECK_INT_OR_FLOAT_COERCE_CHAR_OR_MARKER (num2);
1015 984
1016 #ifdef LISP_FLOAT_TYPE 985 #ifdef LISP_FLOAT_TYPE
1017 if (FLOATP (num1) || FLOATP (num2)) 986 if (FLOATP (num1) || FLOATP (num2))
1018 { 987 {
1019 double f1 = (FLOATP (num1)) ? float_data (XFLOAT (num1)) : XINT (num1); 988 double f1 = FLOATP (num1) ? float_data (XFLOAT (num1)) : XINT (num1);
1020 double f2 = (FLOATP (num2)) ? float_data (XFLOAT (num2)) : XINT (num2); 989 double f2 = FLOATP (num2) ? float_data (XFLOAT (num2)) : XINT (num2);
1021 990
1022 switch (comparison) 991 switch (comparison)
1023 { 992 {
1024 case equal: return f1 == f2 ? Qt : Qnil; 993 case equal: return f1 == f2 ? Qt : Qnil;
1025 case notequal: return f1 != f2 ? Qt : Qnil; 994 case notequal: return f1 != f2 ? Qt : Qnil;
1044 abort (); 1013 abort ();
1045 return Qnil; /* suppress compiler warning */ 1014 return Qnil; /* suppress compiler warning */
1046 } 1015 }
1047 1016
1048 DEFUN ("=", Feqlsign, 2, 2, 0, /* 1017 DEFUN ("=", Feqlsign, 2, 2, 0, /*
1049 T if two args, both numbers, characters or markers, are equal. 1018 Return t if two args, both numbers, characters or markers, are equal.
1050 */ 1019 */
1051 (num1, num2)) 1020 (num1, num2))
1052 { 1021 {
1053 return arithcompare (num1, num2, equal); 1022 return arithcompare (num1, num2, equal);
1054 } 1023 }
1055 1024
1056 DEFUN ("<", Flss, 2, 2, 0, /* 1025 DEFUN ("<", Flss, 2, 2, 0, /*
1057 T if first arg is less than second arg. 1026 Return t if first arg is less than second arg.
1058 Both must be numbers, characters or markers. 1027 Both must be numbers, characters or markers.
1059 */ 1028 */
1060 (num1, num2)) 1029 (num1, num2))
1061 { 1030 {
1062 return arithcompare (num1, num2, less); 1031 return arithcompare (num1, num2, less);
1063 } 1032 }
1064 1033
1065 DEFUN (">", Fgtr, 2, 2, 0, /* 1034 DEFUN (">", Fgtr, 2, 2, 0, /*
1066 T if first arg is greater than second arg. 1035 Return t if first arg is greater than second arg.
1067 Both must be numbers, characters or markers. 1036 Both must be numbers, characters or markers.
1068 */ 1037 */
1069 (num1, num2)) 1038 (num1, num2))
1070 { 1039 {
1071 return arithcompare (num1, num2, grtr); 1040 return arithcompare (num1, num2, grtr);
1072 } 1041 }
1073 1042
1074 DEFUN ("<=", Fleq, 2, 2, 0, /* 1043 DEFUN ("<=", Fleq, 2, 2, 0, /*
1075 T if first arg is less than or equal to second arg. 1044 Return t if first arg is less than or equal to second arg.
1076 Both must be numbers, characters or markers. 1045 Both must be numbers, characters or markers.
1077 */ 1046 */
1078 (num1, num2)) 1047 (num1, num2))
1079 { 1048 {
1080 return arithcompare (num1, num2, less_or_equal); 1049 return arithcompare (num1, num2, less_or_equal);
1081 } 1050 }
1082 1051
1083 DEFUN (">=", Fgeq, 2, 2, 0, /* 1052 DEFUN (">=", Fgeq, 2, 2, 0, /*
1084 T if first arg is greater than or equal to second arg. 1053 Return t if first arg is greater than or equal to second arg.
1085 Both must be numbers, characters or markers. 1054 Both must be numbers, characters or markers.
1086 */ 1055 */
1087 (num1, num2)) 1056 (num1, num2))
1088 { 1057 {
1089 return arithcompare (num1, num2, grtr_or_equal); 1058 return arithcompare (num1, num2, grtr_or_equal);
1090 } 1059 }
1091 1060
1092 DEFUN ("/=", Fneq, 2, 2, 0, /* 1061 DEFUN ("/=", Fneq, 2, 2, 0, /*
1093 T if first arg is not equal to second arg. 1062 Return t if first arg is not equal to second arg.
1094 Both must be numbers, characters or markers. 1063 Both must be numbers, characters or markers.
1095 */ 1064 */
1096 (num1, num2)) 1065 (num1, num2))
1097 { 1066 {
1098 return arithcompare (num1, num2, notequal); 1067 return arithcompare (num1, num2, notequal);
1112 1081
1113 return Qt; 1082 return Qt;
1114 } 1083 }
1115 1084
1116 xxxDEFUN ("=", Feqlsign, 1, MANY, 0, /* 1085 xxxDEFUN ("=", Feqlsign, 1, MANY, 0, /*
1117 T if all the arguments are equal. 1086 Return t if all the arguments are equal.
1118 The arguments may be numbers, characters or markers. 1087 The arguments may be numbers, characters or markers.
1119 */ 1088 */
1120 (int nargs, Lisp_Object *args)) 1089 (int nargs, Lisp_Object *args))
1121 { 1090 {
1122 return arithcompare (equal, nargs, args); 1091 return arithcompare (equal, nargs, args);
1123 } 1092 }
1124 1093
1125 xxxDEFUN ("<", Flss, 1, MANY, 0, /* 1094 xxxDEFUN ("<", Flss, 1, MANY, 0, /*
1126 T if the sequence of arguments is monotonically increasing. 1095 Return t if the sequence of arguments is monotonically increasing.
1127 The arguments may be numbers, characters or markers. 1096 The arguments may be numbers, characters or markers.
1128 */ 1097 */
1129 (int nargs, Lisp_Object *args)) 1098 (int nargs, Lisp_Object *args))
1130 { 1099 {
1131 return arithcompare (less, nargs, args); 1100 return arithcompare (less, nargs, args);
1132 } 1101 }
1133 1102
1134 xxxDEFUN (">", Fgtr, 1, MANY, 0, /* 1103 xxxDEFUN (">", Fgtr, 1, MANY, 0, /*
1135 T if the sequence of arguments is monotonically decreasing. 1104 Return t if the sequence of arguments is monotonically decreasing.
1136 The arguments may be numbers, characters or markers. 1105 The arguments may be numbers, characters or markers.
1137 */ 1106 */
1138 (int nargs, Lisp_Object *args)) 1107 (int nargs, Lisp_Object *args))
1139 { 1108 {
1140 return arithcompare (grtr, nargs, args); 1109 return arithcompare (grtr, nargs, args);
1141 } 1110 }
1142 1111
1143 xxxDEFUN ("<=", Fleq, 1, MANY, 0, /* 1112 xxxDEFUN ("<=", Fleq, 1, MANY, 0, /*
1144 T if the sequence of arguments is monotonically nondecreasing. 1113 Return t if the sequence of arguments is monotonically nondecreasing.
1145 The arguments may be numbers, characters or markers. 1114 The arguments may be numbers, characters or markers.
1146 */ 1115 */
1147 (int nargs, Lisp_Object *args)) 1116 (int nargs, Lisp_Object *args))
1148 { 1117 {
1149 return arithcompare (less_or_equal, nargs, args); 1118 return arithcompare (less_or_equal, nargs, args);
1150 } 1119 }
1151 1120
1152 xxxDEFUN (">=", Fgeq, 1, MANY, 0, /* 1121 xxxDEFUN (">=", Fgeq, 1, MANY, 0, /*
1153 T if the sequence of arguments is monotonically nonincreasing. 1122 Return t if the sequence of arguments is monotonically nonincreasing.
1154 The arguments may be numbers, characters or markers. 1123 The arguments may be numbers, characters or markers.
1155 */ 1124 */
1156 (int nargs, Lisp_Object *args)) 1125 (int nargs, Lisp_Object *args))
1157 { 1126 {
1158 return arithcompare_many (grtr_or_equal, nargs, args); 1127 return arithcompare_many (grtr_or_equal, nargs, args);
1159 } 1128 }
1160 1129
1161 xxxDEFUN ("/=", Fneq, 1, MANY, 0, /* 1130 xxxDEFUN ("/=", Fneq, 1, MANY, 0, /*
1162 T if the sequence of arguments is monotonically increasing. 1131 Return t if the sequence of arguments is monotonically increasing.
1163 The arguments may be numbers, characters or markers. 1132 The arguments may be numbers, characters or markers.
1164 */ 1133 */
1165 (int nargs, Lisp_Object *args)) 1134 (int nargs, Lisp_Object *args))
1166 { 1135 {
1167 return arithcompare_many (notequal, nargs, args); 1136 return arithcompare_many (notequal, nargs, args);
1168 } 1137 }
1169 #endif /* 0 - disabled for now */ 1138 #endif /* 0 - disabled for now */
1170 1139
1171 DEFUN ("zerop", Fzerop, 1, 1, 0, /* 1140 DEFUN ("zerop", Fzerop, 1, 1, 0, /*
1172 T if NUMBER is zero. 1141 Return t if NUMBER is zero.
1173 */ 1142 */
1174 (number)) 1143 (number))
1175 { 1144 {
1176 CHECK_INT_OR_FLOAT (number); 1145 CHECK_INT_OR_FLOAT (number);
1177 1146
1178 #ifdef LISP_FLOAT_TYPE 1147 #ifdef LISP_FLOAT_TYPE
1179 if (FLOATP (number)) 1148 if (FLOATP (number))
1180 return float_data (XFLOAT (number)) == 0.0 ? Qt : Qnil; 1149 return float_data (XFLOAT (number)) == 0.0 ? Qt : Qnil;
1181 #endif /* LISP_FLOAT_TYPE */ 1150 #endif /* LISP_FLOAT_TYPE */
1182 1151
1183 return XINT (number) == 0 ? Qt : Qnil; 1152 return EQ (number, Qzero) ? Qt : Qnil;
1184 } 1153 }
1185 1154
1186 /* Convert between a 32-bit value and a cons of two 16-bit values. 1155 /* Convert between a 32-bit value and a cons of two 16-bit values.
1187 This is used to pass 32-bit integers to and from the user. 1156 This is used to pass 32-bit integers to and from the user.
1188 Use time_to_lisp() and lisp_to_time() for time values. 1157 Use time_to_lisp() and lisp_to_time() for time values.
1238 } 1207 }
1239 1208
1240 static int 1209 static int
1241 digit_to_number (int character, int base) 1210 digit_to_number (int character, int base)
1242 { 1211 {
1243 int digit; 1212 /* Assumes ASCII */
1244 1213 int digit = ((character >= '0' && character <= '9') ? character - '0' :
1245 if (character >= '0' && character <= '9') 1214 (character >= 'a' && character <= 'z') ? character - 'a' + 10 :
1246 digit = character - '0'; 1215 (character >= 'A' && character <= 'Z') ? character - 'A' + 10 :
1247 else if (character >= 'a' && character <= 'z') 1216 -1);
1248 digit = character - 'a' + 10; 1217
1249 else if (character >= 'A' && character <= 'Z') 1218 return digit >= base ? -1 : digit;
1250 digit = character - 'A' + 10;
1251 else
1252 return -1;
1253
1254 if (digit >= base)
1255 return -1;
1256 else
1257 return digit;
1258 } 1219 }
1259 1220
1260 DEFUN ("string-to-number", Fstring_to_number, 1, 2, 0, /* 1221 DEFUN ("string-to-number", Fstring_to_number, 1, 2, 0, /*
1261 Convert STRING to a number by parsing it as a decimal number. 1222 Convert STRING to a number by parsing it as a decimal number.
1262 This parses both integers and floating point numbers. 1223 This parses both integers and floating point numbers.
1295 #endif /* LISP_FLOAT_TYPE */ 1256 #endif /* LISP_FLOAT_TYPE */
1296 1257
1297 if (b == 10) 1258 if (b == 10)
1298 { 1259 {
1299 /* Use the system-provided functions for base 10. */ 1260 /* Use the system-provided functions for base 10. */
1300 Lisp_Object value; 1261 #if SIZEOF_EMACS_INT == SIZEOF_INT
1301 if (sizeof (int) == sizeof (EMACS_INT)) 1262 return make_int (atoi (p));
1302 XSETINT (value, atoi (p)); 1263 #elif SIZEOF_EMACS_INT == SIZEOF_LONG
1303 else if (sizeof (long) == sizeof (EMACS_INT)) 1264 return make_int (atol (p));
1304 XSETINT (value, atol (p)); 1265 #elif SIZEOF_EMACS_INT == SIZEOF_LONG_LONG
1305 else 1266 return make_int (atoll (p));
1306 abort (); 1267 #endif
1307 return value;
1308 } 1268 }
1309 else 1269 else
1310 { 1270 {
1311 int digit, negative = 1; 1271 int digit, negative = 1;
1312 EMACS_INT v = 0; 1272 EMACS_INT v = 0;
1655 If COUNT is negative, shifting is actually to the right. 1615 If COUNT is negative, shifting is actually to the right.
1656 In this case, zeros are shifted in on the left. 1616 In this case, zeros are shifted in on the left.
1657 */ 1617 */
1658 (value, count)) 1618 (value, count))
1659 { 1619 {
1660 Lisp_Object val;
1661
1662 CHECK_INT_COERCE_CHAR (value); 1620 CHECK_INT_COERCE_CHAR (value);
1663 CHECK_INT (count); 1621 CHECK_INT (count);
1664 1622
1665 { 1623 return make_int (XINT (count) > 0 ?
1666 int C_count = XINT (count); 1624 XUINT (value) << XINT (count) :
1667 /* EMACS_UINT C_value = (EMACS_UINT) XUINT (value);*/ 1625 XUINT (value) >> -XINT (count));
1668 EMACS_UINT C_value = (EMACS_UINT) XUINT (value);
1669 XSETINT (val, C_count > 0 ? C_value << C_count : C_value >> -C_count);
1670 }
1671 return val;
1672 } 1626 }
1673 1627
1674 DEFUN ("1+", Fadd1, 1, 1, 0, /* 1628 DEFUN ("1+", Fadd1, 1, 1, 0, /*
1675 Return NUMBER plus one. NUMBER may be a number or a marker. 1629 Return NUMBER plus one. NUMBER may be a number or a marker.
1676 Markers and characters are converted to integers. 1630 Markers and characters are converted to integers.
1722 The basic idea is that we don't mark the elements during GC, but 1676 The basic idea is that we don't mark the elements during GC, but
1723 wait for them to be marked elsewhere. If they're not marked, we 1677 wait for them to be marked elsewhere. If they're not marked, we
1724 remove them. This is analogous to weak hashtables; see the explanation 1678 remove them. This is analogous to weak hashtables; see the explanation
1725 there for more info. */ 1679 there for more info. */
1726 1680
1727 static Lisp_Object mark_weak_list (Lisp_Object, void (*) (Lisp_Object));
1728 static void print_weak_list (Lisp_Object, Lisp_Object, int);
1729 static int weak_list_equal (Lisp_Object, Lisp_Object, int depth);
1730 static unsigned long weak_list_hash (Lisp_Object obj, int depth);
1731 DEFINE_LRECORD_IMPLEMENTATION ("weak-list", weak_list,
1732 mark_weak_list, print_weak_list,
1733 0, weak_list_equal, weak_list_hash,
1734 struct weak_list);
1735
1736 static Lisp_Object Vall_weak_lists; /* Gemarke es nicht!!! */ 1681 static Lisp_Object Vall_weak_lists; /* Gemarke es nicht!!! */
1737 1682
1738 static Lisp_Object encode_weak_list_type (enum weak_list_type type); 1683 static Lisp_Object encode_weak_list_type (enum weak_list_type type);
1739 1684
1740 static Lisp_Object 1685 static Lisp_Object
1777 } 1722 }
1778 1723
1779 Lisp_Object 1724 Lisp_Object
1780 make_weak_list (enum weak_list_type type) 1725 make_weak_list (enum weak_list_type type)
1781 { 1726 {
1782 Lisp_Object result = Qnil; 1727 Lisp_Object result;
1783 struct weak_list *wl = 1728 struct weak_list *wl =
1784 alloc_lcrecord_type (struct weak_list, lrecord_weak_list); 1729 alloc_lcrecord_type (struct weak_list, lrecord_weak_list);
1785 1730
1786 wl->list = Qnil; 1731 wl->list = Qnil;
1787 wl->type = type; 1732 wl->type = type;
1789 wl->next_weak = Vall_weak_lists; 1734 wl->next_weak = Vall_weak_lists;
1790 Vall_weak_lists = result; 1735 Vall_weak_lists = result;
1791 return result; 1736 return result;
1792 } 1737 }
1793 1738
1739 DEFINE_LRECORD_IMPLEMENTATION ("weak-list", weak_list,
1740 mark_weak_list, print_weak_list,
1741 0, weak_list_equal, weak_list_hash,
1742 struct weak_list);
1794 /* 1743 /*
1795 -- we do not mark the list elements (either the elements themselves 1744 -- we do not mark the list elements (either the elements themselves
1796 or the cons cells that hold them) in the normal marking phase. 1745 or the cons cells that hold them) in the normal marking phase.
1797 -- at the end of marking, we go through all weak lists that are 1746 -- at the end of marking, we go through all weak lists that are
1798 marked, and mark the cons cells that hold all marked 1747 marked, and mark the cons cells that hold all marked
2074 { 2023 {
2075 return WEAK_LISTP (object) ? Qt : Qnil; 2024 return WEAK_LISTP (object) ? Qt : Qnil;
2076 } 2025 }
2077 2026
2078 DEFUN ("make-weak-list", Fmake_weak_list, 0, 1, 0, /* 2027 DEFUN ("make-weak-list", Fmake_weak_list, 0, 1, 0, /*
2079 Create a new weak list. 2028 Return a new weak list object of type TYPE.
2080 A weak list object is an object that contains a list. This list behaves 2029 A weak list object is an object that contains a list. This list behaves
2081 like any other list except that its elements do not count towards 2030 like any other list except that its elements do not count towards
2082 garbage collection -- if the only pointer to an object in inside a weak 2031 garbage collection -- if the only pointer to an object in inside a weak
2083 list (other than pointers in similar objects such as weak hash tables), 2032 list (other than pointers in similar objects such as weak hash tables),
2084 the object is garbage collected and automatically removed from the list. 2033 the object is garbage collected and automatically removed from the list.
2235 void 2184 void
2236 syms_of_data (void) 2185 syms_of_data (void)
2237 { 2186 {
2238 defsymbol (&Qcons, "cons"); 2187 defsymbol (&Qcons, "cons");
2239 defsymbol (&Qkeyword, "keyword"); 2188 defsymbol (&Qkeyword, "keyword");
2240 /* Qstring, Qinteger, Qsymbol, Qvector defined in general.c */
2241
2242 defsymbol (&Qquote, "quote"); 2189 defsymbol (&Qquote, "quote");
2243 defsymbol (&Qlambda, "lambda"); 2190 defsymbol (&Qlambda, "lambda");
2244 defsymbol (&Qsignal, "signal");
2245 defsymbol (&Qtop_level, "top-level");
2246 defsymbol (&Qignore, "ignore"); 2191 defsymbol (&Qignore, "ignore");
2247
2248 defsymbol (&Qlistp, "listp"); 2192 defsymbol (&Qlistp, "listp");
2193 defsymbol (&Qtrue_list_p, "true-list-p");
2249 defsymbol (&Qconsp, "consp"); 2194 defsymbol (&Qconsp, "consp");
2250 defsymbol (&Qsubrp, "subrp"); 2195 defsymbol (&Qsubrp, "subrp");
2251 defsymbol (&Qsymbolp, "symbolp"); 2196 defsymbol (&Qsymbolp, "symbolp");
2252 defsymbol (&Qkeywordp, "keywordp"); 2197 defsymbol (&Qkeywordp, "keywordp");
2253 defsymbol (&Qintegerp, "integerp"); 2198 defsymbol (&Qintegerp, "integerp");
2264 defsymbol (&Qchar_or_string_p, "char-or-string-p"); 2209 defsymbol (&Qchar_or_string_p, "char-or-string-p");
2265 defsymbol (&Qmarkerp, "markerp"); 2210 defsymbol (&Qmarkerp, "markerp");
2266 defsymbol (&Qinteger_or_marker_p, "integer-or-marker-p"); 2211 defsymbol (&Qinteger_or_marker_p, "integer-or-marker-p");
2267 defsymbol (&Qinteger_or_char_p, "integer-or-char-p"); 2212 defsymbol (&Qinteger_or_char_p, "integer-or-char-p");
2268 defsymbol (&Qinteger_char_or_marker_p, "integer-char-or-marker-p"); 2213 defsymbol (&Qinteger_char_or_marker_p, "integer-char-or-marker-p");
2214 defsymbol (&Qnumberp, "numberp");
2215 defsymbol (&Qnumber_or_marker_p, "number-or-marker-p");
2216 defsymbol (&Qnumber_char_or_marker_p, "number-char-or-marker-p");
2217 defsymbol (&Qcdr, "cdr");
2218 defsymbol (&Qweak_listp, "weak-list-p");
2269 2219
2270 #ifdef LISP_FLOAT_TYPE 2220 #ifdef LISP_FLOAT_TYPE
2271 defsymbol (&Qfloatp, "floatp"); 2221 defsymbol (&Qfloatp, "floatp");
2272 #endif /* LISP_FLOAT_TYPE */ 2222 #endif /* LISP_FLOAT_TYPE */
2273 defsymbol (&Qnumberp, "numberp");
2274 defsymbol (&Qnumber_or_marker_p, "number-or-marker-p");
2275 defsymbol (&Qnumber_char_or_marker_p, "number-char-or-marker-p");
2276
2277 defsymbol (&Qcdr, "cdr");
2278
2279 defsymbol (&Qweak_listp, "weak-list-p");
2280 2223
2281 DEFSUBR (Fwrong_type_argument); 2224 DEFSUBR (Fwrong_type_argument);
2282 2225
2283 DEFSUBR (Feq); 2226 DEFSUBR (Feq);
2284 DEFSUBR (Fold_eq); 2227 DEFSUBR (Fold_eq);
2285 DEFSUBR (Fnull); 2228 DEFSUBR (Fnull);
2286 DEFSUBR (Flistp); 2229 DEFSUBR (Flistp);
2287 DEFSUBR (Fnlistp); 2230 DEFSUBR (Fnlistp);
2231 DEFSUBR (Ftrue_list_p);
2288 DEFSUBR (Fconsp); 2232 DEFSUBR (Fconsp);
2289 DEFSUBR (Fatom); 2233 DEFSUBR (Fatom);
2290 DEFSUBR (Fchar_or_string_p); 2234 DEFSUBR (Fchar_or_string_p);
2291 DEFSUBR (Fcharacterp); 2235 DEFSUBR (Fcharacterp);
2292 DEFSUBR (Fchar_int_p); 2236 DEFSUBR (Fchar_int_p);