diff options
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 194 |
1 files changed, 79 insertions, 115 deletions
diff --git a/src/lisp.h b/src/lisp.h index 1fe6ebb13ab..0470e452899 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -325,7 +325,7 @@ enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = 1 }; | |||
| 325 | typedef EMACS_INT Lisp_Object; | 325 | typedef EMACS_INT Lisp_Object; |
| 326 | #define XLI(o) (o) | 326 | #define XLI(o) (o) |
| 327 | #define XIL(i) (i) | 327 | #define XIL(i) (i) |
| 328 | #define LISP_MAKE_RVALUE(o) (0+(o)) | 328 | #define LISP_MAKE_RVALUE(o) (0 + (o)) |
| 329 | #define LISP_INITIALLY_ZERO 0 | 329 | #define LISP_INITIALLY_ZERO 0 |
| 330 | enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = 0 }; | 330 | enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = 0 }; |
| 331 | #endif /* CHECK_LISP_OBJECT_TYPE */ | 331 | #endif /* CHECK_LISP_OBJECT_TYPE */ |
| @@ -422,9 +422,9 @@ enum lsb_bits | |||
| 422 | #define XINT(a) (XLI (a) >> INTTYPEBITS) | 422 | #define XINT(a) (XLI (a) >> INTTYPEBITS) |
| 423 | #define XUINT(a) ((EMACS_UINT) XLI (a) >> INTTYPEBITS) | 423 | #define XUINT(a) ((EMACS_UINT) XLI (a) >> INTTYPEBITS) |
| 424 | #define make_number(N) XIL ((EMACS_INT) (N) << INTTYPEBITS) | 424 | #define make_number(N) XIL ((EMACS_INT) (N) << INTTYPEBITS) |
| 425 | #define XSET(var, type, ptr) \ | 425 | #define make_lisp_ptr(ptr, type) \ |
| 426 | (eassert (XTYPE (XIL ((intptr_t) (ptr))) == 0), /* Check alignment. */ \ | 426 | (eassert (XTYPE (XIL ((intptr_t) (ptr))) == 0), /* Check alignment. */ \ |
| 427 | (var) = XIL ((type) | (intptr_t) (ptr))) | 427 | XIL ((type) | (intptr_t) (ptr))) |
| 428 | 428 | ||
| 429 | #define XPNTR(a) ((intptr_t) (XLI (a) & ~TYPEMASK)) | 429 | #define XPNTR(a) ((intptr_t) (XLI (a) & ~TYPEMASK)) |
| 430 | #define XUNTAG(a, type) ((intptr_t) (XLI (a) - (type))) | 430 | #define XUNTAG(a, type) ((intptr_t) (XLI (a) - (type))) |
| @@ -449,13 +449,13 @@ static EMACS_INT const VALMASK | |||
| 449 | #define XUINT(a) ((EMACS_UINT) (XLI (a) & INTMASK)) | 449 | #define XUINT(a) ((EMACS_UINT) (XLI (a) & INTMASK)) |
| 450 | #define make_number(N) XIL ((EMACS_INT) (N) & INTMASK) | 450 | #define make_number(N) XIL ((EMACS_INT) (N) & INTMASK) |
| 451 | 451 | ||
| 452 | #define XSET(var, type, ptr) \ | 452 | #define make_lisp_ptr(ptr, type) \ |
| 453 | ((var) = XIL ((EMACS_INT) ((EMACS_UINT) (type) << VALBITS) \ | 453 | (XIL ((EMACS_INT) ((EMACS_UINT) (type) << VALBITS) \ |
| 454 | + ((intptr_t) (ptr) & VALMASK))) | 454 | + ((intptr_t) (ptr) & VALMASK))) |
| 455 | 455 | ||
| 456 | #if DATA_SEG_BITS | 456 | #if DATA_SEG_BITS |
| 457 | /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers | 457 | /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers |
| 458 | which were stored in a Lisp_Object */ | 458 | which were stored in a Lisp_Object. */ |
| 459 | #define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK)) | DATA_SEG_BITS)) | 459 | #define XPNTR(a) ((uintptr_t) ((XLI (a) & VALMASK)) | DATA_SEG_BITS)) |
| 460 | #else | 460 | #else |
| 461 | #define XPNTR(a) ((uintptr_t) (XLI (a) & VALMASK)) | 461 | #define XPNTR(a) ((uintptr_t) (XLI (a) & VALMASK)) |
| @@ -559,16 +559,16 @@ clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper) | |||
| 559 | 559 | ||
| 560 | /* Construct a Lisp_Object from a value or address. */ | 560 | /* Construct a Lisp_Object from a value or address. */ |
| 561 | 561 | ||
| 562 | #define XSETINT(a, b) (a) = make_number (b) | 562 | #define XSETINT(a, b) ((a) = make_number (b)) |
| 563 | #define XSETCONS(a, b) XSET (a, Lisp_Cons, b) | 563 | #define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Lisp_Cons)) |
| 564 | #define XSETVECTOR(a, b) XSET (a, Lisp_Vectorlike, b) | 564 | #define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, Lisp_Vectorlike)) |
| 565 | #define XSETSTRING(a, b) XSET (a, Lisp_String, b) | 565 | #define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, Lisp_String)) |
| 566 | #define XSETSYMBOL(a, b) XSET (a, Lisp_Symbol, b) | 566 | #define XSETSYMBOL(a, b) ((a) = make_lisp_ptr (b, Lisp_Symbol)) |
| 567 | #define XSETFLOAT(a, b) XSET (a, Lisp_Float, b) | 567 | #define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, Lisp_Float)) |
| 568 | 568 | ||
| 569 | /* Misc types. */ | 569 | /* Misc types. */ |
| 570 | 570 | ||
| 571 | #define XSETMISC(a, b) XSET (a, Lisp_Misc, b) | 571 | #define XSETMISC(a, b) ((a) = make_lisp_ptr (b, Lisp_Misc)) |
| 572 | #define XSETMARKER(a, b) (XSETMISC (a, b), XMISCTYPE (a) = Lisp_Misc_Marker) | 572 | #define XSETMARKER(a, b) (XSETMISC (a, b), XMISCTYPE (a) = Lisp_Misc_Marker) |
| 573 | 573 | ||
| 574 | /* Pseudovector types. */ | 574 | /* Pseudovector types. */ |
| @@ -914,14 +914,6 @@ enum | |||
| 914 | (ASCII_CHAR_P (IDX) ? CHAR_TABLE_REF_ASCII ((CT), (IDX)) \ | 914 | (ASCII_CHAR_P (IDX) ? CHAR_TABLE_REF_ASCII ((CT), (IDX)) \ |
| 915 | : char_table_ref ((CT), (IDX))) | 915 | : char_table_ref ((CT), (IDX))) |
| 916 | 916 | ||
| 917 | /* Almost equivalent to Faref (CT, IDX). However, if the result is | ||
| 918 | not a character, return IDX. | ||
| 919 | |||
| 920 | For these characters, do not check validity of CT | ||
| 921 | and do not follow parent. */ | ||
| 922 | #define CHAR_TABLE_TRANSLATE(CT, IDX) \ | ||
| 923 | char_table_translate (CT, IDX) | ||
| 924 | |||
| 925 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and | 917 | /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and |
| 926 | 8-bit European characters. Do not check validity of CT. */ | 918 | 8-bit European characters. Do not check validity of CT. */ |
| 927 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ | 919 | #define CHAR_TABLE_SET(CT, IDX, VAL) \ |
| @@ -1210,9 +1202,9 @@ struct Lisp_Hash_Table | |||
| 1210 | struct Lisp_Hash_Table *next_weak; | 1202 | struct Lisp_Hash_Table *next_weak; |
| 1211 | 1203 | ||
| 1212 | /* C function to compare two keys. */ | 1204 | /* C function to compare two keys. */ |
| 1213 | int (*cmpfn) (struct Lisp_Hash_Table *, | 1205 | bool (*cmpfn) (struct Lisp_Hash_Table *, |
| 1214 | Lisp_Object, EMACS_UINT, | 1206 | Lisp_Object, EMACS_UINT, |
| 1215 | Lisp_Object, EMACS_UINT); | 1207 | Lisp_Object, EMACS_UINT); |
| 1216 | 1208 | ||
| 1217 | /* C function to compute hash code. */ | 1209 | /* C function to compute hash code. */ |
| 1218 | EMACS_UINT (*hashfn) (struct Lisp_Hash_Table *, Lisp_Object); | 1210 | EMACS_UINT (*hashfn) (struct Lisp_Hash_Table *, Lisp_Object); |
| @@ -1632,7 +1624,7 @@ typedef struct { | |||
| 1632 | int mouse_face_image_state; | 1624 | int mouse_face_image_state; |
| 1633 | } Mouse_HLInfo; | 1625 | } Mouse_HLInfo; |
| 1634 | 1626 | ||
| 1635 | /* Data type checking */ | 1627 | /* Data type checking. */ |
| 1636 | 1628 | ||
| 1637 | #define NILP(x) EQ (x, Qnil) | 1629 | #define NILP(x) EQ (x, Qnil) |
| 1638 | 1630 | ||
| @@ -2005,7 +1997,7 @@ struct specbinding | |||
| 2005 | { | 1997 | { |
| 2006 | Lisp_Object symbol, old_value; | 1998 | Lisp_Object symbol, old_value; |
| 2007 | specbinding_func func; | 1999 | specbinding_func func; |
| 2008 | Lisp_Object unused; /* Dividing by 16 is faster than by 12 */ | 2000 | Lisp_Object unused; /* Dividing by 16 is faster than by 12. */ |
| 2009 | }; | 2001 | }; |
| 2010 | 2002 | ||
| 2011 | extern struct specbinding *specpdl; | 2003 | extern struct specbinding *specpdl; |
| @@ -2293,7 +2285,7 @@ extern int gcpro_level; | |||
| 2293 | 2285 | ||
| 2294 | #define UNGCPRO \ | 2286 | #define UNGCPRO \ |
| 2295 | ((--gcpro_level != gcpro1.level) \ | 2287 | ((--gcpro_level != gcpro1.level) \ |
| 2296 | ? (abort (), 0) \ | 2288 | ? (emacs_abort (), 0) \ |
| 2297 | : ((gcprolist = gcpro1.next), 0)) | 2289 | : ((gcprolist = gcpro1.next), 0)) |
| 2298 | 2290 | ||
| 2299 | #endif /* DEBUG_GCPRO */ | 2291 | #endif /* DEBUG_GCPRO */ |
| @@ -2584,10 +2576,10 @@ extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; | |||
| 2584 | 2576 | ||
| 2585 | EXFUN (Fbyteorder, 0) ATTRIBUTE_CONST; | 2577 | EXFUN (Fbyteorder, 0) ATTRIBUTE_CONST; |
| 2586 | 2578 | ||
| 2587 | /* Defined in frame.c */ | 2579 | /* Defined in frame.c. */ |
| 2588 | extern Lisp_Object Qframep; | 2580 | extern Lisp_Object Qframep; |
| 2589 | 2581 | ||
| 2590 | /* Defined in data.c */ | 2582 | /* Defined in data.c. */ |
| 2591 | extern Lisp_Object indirect_function (Lisp_Object); | 2583 | extern Lisp_Object indirect_function (Lisp_Object); |
| 2592 | extern Lisp_Object find_symbol_value (Lisp_Object); | 2584 | extern Lisp_Object find_symbol_value (Lisp_Object); |
| 2593 | 2585 | ||
| @@ -2634,7 +2626,7 @@ extern void swap_in_global_binding (struct Lisp_Symbol *); | |||
| 2634 | extern void syms_of_cmds (void); | 2626 | extern void syms_of_cmds (void); |
| 2635 | extern void keys_of_cmds (void); | 2627 | extern void keys_of_cmds (void); |
| 2636 | 2628 | ||
| 2637 | /* Defined in coding.c */ | 2629 | /* Defined in coding.c. */ |
| 2638 | extern Lisp_Object Qcharset; | 2630 | extern Lisp_Object Qcharset; |
| 2639 | extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, | 2631 | extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, |
| 2640 | ptrdiff_t, bool, bool, Lisp_Object); | 2632 | ptrdiff_t, bool, bool, Lisp_Object); |
| @@ -2642,7 +2634,7 @@ extern void init_coding (void); | |||
| 2642 | extern void init_coding_once (void); | 2634 | extern void init_coding_once (void); |
| 2643 | extern void syms_of_coding (void); | 2635 | extern void syms_of_coding (void); |
| 2644 | 2636 | ||
| 2645 | /* Defined in character.c */ | 2637 | /* Defined in character.c. */ |
| 2646 | EXFUN (Fmax_char, 0) ATTRIBUTE_CONST; | 2638 | EXFUN (Fmax_char, 0) ATTRIBUTE_CONST; |
| 2647 | extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t); | 2639 | extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t); |
| 2648 | extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t); | 2640 | extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t); |
| @@ -2650,21 +2642,21 @@ extern int multibyte_char_to_unibyte (int) ATTRIBUTE_CONST; | |||
| 2650 | extern int multibyte_char_to_unibyte_safe (int) ATTRIBUTE_CONST; | 2642 | extern int multibyte_char_to_unibyte_safe (int) ATTRIBUTE_CONST; |
| 2651 | extern void syms_of_character (void); | 2643 | extern void syms_of_character (void); |
| 2652 | 2644 | ||
| 2653 | /* Defined in charset.c */ | 2645 | /* Defined in charset.c. */ |
| 2654 | extern void init_charset (void); | 2646 | extern void init_charset (void); |
| 2655 | extern void init_charset_once (void); | 2647 | extern void init_charset_once (void); |
| 2656 | extern void syms_of_charset (void); | 2648 | extern void syms_of_charset (void); |
| 2657 | /* Structure forward declarations. */ | 2649 | /* Structure forward declarations. */ |
| 2658 | struct charset; | 2650 | struct charset; |
| 2659 | 2651 | ||
| 2660 | /* Defined in composite.c */ | 2652 | /* Defined in composite.c. */ |
| 2661 | extern void syms_of_composite (void); | 2653 | extern void syms_of_composite (void); |
| 2662 | 2654 | ||
| 2663 | /* Defined in syntax.c */ | 2655 | /* Defined in syntax.c. */ |
| 2664 | extern void init_syntax_once (void); | 2656 | extern void init_syntax_once (void); |
| 2665 | extern void syms_of_syntax (void); | 2657 | extern void syms_of_syntax (void); |
| 2666 | 2658 | ||
| 2667 | /* Defined in fns.c */ | 2659 | /* Defined in fns.c. */ |
| 2668 | extern Lisp_Object QCrehash_size, QCrehash_threshold; | 2660 | extern Lisp_Object QCrehash_size, QCrehash_threshold; |
| 2669 | enum { NEXT_ALMOST_PRIME_LIMIT = 11 }; | 2661 | enum { NEXT_ALMOST_PRIME_LIMIT = 11 }; |
| 2670 | EXFUN (Fidentity, 1) ATTRIBUTE_CONST; | 2662 | EXFUN (Fidentity, 1) ATTRIBUTE_CONST; |
| @@ -2698,13 +2690,12 @@ extern Lisp_Object string_to_multibyte (Lisp_Object); | |||
| 2698 | extern Lisp_Object string_make_unibyte (Lisp_Object); | 2690 | extern Lisp_Object string_make_unibyte (Lisp_Object); |
| 2699 | extern void syms_of_fns (void); | 2691 | extern void syms_of_fns (void); |
| 2700 | 2692 | ||
| 2701 | /* Defined in floatfns.c */ | 2693 | /* Defined in floatfns.c. */ |
| 2702 | extern double extract_float (Lisp_Object); | 2694 | extern double extract_float (Lisp_Object); |
| 2703 | extern void init_floatfns (void); | ||
| 2704 | extern void syms_of_floatfns (void); | 2695 | extern void syms_of_floatfns (void); |
| 2705 | extern Lisp_Object fmod_float (Lisp_Object x, Lisp_Object y); | 2696 | extern Lisp_Object fmod_float (Lisp_Object x, Lisp_Object y); |
| 2706 | 2697 | ||
| 2707 | /* Defined in fringe.c */ | 2698 | /* Defined in fringe.c. */ |
| 2708 | extern void syms_of_fringe (void); | 2699 | extern void syms_of_fringe (void); |
| 2709 | extern void init_fringe (void); | 2700 | extern void init_fringe (void); |
| 2710 | #ifdef HAVE_WINDOW_SYSTEM | 2701 | #ifdef HAVE_WINDOW_SYSTEM |
| @@ -2712,13 +2703,13 @@ extern void mark_fringe_data (void); | |||
| 2712 | extern void init_fringe_once (void); | 2703 | extern void init_fringe_once (void); |
| 2713 | #endif /* HAVE_WINDOW_SYSTEM */ | 2704 | #endif /* HAVE_WINDOW_SYSTEM */ |
| 2714 | 2705 | ||
| 2715 | /* Defined in image.c */ | 2706 | /* Defined in image.c. */ |
| 2716 | extern Lisp_Object QCascent, QCmargin, QCrelief; | 2707 | extern Lisp_Object QCascent, QCmargin, QCrelief; |
| 2717 | extern Lisp_Object QCconversion; | 2708 | extern Lisp_Object QCconversion; |
| 2718 | extern int x_bitmap_mask (struct frame *, ptrdiff_t); | 2709 | extern int x_bitmap_mask (struct frame *, ptrdiff_t); |
| 2719 | extern void syms_of_image (void); | 2710 | extern void syms_of_image (void); |
| 2720 | 2711 | ||
| 2721 | /* Defined in insdel.c */ | 2712 | /* Defined in insdel.c. */ |
| 2722 | extern Lisp_Object Qinhibit_modification_hooks; | 2713 | extern Lisp_Object Qinhibit_modification_hooks; |
| 2723 | extern void move_gap (ptrdiff_t); | 2714 | extern void move_gap (ptrdiff_t); |
| 2724 | extern void move_gap_both (ptrdiff_t, ptrdiff_t); | 2715 | extern void move_gap_both (ptrdiff_t, ptrdiff_t); |
| @@ -2764,7 +2755,7 @@ extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, | |||
| 2764 | const char *, ptrdiff_t, ptrdiff_t, bool); | 2755 | const char *, ptrdiff_t, ptrdiff_t, bool); |
| 2765 | extern void syms_of_insdel (void); | 2756 | extern void syms_of_insdel (void); |
| 2766 | 2757 | ||
| 2767 | /* Defined in dispnew.c */ | 2758 | /* Defined in dispnew.c. */ |
| 2768 | #if (defined PROFILING \ | 2759 | #if (defined PROFILING \ |
| 2769 | && (defined __FreeBSD__ || defined GNU_LINUX || defined __MINGW32__)) | 2760 | && (defined __FreeBSD__ || defined GNU_LINUX || defined __MINGW32__)) |
| 2770 | _Noreturn void __executable_start (void); | 2761 | _Noreturn void __executable_start (void); |
| @@ -2775,7 +2766,7 @@ extern Lisp_Object sit_for (Lisp_Object, bool, int); | |||
| 2775 | extern void init_display (void); | 2766 | extern void init_display (void); |
| 2776 | extern void syms_of_display (void); | 2767 | extern void syms_of_display (void); |
| 2777 | 2768 | ||
| 2778 | /* Defined in xdisp.c */ | 2769 | /* Defined in xdisp.c. */ |
| 2779 | extern Lisp_Object Qinhibit_point_motion_hooks; | 2770 | extern Lisp_Object Qinhibit_point_motion_hooks; |
| 2780 | extern Lisp_Object Qinhibit_redisplay, Qdisplay; | 2771 | extern Lisp_Object Qinhibit_redisplay, Qdisplay; |
| 2781 | extern Lisp_Object Qmenu_bar_update_hook; | 2772 | extern Lisp_Object Qmenu_bar_update_hook; |
| @@ -2826,13 +2817,13 @@ extern Lisp_Object safe_eval (Lisp_Object); | |||
| 2826 | extern int pos_visible_p (struct window *, ptrdiff_t, int *, | 2817 | extern int pos_visible_p (struct window *, ptrdiff_t, int *, |
| 2827 | int *, int *, int *, int *, int *); | 2818 | int *, int *, int *, int *, int *); |
| 2828 | 2819 | ||
| 2829 | /* Defined in xsettings.c */ | 2820 | /* Defined in xsettings.c. */ |
| 2830 | extern void syms_of_xsettings (void); | 2821 | extern void syms_of_xsettings (void); |
| 2831 | 2822 | ||
| 2832 | /* Defined in vm-limit.c. */ | 2823 | /* Defined in vm-limit.c. */ |
| 2833 | extern void memory_warnings (void *, void (*warnfun) (const char *)); | 2824 | extern void memory_warnings (void *, void (*warnfun) (const char *)); |
| 2834 | 2825 | ||
| 2835 | /* Defined in alloc.c */ | 2826 | /* Defined in alloc.c. */ |
| 2836 | extern void check_pure_size (void); | 2827 | extern void check_pure_size (void); |
| 2837 | extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); | 2828 | extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); |
| 2838 | extern void reset_malloc_hooks (void); | 2829 | extern void reset_malloc_hooks (void); |
| @@ -2935,7 +2926,7 @@ extern void check_cons_list (void); | |||
| 2935 | #endif | 2926 | #endif |
| 2936 | 2927 | ||
| 2937 | #ifdef REL_ALLOC | 2928 | #ifdef REL_ALLOC |
| 2938 | /* Defined in ralloc.c */ | 2929 | /* Defined in ralloc.c. */ |
| 2939 | extern void *r_alloc (void **, size_t); | 2930 | extern void *r_alloc (void **, size_t); |
| 2940 | extern void r_alloc_free (void **); | 2931 | extern void r_alloc_free (void **); |
| 2941 | extern void *r_re_alloc (void **, size_t); | 2932 | extern void *r_re_alloc (void **, size_t); |
| @@ -2943,7 +2934,7 @@ extern void r_alloc_reset_variable (void **, void **); | |||
| 2943 | extern void r_alloc_inhibit_buffer_relocation (int); | 2934 | extern void r_alloc_inhibit_buffer_relocation (int); |
| 2944 | #endif | 2935 | #endif |
| 2945 | 2936 | ||
| 2946 | /* Defined in chartab.c */ | 2937 | /* Defined in chartab.c. */ |
| 2947 | extern Lisp_Object copy_char_table (Lisp_Object); | 2938 | extern Lisp_Object copy_char_table (Lisp_Object); |
| 2948 | extern Lisp_Object char_table_ref (Lisp_Object, int); | 2939 | extern Lisp_Object char_table_ref (Lisp_Object, int); |
| 2949 | extern Lisp_Object char_table_ref_and_range (Lisp_Object, int, | 2940 | extern Lisp_Object char_table_ref_and_range (Lisp_Object, int, |
| @@ -2961,7 +2952,7 @@ extern void map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Ob | |||
| 2961 | extern Lisp_Object uniprop_table (Lisp_Object); | 2952 | extern Lisp_Object uniprop_table (Lisp_Object); |
| 2962 | extern void syms_of_chartab (void); | 2953 | extern void syms_of_chartab (void); |
| 2963 | 2954 | ||
| 2964 | /* Defined in print.c */ | 2955 | /* Defined in print.c. */ |
| 2965 | extern Lisp_Object Vprin1_to_string_buffer; | 2956 | extern Lisp_Object Vprin1_to_string_buffer; |
| 2966 | extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE; | 2957 | extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE; |
| 2967 | extern Lisp_Object Qstandard_output; | 2958 | extern Lisp_Object Qstandard_output; |
| @@ -2978,7 +2969,7 @@ enum FLOAT_TO_STRING_BUFSIZE { FLOAT_TO_STRING_BUFSIZE = 350 }; | |||
| 2978 | extern int float_to_string (char *, double); | 2969 | extern int float_to_string (char *, double); |
| 2979 | extern void syms_of_print (void); | 2970 | extern void syms_of_print (void); |
| 2980 | 2971 | ||
| 2981 | /* Defined in doprnt.c */ | 2972 | /* Defined in doprnt.c. */ |
| 2982 | extern ptrdiff_t doprnt (char *, ptrdiff_t, const char *, const char *, | 2973 | extern ptrdiff_t doprnt (char *, ptrdiff_t, const char *, const char *, |
| 2983 | va_list); | 2974 | va_list); |
| 2984 | extern ptrdiff_t esprintf (char *, char const *, ...) | 2975 | extern ptrdiff_t esprintf (char *, char const *, ...) |
| @@ -3081,6 +3072,7 @@ extern _Noreturn void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2); | |||
| 3081 | extern _Noreturn void verror (const char *, va_list) | 3072 | extern _Noreturn void verror (const char *, va_list) |
| 3082 | ATTRIBUTE_FORMAT_PRINTF (1, 0); | 3073 | ATTRIBUTE_FORMAT_PRINTF (1, 0); |
| 3083 | extern Lisp_Object un_autoload (Lisp_Object); | 3074 | extern Lisp_Object un_autoload (Lisp_Object); |
| 3075 | extern Lisp_Object call_debugger (Lisp_Object arg); | ||
| 3084 | extern void init_eval_once (void); | 3076 | extern void init_eval_once (void); |
| 3085 | extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...); | 3077 | extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...); |
| 3086 | extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object); | 3078 | extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object); |
| @@ -3143,7 +3135,7 @@ extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object, | |||
| 3143 | extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t); | 3135 | extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t); |
| 3144 | extern void syms_of_marker (void); | 3136 | extern void syms_of_marker (void); |
| 3145 | 3137 | ||
| 3146 | /* Defined in fileio.c */ | 3138 | /* Defined in fileio.c. */ |
| 3147 | 3139 | ||
| 3148 | extern Lisp_Object Qfile_error; | 3140 | extern Lisp_Object Qfile_error; |
| 3149 | extern Lisp_Object Qfile_exists_p; | 3141 | extern Lisp_Object Qfile_exists_p; |
| @@ -3151,16 +3143,16 @@ extern Lisp_Object Qfile_directory_p; | |||
| 3151 | extern Lisp_Object Qinsert_file_contents; | 3143 | extern Lisp_Object Qinsert_file_contents; |
| 3152 | extern Lisp_Object Qfile_name_history; | 3144 | extern Lisp_Object Qfile_name_history; |
| 3153 | extern Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); | 3145 | extern Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); |
| 3154 | EXFUN (Fread_file_name, 6); /* not a normal DEFUN */ | 3146 | EXFUN (Fread_file_name, 6); /* Not a normal DEFUN. */ |
| 3155 | extern Lisp_Object close_file_unwind (Lisp_Object); | 3147 | extern Lisp_Object close_file_unwind (Lisp_Object); |
| 3156 | extern Lisp_Object restore_point_unwind (Lisp_Object); | 3148 | extern Lisp_Object restore_point_unwind (Lisp_Object); |
| 3157 | extern _Noreturn void report_file_error (const char *, Lisp_Object); | 3149 | extern _Noreturn void report_file_error (const char *, Lisp_Object); |
| 3158 | extern int internal_delete_file (Lisp_Object); | 3150 | extern void internal_delete_file (Lisp_Object); |
| 3159 | extern void syms_of_fileio (void); | 3151 | extern void syms_of_fileio (void); |
| 3160 | extern Lisp_Object make_temp_name (Lisp_Object, int); | 3152 | extern Lisp_Object make_temp_name (Lisp_Object, bool); |
| 3161 | extern Lisp_Object Qdelete_file; | 3153 | extern Lisp_Object Qdelete_file; |
| 3162 | 3154 | ||
| 3163 | /* Defined in search.c */ | 3155 | /* Defined in search.c. */ |
| 3164 | extern void shrink_regexp_cache (void); | 3156 | extern void shrink_regexp_cache (void); |
| 3165 | extern void restore_search_regs (void); | 3157 | extern void restore_search_regs (void); |
| 3166 | extern void record_unwind_save_match_data (void); | 3158 | extern void record_unwind_save_match_data (void); |
| @@ -3233,9 +3225,7 @@ extern void cmd_error_internal (Lisp_Object, const char *); | |||
| 3233 | extern Lisp_Object command_loop_1 (void); | 3225 | extern Lisp_Object command_loop_1 (void); |
| 3234 | extern Lisp_Object recursive_edit_1 (void); | 3226 | extern Lisp_Object recursive_edit_1 (void); |
| 3235 | extern void record_auto_save (void); | 3227 | extern void record_auto_save (void); |
| 3236 | #ifdef SIGDANGER | ||
| 3237 | extern void force_auto_save_soon (void); | 3228 | extern void force_auto_save_soon (void); |
| 3238 | #endif | ||
| 3239 | extern void init_keyboard (void); | 3229 | extern void init_keyboard (void); |
| 3240 | extern void syms_of_keyboard (void); | 3230 | extern void syms_of_keyboard (void); |
| 3241 | extern void keys_of_keyboard (void); | 3231 | extern void keys_of_keyboard (void); |
| @@ -3268,9 +3258,7 @@ extern bool display_arg; | |||
| 3268 | extern Lisp_Object decode_env_path (const char *, const char *); | 3258 | extern Lisp_Object decode_env_path (const char *, const char *); |
| 3269 | extern Lisp_Object empty_unibyte_string, empty_multibyte_string; | 3259 | extern Lisp_Object empty_unibyte_string, empty_multibyte_string; |
| 3270 | extern Lisp_Object Qfile_name_handler_alist; | 3260 | extern Lisp_Object Qfile_name_handler_alist; |
| 3271 | #ifdef FLOAT_CATCH_SIGILL | 3261 | extern _Noreturn void fatal_error_backtrace (int, int); |
| 3272 | extern void fatal_error_signal (int); | ||
| 3273 | #endif | ||
| 3274 | extern Lisp_Object Qkill_emacs; | 3262 | extern Lisp_Object Qkill_emacs; |
| 3275 | #if HAVE_SETLOCALE | 3263 | #if HAVE_SETLOCALE |
| 3276 | void fixup_locale (void); | 3264 | void fixup_locale (void); |
| @@ -3339,14 +3327,14 @@ extern void init_callproc (void); | |||
| 3339 | extern void set_initial_environment (void); | 3327 | extern void set_initial_environment (void); |
| 3340 | extern void syms_of_callproc (void); | 3328 | extern void syms_of_callproc (void); |
| 3341 | 3329 | ||
| 3342 | /* Defined in doc.c */ | 3330 | /* Defined in doc.c. */ |
| 3343 | extern Lisp_Object Qfunction_documentation; | 3331 | extern Lisp_Object Qfunction_documentation; |
| 3344 | extern Lisp_Object read_doc_string (Lisp_Object); | 3332 | extern Lisp_Object read_doc_string (Lisp_Object); |
| 3345 | extern Lisp_Object get_doc_string (Lisp_Object, bool, bool); | 3333 | extern Lisp_Object get_doc_string (Lisp_Object, bool, bool); |
| 3346 | extern void syms_of_doc (void); | 3334 | extern void syms_of_doc (void); |
| 3347 | extern int read_bytecode_char (bool); | 3335 | extern int read_bytecode_char (bool); |
| 3348 | 3336 | ||
| 3349 | /* Defined in bytecode.c */ | 3337 | /* Defined in bytecode.c. */ |
| 3350 | extern Lisp_Object Qbytecode; | 3338 | extern Lisp_Object Qbytecode; |
| 3351 | extern void syms_of_bytecode (void); | 3339 | extern void syms_of_bytecode (void); |
| 3352 | extern struct byte_stack *byte_stack_list; | 3340 | extern struct byte_stack *byte_stack_list; |
| @@ -3357,12 +3345,12 @@ extern void unmark_byte_stack (void); | |||
| 3357 | extern Lisp_Object exec_byte_code (Lisp_Object, Lisp_Object, Lisp_Object, | 3345 | extern Lisp_Object exec_byte_code (Lisp_Object, Lisp_Object, Lisp_Object, |
| 3358 | Lisp_Object, ptrdiff_t, Lisp_Object *); | 3346 | Lisp_Object, ptrdiff_t, Lisp_Object *); |
| 3359 | 3347 | ||
| 3360 | /* Defined in macros.c */ | 3348 | /* Defined in macros.c. */ |
| 3361 | extern Lisp_Object Qexecute_kbd_macro; | 3349 | extern Lisp_Object Qexecute_kbd_macro; |
| 3362 | extern void init_macros (void); | 3350 | extern void init_macros (void); |
| 3363 | extern void syms_of_macros (void); | 3351 | extern void syms_of_macros (void); |
| 3364 | 3352 | ||
| 3365 | /* Defined in undo.c */ | 3353 | /* Defined in undo.c. */ |
| 3366 | extern Lisp_Object Qapply; | 3354 | extern Lisp_Object Qapply; |
| 3367 | extern Lisp_Object Qinhibit_read_only; | 3355 | extern Lisp_Object Qinhibit_read_only; |
| 3368 | extern void truncate_undo_list (struct buffer *); | 3356 | extern void truncate_undo_list (struct buffer *); |
| @@ -3375,7 +3363,7 @@ extern void record_property_change (ptrdiff_t, ptrdiff_t, | |||
| 3375 | Lisp_Object, Lisp_Object, | 3363 | Lisp_Object, Lisp_Object, |
| 3376 | Lisp_Object); | 3364 | Lisp_Object); |
| 3377 | extern void syms_of_undo (void); | 3365 | extern void syms_of_undo (void); |
| 3378 | /* Defined in textprop.c */ | 3366 | /* Defined in textprop.c. */ |
| 3379 | extern Lisp_Object Qfont, Qmouse_face; | 3367 | extern Lisp_Object Qfont, Qmouse_face; |
| 3380 | extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks; | 3368 | extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks; |
| 3381 | extern Lisp_Object Qfront_sticky, Qrear_nonsticky; | 3369 | extern Lisp_Object Qfront_sticky, Qrear_nonsticky; |
| @@ -3383,19 +3371,19 @@ extern Lisp_Object Qminibuffer_prompt; | |||
| 3383 | 3371 | ||
| 3384 | extern void report_interval_modification (Lisp_Object, Lisp_Object); | 3372 | extern void report_interval_modification (Lisp_Object, Lisp_Object); |
| 3385 | 3373 | ||
| 3386 | /* Defined in menu.c */ | 3374 | /* Defined in menu.c. */ |
| 3387 | extern void syms_of_menu (void); | 3375 | extern void syms_of_menu (void); |
| 3388 | 3376 | ||
| 3389 | /* Defined in xmenu.c */ | 3377 | /* Defined in xmenu.c. */ |
| 3390 | extern void syms_of_xmenu (void); | 3378 | extern void syms_of_xmenu (void); |
| 3391 | 3379 | ||
| 3392 | /* Defined in termchar.h */ | 3380 | /* Defined in termchar.h. */ |
| 3393 | struct tty_display_info; | 3381 | struct tty_display_info; |
| 3394 | 3382 | ||
| 3395 | /* Defined in termhooks.h */ | 3383 | /* Defined in termhooks.h. */ |
| 3396 | struct terminal; | 3384 | struct terminal; |
| 3397 | 3385 | ||
| 3398 | /* Defined in sysdep.c */ | 3386 | /* Defined in sysdep.c. */ |
| 3399 | #ifndef HAVE_GET_CURRENT_DIR_NAME | 3387 | #ifndef HAVE_GET_CURRENT_DIR_NAME |
| 3400 | extern char *get_current_dir_name (void); | 3388 | extern char *get_current_dir_name (void); |
| 3401 | #endif | 3389 | #endif |
| @@ -3417,6 +3405,8 @@ extern int set_window_size (int, int, int); | |||
| 3417 | extern EMACS_INT get_random (void); | 3405 | extern EMACS_INT get_random (void); |
| 3418 | extern void seed_random (void *, ptrdiff_t); | 3406 | extern void seed_random (void *, ptrdiff_t); |
| 3419 | extern void init_random (void); | 3407 | extern void init_random (void); |
| 3408 | extern void emacs_backtrace (int); | ||
| 3409 | extern _Noreturn void emacs_abort (void) NO_INLINE; | ||
| 3420 | extern int emacs_open (const char *, int, int); | 3410 | extern int emacs_open (const char *, int, int); |
| 3421 | extern int emacs_close (int); | 3411 | extern int emacs_close (int); |
| 3422 | extern ptrdiff_t emacs_read (int, char *, ptrdiff_t); | 3412 | extern ptrdiff_t emacs_read (int, char *, ptrdiff_t); |
| @@ -3430,45 +3420,45 @@ extern void unlock_file (Lisp_Object); | |||
| 3430 | extern void unlock_buffer (struct buffer *); | 3420 | extern void unlock_buffer (struct buffer *); |
| 3431 | extern void syms_of_filelock (void); | 3421 | extern void syms_of_filelock (void); |
| 3432 | 3422 | ||
| 3433 | /* Defined in sound.c */ | 3423 | /* Defined in sound.c. */ |
| 3434 | extern void syms_of_sound (void); | 3424 | extern void syms_of_sound (void); |
| 3435 | 3425 | ||
| 3436 | /* Defined in category.c */ | 3426 | /* Defined in category.c. */ |
| 3437 | extern void init_category_once (void); | 3427 | extern void init_category_once (void); |
| 3438 | extern Lisp_Object char_category_set (int); | 3428 | extern Lisp_Object char_category_set (int); |
| 3439 | extern void syms_of_category (void); | 3429 | extern void syms_of_category (void); |
| 3440 | 3430 | ||
| 3441 | /* Defined in ccl.c */ | 3431 | /* Defined in ccl.c. */ |
| 3442 | extern void syms_of_ccl (void); | 3432 | extern void syms_of_ccl (void); |
| 3443 | 3433 | ||
| 3444 | /* Defined in dired.c */ | 3434 | /* Defined in dired.c. */ |
| 3445 | extern void syms_of_dired (void); | 3435 | extern void syms_of_dired (void); |
| 3446 | extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, | 3436 | extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, |
| 3447 | Lisp_Object, Lisp_Object, | 3437 | Lisp_Object, Lisp_Object, |
| 3448 | bool, Lisp_Object); | 3438 | bool, Lisp_Object); |
| 3449 | 3439 | ||
| 3450 | /* Defined in term.c */ | 3440 | /* Defined in term.c. */ |
| 3451 | extern int *char_ins_del_vector; | 3441 | extern int *char_ins_del_vector; |
| 3452 | extern void syms_of_term (void); | 3442 | extern void syms_of_term (void); |
| 3453 | extern _Noreturn void fatal (const char *msgid, ...) | 3443 | extern _Noreturn void fatal (const char *msgid, ...) |
| 3454 | ATTRIBUTE_FORMAT_PRINTF (1, 2); | 3444 | ATTRIBUTE_FORMAT_PRINTF (1, 2); |
| 3455 | 3445 | ||
| 3456 | /* Defined in terminal.c */ | 3446 | /* Defined in terminal.c. */ |
| 3457 | extern void syms_of_terminal (void); | 3447 | extern void syms_of_terminal (void); |
| 3458 | 3448 | ||
| 3459 | /* Defined in font.c */ | 3449 | /* Defined in font.c. */ |
| 3460 | extern void syms_of_font (void); | 3450 | extern void syms_of_font (void); |
| 3461 | extern void init_font (void); | 3451 | extern void init_font (void); |
| 3462 | 3452 | ||
| 3463 | #ifdef HAVE_WINDOW_SYSTEM | 3453 | #ifdef HAVE_WINDOW_SYSTEM |
| 3464 | /* Defined in fontset.c */ | 3454 | /* Defined in fontset.c. */ |
| 3465 | extern void syms_of_fontset (void); | 3455 | extern void syms_of_fontset (void); |
| 3466 | 3456 | ||
| 3467 | /* Defined in xfns.c, w32fns.c, or macfns.c */ | 3457 | /* Defined in xfns.c, w32fns.c, or macfns.c. */ |
| 3468 | extern Lisp_Object Qfont_param; | 3458 | extern Lisp_Object Qfont_param; |
| 3469 | #endif | 3459 | #endif |
| 3470 | 3460 | ||
| 3471 | /* Defined in xfaces.c */ | 3461 | /* Defined in xfaces.c. */ |
| 3472 | extern Lisp_Object Qdefault, Qtool_bar, Qfringe; | 3462 | extern Lisp_Object Qdefault, Qtool_bar, Qfringe; |
| 3473 | extern Lisp_Object Qheader_line, Qscroll_bar, Qcursor; | 3463 | extern Lisp_Object Qheader_line, Qscroll_bar, Qcursor; |
| 3474 | extern Lisp_Object Qmode_line_inactive; | 3464 | extern Lisp_Object Qmode_line_inactive; |
| @@ -3484,26 +3474,26 @@ extern Lisp_Object Vface_alternative_font_registry_alist; | |||
| 3484 | extern void syms_of_xfaces (void); | 3474 | extern void syms_of_xfaces (void); |
| 3485 | 3475 | ||
| 3486 | #ifdef HAVE_X_WINDOWS | 3476 | #ifdef HAVE_X_WINDOWS |
| 3487 | /* Defined in xfns.c */ | 3477 | /* Defined in xfns.c. */ |
| 3488 | extern void syms_of_xfns (void); | 3478 | extern void syms_of_xfns (void); |
| 3489 | 3479 | ||
| 3490 | /* Defined in xsmfns.c */ | 3480 | /* Defined in xsmfns.c. */ |
| 3491 | extern void syms_of_xsmfns (void); | 3481 | extern void syms_of_xsmfns (void); |
| 3492 | 3482 | ||
| 3493 | /* Defined in xselect.c */ | 3483 | /* Defined in xselect.c. */ |
| 3494 | extern void syms_of_xselect (void); | 3484 | extern void syms_of_xselect (void); |
| 3495 | 3485 | ||
| 3496 | /* Defined in xterm.c */ | 3486 | /* Defined in xterm.c. */ |
| 3497 | extern void syms_of_xterm (void); | 3487 | extern void syms_of_xterm (void); |
| 3498 | #endif /* HAVE_X_WINDOWS */ | 3488 | #endif /* HAVE_X_WINDOWS */ |
| 3499 | 3489 | ||
| 3500 | #ifdef HAVE_WINDOW_SYSTEM | 3490 | #ifdef HAVE_WINDOW_SYSTEM |
| 3501 | /* Defined in xterm.c, nsterm.m, w32term.c */ | 3491 | /* Defined in xterm.c, nsterm.m, w32term.c. */ |
| 3502 | extern char *x_get_keysym_name (int); | 3492 | extern char *x_get_keysym_name (int); |
| 3503 | #endif /* HAVE_WINDOW_SYSTEM */ | 3493 | #endif /* HAVE_WINDOW_SYSTEM */ |
| 3504 | 3494 | ||
| 3505 | #ifdef HAVE_LIBXML2 | 3495 | #ifdef HAVE_LIBXML2 |
| 3506 | /* Defined in xml.c */ | 3496 | /* Defined in xml.c. */ |
| 3507 | extern void syms_of_xml (void); | 3497 | extern void syms_of_xml (void); |
| 3508 | extern void xml_cleanup_parser (void); | 3498 | extern void xml_cleanup_parser (void); |
| 3509 | #endif | 3499 | #endif |
| @@ -3514,12 +3504,12 @@ extern int have_menus_p (void); | |||
| 3514 | #endif | 3504 | #endif |
| 3515 | 3505 | ||
| 3516 | #ifdef HAVE_DBUS | 3506 | #ifdef HAVE_DBUS |
| 3517 | /* Defined in dbusbind.c */ | 3507 | /* Defined in dbusbind.c. */ |
| 3518 | void syms_of_dbusbind (void); | 3508 | void syms_of_dbusbind (void); |
| 3519 | #endif | 3509 | #endif |
| 3520 | 3510 | ||
| 3521 | #ifdef DOS_NT | 3511 | #ifdef DOS_NT |
| 3522 | /* Defined in msdos.c, w32.c */ | 3512 | /* Defined in msdos.c, w32.c. */ |
| 3523 | extern char *emacs_root_dir (void); | 3513 | extern char *emacs_root_dir (void); |
| 3524 | #endif /* DOS_NT */ | 3514 | #endif /* DOS_NT */ |
| 3525 | 3515 | ||
| @@ -3527,7 +3517,7 @@ extern char *emacs_root_dir (void); | |||
| 3527 | Used during startup to detect startup of dumped Emacs. */ | 3517 | Used during startup to detect startup of dumped Emacs. */ |
| 3528 | extern bool initialized; | 3518 | extern bool initialized; |
| 3529 | 3519 | ||
| 3530 | extern int immediate_quit; /* Nonzero means ^G can quit instantly */ | 3520 | extern int immediate_quit; /* Nonzero means ^G can quit instantly. */ |
| 3531 | 3521 | ||
| 3532 | extern void *xmalloc (size_t); | 3522 | extern void *xmalloc (size_t); |
| 3533 | extern void *xzalloc (size_t); | 3523 | extern void *xzalloc (size_t); |
| @@ -3557,36 +3547,10 @@ extern void init_system_name (void); | |||
| 3557 | #define make_fixnum_or_float(val) \ | 3547 | #define make_fixnum_or_float(val) \ |
| 3558 | (FIXNUM_OVERFLOW_P (val) ? make_float (val) : make_number (val)) | 3548 | (FIXNUM_OVERFLOW_P (val) ? make_float (val) : make_number (val)) |
| 3559 | 3549 | ||
| 3560 | |||
| 3561 | /* Checks the `cycle check' variable CHECK to see if it indicates that | ||
| 3562 | EL is part of a cycle; CHECK must be either Qnil or a value returned | ||
| 3563 | by an earlier use of CYCLE_CHECK. SUSPICIOUS is the number of | ||
| 3564 | elements after which a cycle might be suspected; after that many | ||
| 3565 | elements, this macro begins consing in order to keep more precise | ||
| 3566 | track of elements. | ||
| 3567 | |||
| 3568 | Returns nil if a cycle was detected, otherwise a new value for CHECK | ||
| 3569 | that includes EL. | ||
| 3570 | |||
| 3571 | CHECK is evaluated multiple times, EL and SUSPICIOUS 0 or 1 times, so | ||
| 3572 | the caller should make sure that's ok. */ | ||
| 3573 | |||
| 3574 | #define CYCLE_CHECK(check, el, suspicious) \ | ||
| 3575 | (NILP (check) \ | ||
| 3576 | ? make_number (0) \ | ||
| 3577 | : (INTEGERP (check) \ | ||
| 3578 | ? (XFASTINT (check) < (suspicious) \ | ||
| 3579 | ? make_number (XFASTINT (check) + 1) \ | ||
| 3580 | : Fcons (el, Qnil)) \ | ||
| 3581 | : (!NILP (Fmemq ((el), (check))) \ | ||
| 3582 | ? Qnil \ | ||
| 3583 | : Fcons ((el), (check))))) | ||
| 3584 | |||
| 3585 | |||
| 3586 | /* SAFE_ALLOCA normally allocates memory on the stack, but if size is | 3550 | /* SAFE_ALLOCA normally allocates memory on the stack, but if size is |
| 3587 | larger than MAX_ALLOCA, use xmalloc to avoid overflowing the stack. */ | 3551 | larger than MAX_ALLOCA, use xmalloc to avoid overflowing the stack. */ |
| 3588 | 3552 | ||
| 3589 | enum MAX_ALLOCA { MAX_ALLOCA = 16*1024 }; | 3553 | enum MAX_ALLOCA { MAX_ALLOCA = 16 * 1024 }; |
| 3590 | 3554 | ||
| 3591 | extern Lisp_Object safe_alloca_unwind (Lisp_Object); | 3555 | extern Lisp_Object safe_alloca_unwind (Lisp_Object); |
| 3592 | extern void *record_xmalloc (size_t); | 3556 | extern void *record_xmalloc (size_t); |