diff options
| author | Joakim Verona | 2012-09-03 17:30:17 +0200 |
|---|---|---|
| committer | Joakim Verona | 2012-09-03 17:30:17 +0200 |
| commit | 4a37733c693d59a9b83a3fb2d0c7f9461d149f60 (patch) | |
| tree | a33402e09342f748baebf0e4f5a1e40538e620f4 /src/lisp.h | |
| parent | 5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (diff) | |
| parent | dcde497f27945c3ca4ce8c21f655ef6f627acdd2 (diff) | |
| download | emacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.tar.gz emacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.zip | |
upstream
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 196 |
1 files changed, 132 insertions, 64 deletions
diff --git a/src/lisp.h b/src/lisp.h index fea5ac0c768..1fe6ebb13ab 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -124,7 +124,7 @@ extern _Noreturn void die (const char *, const char *, int); | |||
| 124 | eassert macro altogether, e.g., if XSTRING (x) uses eassert to test | 124 | eassert macro altogether, e.g., if XSTRING (x) uses eassert to test |
| 125 | STRINGP (x), but a particular use of XSTRING is invoked only after | 125 | STRINGP (x), but a particular use of XSTRING is invoked only after |
| 126 | testing that STRINGP (x) is true, making the test redundant. */ | 126 | testing that STRINGP (x) is true, making the test redundant. */ |
| 127 | extern int suppress_checking EXTERNALLY_VISIBLE; | 127 | extern bool suppress_checking EXTERNALLY_VISIBLE; |
| 128 | 128 | ||
| 129 | # define eassert(cond) \ | 129 | # define eassert(cond) \ |
| 130 | ((cond) || suppress_checking \ | 130 | ((cond) || suppress_checking \ |
| @@ -611,10 +611,8 @@ clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper) | |||
| 611 | 611 | ||
| 612 | #define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX] | 612 | #define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX] |
| 613 | #define ASIZE(ARRAY) XVECTOR ((ARRAY))->header.size | 613 | #define ASIZE(ARRAY) XVECTOR ((ARRAY))->header.size |
| 614 | /* The IDX==IDX tries to detect when the macro argument is side-effecting. */ | ||
| 615 | #define ASET(ARRAY, IDX, VAL) \ | 614 | #define ASET(ARRAY, IDX, VAL) \ |
| 616 | (eassert ((IDX) == (IDX)), \ | 615 | (eassert (0 <= (IDX) && (IDX) < ASIZE (ARRAY)), \ |
| 617 | eassert ((IDX) >= 0 && (IDX) < ASIZE (ARRAY)), \ | ||
| 618 | XVECTOR (ARRAY)->contents[IDX] = (VAL)) | 616 | XVECTOR (ARRAY)->contents[IDX] = (VAL)) |
| 619 | 617 | ||
| 620 | /* Convenience macros for dealing with Lisp strings. */ | 618 | /* Convenience macros for dealing with Lisp strings. */ |
| @@ -707,7 +705,7 @@ struct Lisp_Cons | |||
| 707 | #define CDR_SAFE(c) \ | 705 | #define CDR_SAFE(c) \ |
| 708 | (CONSP ((c)) ? XCDR ((c)) : Qnil) | 706 | (CONSP ((c)) ? XCDR ((c)) : Qnil) |
| 709 | 707 | ||
| 710 | /* Nonzero if STR is a multibyte string. */ | 708 | /* True if STR is a multibyte string. */ |
| 711 | #define STRING_MULTIBYTE(STR) \ | 709 | #define STRING_MULTIBYTE(STR) \ |
| 712 | (XSTRING (STR)->size_byte >= 0) | 710 | (XSTRING (STR)->size_byte >= 0) |
| 713 | 711 | ||
| @@ -1911,11 +1909,7 @@ typedef struct { | |||
| 1911 | Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) | 1909 | Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) |
| 1912 | 1910 | ||
| 1913 | /* Non-zero if OBJ is a Lisp function. */ | 1911 | /* Non-zero if OBJ is a Lisp function. */ |
| 1914 | #define FUNCTIONP(OBJ) \ | 1912 | #define FUNCTIONP(OBJ) functionp(OBJ) |
| 1915 | ((CONSP (OBJ) && EQ (XCAR (OBJ), Qlambda)) \ | ||
| 1916 | || (SYMBOLP (OBJ) && !NILP (Ffboundp (OBJ))) \ | ||
| 1917 | || COMPILEDP (OBJ) \ | ||
| 1918 | || SUBRP (OBJ)) | ||
| 1919 | 1913 | ||
| 1920 | /* defsubr (Sname); | 1914 | /* defsubr (Sname); |
| 1921 | is how we define the symbol for function `name' at start-up time. */ | 1915 | is how we define the symbol for function `name' at start-up time. */ |
| @@ -2349,32 +2343,67 @@ gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) | |||
| 2349 | XVECTOR (array)->contents[idx] = val; | 2343 | XVECTOR (array)->contents[idx] = val; |
| 2350 | } | 2344 | } |
| 2351 | 2345 | ||
| 2346 | /* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */ | ||
| 2347 | |||
| 2348 | LISP_INLINE void | ||
| 2349 | vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count) | ||
| 2350 | { | ||
| 2351 | eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v)); | ||
| 2352 | memcpy (XVECTOR (v)->contents + offset, args, count * sizeof *args); | ||
| 2353 | } | ||
| 2354 | |||
| 2355 | /* Functions to modify hash tables. */ | ||
| 2356 | |||
| 2352 | LISP_INLINE void | 2357 | LISP_INLINE void |
| 2353 | set_hash_key (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | 2358 | set_hash_key_and_value (struct Lisp_Hash_Table *h, Lisp_Object key_and_value) |
| 2359 | { | ||
| 2360 | h->key_and_value = key_and_value; | ||
| 2361 | } | ||
| 2362 | |||
| 2363 | LISP_INLINE void | ||
| 2364 | set_hash_key_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | ||
| 2354 | { | 2365 | { |
| 2355 | gc_aset (h->key_and_value, 2 * idx, val); | 2366 | gc_aset (h->key_and_value, 2 * idx, val); |
| 2356 | } | 2367 | } |
| 2357 | 2368 | ||
| 2358 | LISP_INLINE void | 2369 | LISP_INLINE void |
| 2359 | set_hash_value (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | 2370 | set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) |
| 2360 | { | 2371 | { |
| 2361 | gc_aset (h->key_and_value, 2 * idx + 1, val); | 2372 | gc_aset (h->key_and_value, 2 * idx + 1, val); |
| 2362 | } | 2373 | } |
| 2363 | 2374 | ||
| 2364 | LISP_INLINE void | 2375 | LISP_INLINE void |
| 2365 | set_hash_next (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | 2376 | set_hash_next (struct Lisp_Hash_Table *h, Lisp_Object next) |
| 2377 | { | ||
| 2378 | h->next = next; | ||
| 2379 | } | ||
| 2380 | |||
| 2381 | LISP_INLINE void | ||
| 2382 | set_hash_next_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | ||
| 2366 | { | 2383 | { |
| 2367 | gc_aset (h->next, idx, val); | 2384 | gc_aset (h->next, idx, val); |
| 2368 | } | 2385 | } |
| 2369 | 2386 | ||
| 2370 | LISP_INLINE void | 2387 | LISP_INLINE void |
| 2371 | set_hash_hash (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | 2388 | set_hash_hash (struct Lisp_Hash_Table *h, Lisp_Object hash) |
| 2389 | { | ||
| 2390 | h->hash = hash; | ||
| 2391 | } | ||
| 2392 | |||
| 2393 | LISP_INLINE void | ||
| 2394 | set_hash_hash_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | ||
| 2372 | { | 2395 | { |
| 2373 | gc_aset (h->hash, idx, val); | 2396 | gc_aset (h->hash, idx, val); |
| 2374 | } | 2397 | } |
| 2375 | 2398 | ||
| 2376 | LISP_INLINE void | 2399 | LISP_INLINE void |
| 2377 | set_hash_index (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | 2400 | set_hash_index (struct Lisp_Hash_Table *h, Lisp_Object index) |
| 2401 | { | ||
| 2402 | h->index = index; | ||
| 2403 | } | ||
| 2404 | |||
| 2405 | LISP_INLINE void | ||
| 2406 | set_hash_index_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) | ||
| 2378 | { | 2407 | { |
| 2379 | gc_aset (h->index, idx, val); | 2408 | gc_aset (h->index, idx, val); |
| 2380 | } | 2409 | } |
| @@ -2549,8 +2578,7 @@ extern Lisp_Object Qoverflow_error, Qunderflow_error; | |||
| 2549 | extern Lisp_Object Qfloatp; | 2578 | extern Lisp_Object Qfloatp; |
| 2550 | extern Lisp_Object Qnumberp, Qnumber_or_marker_p; | 2579 | extern Lisp_Object Qnumberp, Qnumber_or_marker_p; |
| 2551 | 2580 | ||
| 2552 | extern Lisp_Object Qinteger, Qinterval, Qsymbol, Qstring; | 2581 | extern Lisp_Object Qbuffer, Qinteger, Qsymbol; |
| 2553 | extern Lisp_Object Qmisc, Qvector, Qfloat, Qcons, Qbuffer; | ||
| 2554 | 2582 | ||
| 2555 | extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; | 2583 | extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; |
| 2556 | 2584 | ||
| @@ -2597,7 +2625,7 @@ extern _Noreturn void args_out_of_range_3 (Lisp_Object, Lisp_Object, | |||
| 2597 | Lisp_Object); | 2625 | Lisp_Object); |
| 2598 | extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); | 2626 | extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); |
| 2599 | extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *); | 2627 | extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *); |
| 2600 | extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, int); | 2628 | extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, bool); |
| 2601 | extern void syms_of_data (void); | 2629 | extern void syms_of_data (void); |
| 2602 | extern void init_data (void); | 2630 | extern void init_data (void); |
| 2603 | extern void swap_in_global_binding (struct Lisp_Symbol *); | 2631 | extern void swap_in_global_binding (struct Lisp_Symbol *); |
| @@ -2609,7 +2637,7 @@ extern void keys_of_cmds (void); | |||
| 2609 | /* Defined in coding.c */ | 2637 | /* Defined in coding.c */ |
| 2610 | extern Lisp_Object Qcharset; | 2638 | extern Lisp_Object Qcharset; |
| 2611 | extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, | 2639 | extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, |
| 2612 | ptrdiff_t, int, int, Lisp_Object); | 2640 | ptrdiff_t, bool, bool, Lisp_Object); |
| 2613 | extern void init_coding (void); | 2641 | extern void init_coding (void); |
| 2614 | extern void init_coding_once (void); | 2642 | extern void init_coding_once (void); |
| 2615 | extern void syms_of_coding (void); | 2643 | extern void syms_of_coding (void); |
| @@ -2697,43 +2725,43 @@ extern void move_gap_both (ptrdiff_t, ptrdiff_t); | |||
| 2697 | extern _Noreturn void buffer_overflow (void); | 2725 | extern _Noreturn void buffer_overflow (void); |
| 2698 | extern void make_gap (ptrdiff_t); | 2726 | extern void make_gap (ptrdiff_t); |
| 2699 | extern ptrdiff_t copy_text (const unsigned char *, unsigned char *, | 2727 | extern ptrdiff_t copy_text (const unsigned char *, unsigned char *, |
| 2700 | ptrdiff_t, int, int); | 2728 | ptrdiff_t, bool, bool); |
| 2701 | extern int count_combining_before (const unsigned char *, | 2729 | extern int count_combining_before (const unsigned char *, |
| 2702 | ptrdiff_t, ptrdiff_t, ptrdiff_t); | 2730 | ptrdiff_t, ptrdiff_t, ptrdiff_t); |
| 2703 | extern int count_combining_after (const unsigned char *, | 2731 | extern int count_combining_after (const unsigned char *, |
| 2704 | ptrdiff_t, ptrdiff_t, ptrdiff_t); | 2732 | ptrdiff_t, ptrdiff_t, ptrdiff_t); |
| 2705 | extern void insert (const char *, ptrdiff_t); | 2733 | extern void insert (const char *, ptrdiff_t); |
| 2706 | extern void insert_and_inherit (const char *, ptrdiff_t); | 2734 | extern void insert_and_inherit (const char *, ptrdiff_t); |
| 2707 | extern void insert_1 (const char *, ptrdiff_t, int, int, int); | 2735 | extern void insert_1 (const char *, ptrdiff_t, bool, bool, bool); |
| 2708 | extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t, | 2736 | extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t, |
| 2709 | int, int, int); | 2737 | bool, bool, bool); |
| 2710 | extern void insert_from_gap (ptrdiff_t, ptrdiff_t); | 2738 | extern void insert_from_gap (ptrdiff_t, ptrdiff_t); |
| 2711 | extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t, | 2739 | extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t, |
| 2712 | ptrdiff_t, ptrdiff_t, int); | 2740 | ptrdiff_t, ptrdiff_t, bool); |
| 2713 | extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, int); | 2741 | extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, bool); |
| 2714 | extern void insert_char (int); | 2742 | extern void insert_char (int); |
| 2715 | extern void insert_string (const char *); | 2743 | extern void insert_string (const char *); |
| 2716 | extern void insert_before_markers (const char *, ptrdiff_t); | 2744 | extern void insert_before_markers (const char *, ptrdiff_t); |
| 2717 | extern void insert_before_markers_and_inherit (const char *, ptrdiff_t); | 2745 | extern void insert_before_markers_and_inherit (const char *, ptrdiff_t); |
| 2718 | extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t, | 2746 | extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t, |
| 2719 | ptrdiff_t, ptrdiff_t, | 2747 | ptrdiff_t, ptrdiff_t, |
| 2720 | ptrdiff_t, int); | 2748 | ptrdiff_t, bool); |
| 2721 | extern void del_range (ptrdiff_t, ptrdiff_t); | 2749 | extern void del_range (ptrdiff_t, ptrdiff_t); |
| 2722 | extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, int, int); | 2750 | extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, bool, bool); |
| 2723 | extern void del_range_byte (ptrdiff_t, ptrdiff_t, int); | 2751 | extern void del_range_byte (ptrdiff_t, ptrdiff_t, bool); |
| 2724 | extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, int); | 2752 | extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool); |
| 2725 | extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t, | 2753 | extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t, |
| 2726 | ptrdiff_t, ptrdiff_t, int); | 2754 | ptrdiff_t, ptrdiff_t, bool); |
| 2727 | extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, int); | 2755 | extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, bool); |
| 2728 | extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *); | 2756 | extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *); |
| 2729 | extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t); | 2757 | extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t); |
| 2730 | extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t, | 2758 | extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t, |
| 2731 | ptrdiff_t, ptrdiff_t); | 2759 | ptrdiff_t, ptrdiff_t); |
| 2732 | extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t, | 2760 | extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t, |
| 2733 | ptrdiff_t, ptrdiff_t); | 2761 | ptrdiff_t, ptrdiff_t); |
| 2734 | extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, int, int, int); | 2762 | extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool); |
| 2735 | extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, | 2763 | extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, |
| 2736 | const char *, ptrdiff_t, ptrdiff_t, int); | 2764 | const char *, ptrdiff_t, ptrdiff_t, bool); |
| 2737 | extern void syms_of_insdel (void); | 2765 | extern void syms_of_insdel (void); |
| 2738 | 2766 | ||
| 2739 | /* Defined in dispnew.c */ | 2767 | /* Defined in dispnew.c */ |
| @@ -2743,7 +2771,7 @@ _Noreturn void __executable_start (void); | |||
| 2743 | #endif | 2771 | #endif |
| 2744 | extern Lisp_Object selected_frame; | 2772 | extern Lisp_Object selected_frame; |
| 2745 | extern Lisp_Object Vwindow_system; | 2773 | extern Lisp_Object Vwindow_system; |
| 2746 | extern Lisp_Object sit_for (Lisp_Object, int, int); | 2774 | extern Lisp_Object sit_for (Lisp_Object, bool, int); |
| 2747 | extern void init_display (void); | 2775 | extern void init_display (void); |
| 2748 | extern void syms_of_display (void); | 2776 | extern void syms_of_display (void); |
| 2749 | 2777 | ||
| @@ -2769,7 +2797,7 @@ extern Lisp_Object echo_area_buffer[2]; | |||
| 2769 | extern void add_to_log (const char *, Lisp_Object, Lisp_Object); | 2797 | extern void add_to_log (const char *, Lisp_Object, Lisp_Object); |
| 2770 | extern void check_message_stack (void); | 2798 | extern void check_message_stack (void); |
| 2771 | extern void setup_echo_area_for_printing (int); | 2799 | extern void setup_echo_area_for_printing (int); |
| 2772 | extern int push_message (void); | 2800 | extern bool push_message (void); |
| 2773 | extern Lisp_Object pop_message_unwind (Lisp_Object); | 2801 | extern Lisp_Object pop_message_unwind (Lisp_Object); |
| 2774 | extern Lisp_Object restore_message_unwind (Lisp_Object); | 2802 | extern Lisp_Object restore_message_unwind (Lisp_Object); |
| 2775 | extern void restore_message (void); | 2803 | extern void restore_message (void); |
| @@ -2812,7 +2840,7 @@ extern void uninterrupt_malloc (void); | |||
| 2812 | extern void malloc_warning (const char *); | 2840 | extern void malloc_warning (const char *); |
| 2813 | extern _Noreturn void memory_full (size_t); | 2841 | extern _Noreturn void memory_full (size_t); |
| 2814 | extern _Noreturn void buffer_memory_full (ptrdiff_t); | 2842 | extern _Noreturn void buffer_memory_full (ptrdiff_t); |
| 2815 | extern int survives_gc_p (Lisp_Object); | 2843 | extern bool survives_gc_p (Lisp_Object); |
| 2816 | extern void mark_object (Lisp_Object); | 2844 | extern void mark_object (Lisp_Object); |
| 2817 | #if defined REL_ALLOC && !defined SYSTEM_MALLOC | 2845 | #if defined REL_ALLOC && !defined SYSTEM_MALLOC |
| 2818 | extern void refill_memory_reserve (void); | 2846 | extern void refill_memory_reserve (void); |
| @@ -2851,8 +2879,8 @@ extern Lisp_Object make_uninit_string (EMACS_INT); | |||
| 2851 | extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT); | 2879 | extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT); |
| 2852 | extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t); | 2880 | extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t); |
| 2853 | extern Lisp_Object make_specified_string (const char *, | 2881 | extern Lisp_Object make_specified_string (const char *, |
| 2854 | ptrdiff_t, ptrdiff_t, int); | 2882 | ptrdiff_t, ptrdiff_t, bool); |
| 2855 | extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, int); | 2883 | extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, bool); |
| 2856 | extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t); | 2884 | extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t); |
| 2857 | 2885 | ||
| 2858 | /* Make a string allocated in pure space, use STR as string data. */ | 2886 | /* Make a string allocated in pure space, use STR as string data. */ |
| @@ -2886,8 +2914,8 @@ extern struct window *allocate_window (void); | |||
| 2886 | extern struct frame *allocate_frame (void); | 2914 | extern struct frame *allocate_frame (void); |
| 2887 | extern struct Lisp_Process *allocate_process (void); | 2915 | extern struct Lisp_Process *allocate_process (void); |
| 2888 | extern struct terminal *allocate_terminal (void); | 2916 | extern struct terminal *allocate_terminal (void); |
| 2889 | extern int gc_in_progress; | 2917 | extern bool gc_in_progress; |
| 2890 | extern int abort_on_gc; | 2918 | extern bool abort_on_gc; |
| 2891 | extern Lisp_Object make_float (double); | 2919 | extern Lisp_Object make_float (double); |
| 2892 | extern void display_malloc_warning (void); | 2920 | extern void display_malloc_warning (void); |
| 2893 | extern ptrdiff_t inhibit_garbage_collection (void); | 2921 | extern ptrdiff_t inhibit_garbage_collection (void); |
| @@ -2965,6 +2993,7 @@ extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char const *, ptrdiff_t, | |||
| 2965 | /* Defined in lread.c. */ | 2993 | /* Defined in lread.c. */ |
| 2966 | extern Lisp_Object Qvariable_documentation, Qstandard_input; | 2994 | extern Lisp_Object Qvariable_documentation, Qstandard_input; |
| 2967 | extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction; | 2995 | extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction; |
| 2996 | extern Lisp_Object Qlexical_binding; | ||
| 2968 | extern Lisp_Object check_obarray (Lisp_Object); | 2997 | extern Lisp_Object check_obarray (Lisp_Object); |
| 2969 | extern Lisp_Object intern_1 (const char *, ptrdiff_t); | 2998 | extern Lisp_Object intern_1 (const char *, ptrdiff_t); |
| 2970 | extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t); | 2999 | extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t); |
| @@ -2998,7 +3027,7 @@ intern_c_string (const char *str) | |||
| 2998 | 3027 | ||
| 2999 | /* Defined in eval.c. */ | 3028 | /* Defined in eval.c. */ |
| 3000 | extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qmacro; | 3029 | extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qmacro; |
| 3001 | extern Lisp_Object Qinhibit_quit, Qclosure; | 3030 | extern Lisp_Object Qinhibit_quit, Qinternal_interpreter_environment, Qclosure; |
| 3002 | extern Lisp_Object Qand_rest; | 3031 | extern Lisp_Object Qand_rest; |
| 3003 | extern Lisp_Object Vautoload_queue; | 3032 | extern Lisp_Object Vautoload_queue; |
| 3004 | extern Lisp_Object Vsignaling_function; | 3033 | extern Lisp_Object Vsignaling_function; |
| @@ -3071,23 +3100,23 @@ extern Lisp_Object save_restriction_save (void); | |||
| 3071 | extern Lisp_Object save_excursion_restore (Lisp_Object); | 3100 | extern Lisp_Object save_excursion_restore (Lisp_Object); |
| 3072 | extern Lisp_Object save_restriction_restore (Lisp_Object); | 3101 | extern Lisp_Object save_restriction_restore (Lisp_Object); |
| 3073 | extern _Noreturn void time_overflow (void); | 3102 | extern _Noreturn void time_overflow (void); |
| 3074 | extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, int); | 3103 | extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool); |
| 3075 | extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, | 3104 | extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, |
| 3076 | ptrdiff_t, int); | 3105 | ptrdiff_t, bool); |
| 3077 | extern void init_editfns (void); | 3106 | extern void init_editfns (void); |
| 3078 | const char *get_system_name (void); | 3107 | const char *get_system_name (void); |
| 3079 | extern void syms_of_editfns (void); | 3108 | extern void syms_of_editfns (void); |
| 3080 | extern void set_time_zone_rule (const char *); | 3109 | extern void set_time_zone_rule (const char *); |
| 3081 | 3110 | ||
| 3082 | /* Defined in buffer.c. */ | 3111 | /* Defined in buffer.c. */ |
| 3083 | extern int mouse_face_overlay_overlaps (Lisp_Object); | 3112 | extern bool mouse_face_overlay_overlaps (Lisp_Object); |
| 3084 | extern _Noreturn void nsberror (Lisp_Object); | 3113 | extern _Noreturn void nsberror (Lisp_Object); |
| 3085 | extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t); | 3114 | extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t); |
| 3086 | extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t); | 3115 | extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t); |
| 3087 | extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t); | 3116 | extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t); |
| 3088 | extern void report_overlay_modification (Lisp_Object, Lisp_Object, int, | 3117 | extern void report_overlay_modification (Lisp_Object, Lisp_Object, bool, |
| 3089 | Lisp_Object, Lisp_Object, Lisp_Object); | 3118 | Lisp_Object, Lisp_Object, Lisp_Object); |
| 3090 | extern int overlay_touches_p (ptrdiff_t); | 3119 | extern bool overlay_touches_p (ptrdiff_t); |
| 3091 | extern Lisp_Object Vbuffer_alist; | 3120 | extern Lisp_Object Vbuffer_alist; |
| 3092 | extern Lisp_Object set_buffer_if_live (Lisp_Object); | 3121 | extern Lisp_Object set_buffer_if_live (Lisp_Object); |
| 3093 | extern Lisp_Object other_buffer_safely (Lisp_Object); | 3122 | extern Lisp_Object other_buffer_safely (Lisp_Object); |
| @@ -3234,7 +3263,7 @@ extern void syms_of_frame (void); | |||
| 3234 | extern char **initial_argv; | 3263 | extern char **initial_argv; |
| 3235 | extern int initial_argc; | 3264 | extern int initial_argc; |
| 3236 | #if defined (HAVE_X_WINDOWS) || defined (HAVE_NS) | 3265 | #if defined (HAVE_X_WINDOWS) || defined (HAVE_NS) |
| 3237 | extern int display_arg; | 3266 | extern bool display_arg; |
| 3238 | #endif | 3267 | #endif |
| 3239 | extern Lisp_Object decode_env_path (const char *, const char *); | 3268 | extern Lisp_Object decode_env_path (const char *, const char *); |
| 3240 | extern Lisp_Object empty_unibyte_string, empty_multibyte_string; | 3269 | extern Lisp_Object empty_unibyte_string, empty_multibyte_string; |
| @@ -3253,22 +3282,26 @@ void synchronize_system_time_locale (void); | |||
| 3253 | #define synchronize_system_messages_locale() | 3282 | #define synchronize_system_messages_locale() |
| 3254 | #define synchronize_system_time_locale() | 3283 | #define synchronize_system_time_locale() |
| 3255 | #endif | 3284 | #endif |
| 3256 | void shut_down_emacs (int, int, Lisp_Object); | 3285 | extern void shut_down_emacs (int, Lisp_Object); |
| 3257 | /* Nonzero means don't do interactive redisplay and don't change tty modes. */ | 3286 | |
| 3258 | extern int noninteractive; | 3287 | /* True means don't do interactive redisplay and don't change tty modes. */ |
| 3288 | extern bool noninteractive; | ||
| 3259 | 3289 | ||
| 3260 | /* Nonzero means remove site-lisp directories from load-path. */ | 3290 | /* True means remove site-lisp directories from load-path. */ |
| 3261 | extern int no_site_lisp; | 3291 | extern bool no_site_lisp; |
| 3262 | 3292 | ||
| 3263 | /* Pipe used to send exit notification to the daemon parent at | 3293 | /* Pipe used to send exit notification to the daemon parent at |
| 3264 | startup. */ | 3294 | startup. */ |
| 3265 | extern int daemon_pipe[2]; | 3295 | extern int daemon_pipe[2]; |
| 3266 | #define IS_DAEMON (daemon_pipe[1] != 0) | 3296 | #define IS_DAEMON (daemon_pipe[1] != 0) |
| 3267 | 3297 | ||
| 3268 | /* Nonzero means don't do use window-system-specific display code. */ | 3298 | /* True if handling a fatal error already. */ |
| 3269 | extern int inhibit_window_system; | 3299 | extern bool fatal_error_in_progress; |
| 3270 | /* Nonzero means that a filter or a sentinel is running. */ | 3300 | |
| 3271 | extern int running_asynch_code; | 3301 | /* True means don't do use window-system-specific display code. */ |
| 3302 | extern bool inhibit_window_system; | ||
| 3303 | /* True means that a filter or a sentinel is running. */ | ||
| 3304 | extern bool running_asynch_code; | ||
| 3272 | 3305 | ||
| 3273 | /* Defined in process.c. */ | 3306 | /* Defined in process.c. */ |
| 3274 | extern Lisp_Object QCtype, Qlocal; | 3307 | extern Lisp_Object QCtype, Qlocal; |
| @@ -3300,7 +3333,7 @@ extern void setup_process_coding_systems (Lisp_Object); | |||
| 3300 | #ifndef DOS_NT | 3333 | #ifndef DOS_NT |
| 3301 | _Noreturn | 3334 | _Noreturn |
| 3302 | #endif | 3335 | #endif |
| 3303 | extern int child_setup (int, int, int, char **, int, Lisp_Object); | 3336 | extern int child_setup (int, int, int, char **, bool, Lisp_Object); |
| 3304 | extern void init_callproc_1 (void); | 3337 | extern void init_callproc_1 (void); |
| 3305 | extern void init_callproc (void); | 3338 | extern void init_callproc (void); |
| 3306 | extern void set_initial_environment (void); | 3339 | extern void set_initial_environment (void); |
| @@ -3309,9 +3342,9 @@ extern void syms_of_callproc (void); | |||
| 3309 | /* Defined in doc.c */ | 3342 | /* Defined in doc.c */ |
| 3310 | extern Lisp_Object Qfunction_documentation; | 3343 | extern Lisp_Object Qfunction_documentation; |
| 3311 | extern Lisp_Object read_doc_string (Lisp_Object); | 3344 | extern Lisp_Object read_doc_string (Lisp_Object); |
| 3312 | extern Lisp_Object get_doc_string (Lisp_Object, int, int); | 3345 | extern Lisp_Object get_doc_string (Lisp_Object, bool, bool); |
| 3313 | extern void syms_of_doc (void); | 3346 | extern void syms_of_doc (void); |
| 3314 | extern int read_bytecode_char (int); | 3347 | extern int read_bytecode_char (bool); |
| 3315 | 3348 | ||
| 3316 | /* Defined in bytecode.c */ | 3349 | /* Defined in bytecode.c */ |
| 3317 | extern Lisp_Object Qbytecode; | 3350 | extern Lisp_Object Qbytecode; |
| @@ -3382,7 +3415,8 @@ extern void child_setup_tty (int); | |||
| 3382 | extern void setup_pty (int); | 3415 | extern void setup_pty (int); |
| 3383 | extern int set_window_size (int, int, int); | 3416 | extern int set_window_size (int, int, int); |
| 3384 | extern EMACS_INT get_random (void); | 3417 | extern EMACS_INT get_random (void); |
| 3385 | extern void seed_random (long); | 3418 | extern void seed_random (void *, ptrdiff_t); |
| 3419 | extern void init_random (void); | ||
| 3386 | extern int emacs_open (const char *, int, int); | 3420 | extern int emacs_open (const char *, int, int); |
| 3387 | extern int emacs_close (int); | 3421 | extern int emacs_close (int); |
| 3388 | extern ptrdiff_t emacs_read (int, char *, ptrdiff_t); | 3422 | extern ptrdiff_t emacs_read (int, char *, ptrdiff_t); |
| @@ -3411,11 +3445,10 @@ extern void syms_of_ccl (void); | |||
| 3411 | extern void syms_of_dired (void); | 3445 | extern void syms_of_dired (void); |
| 3412 | extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, | 3446 | extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, |
| 3413 | Lisp_Object, Lisp_Object, | 3447 | Lisp_Object, Lisp_Object, |
| 3414 | int, Lisp_Object); | 3448 | bool, Lisp_Object); |
| 3415 | 3449 | ||
| 3416 | /* Defined in term.c */ | 3450 | /* Defined in term.c */ |
| 3417 | extern int *char_ins_del_vector; | 3451 | extern int *char_ins_del_vector; |
| 3418 | extern void mark_ttys (void); | ||
| 3419 | extern void syms_of_term (void); | 3452 | extern void syms_of_term (void); |
| 3420 | extern _Noreturn void fatal (const char *msgid, ...) | 3453 | extern _Noreturn void fatal (const char *msgid, ...) |
| 3421 | ATTRIBUTE_FORMAT_PRINTF (1, 2); | 3454 | ATTRIBUTE_FORMAT_PRINTF (1, 2); |
| @@ -3443,6 +3476,9 @@ extern Lisp_Object Qface; | |||
| 3443 | extern Lisp_Object Qnormal; | 3476 | extern Lisp_Object Qnormal; |
| 3444 | extern Lisp_Object QCfamily, QCweight, QCslant; | 3477 | extern Lisp_Object QCfamily, QCweight, QCslant; |
| 3445 | extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground; | 3478 | extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground; |
| 3479 | extern Lisp_Object Qextra_light, Qlight, Qsemi_light, Qsemi_bold; | ||
| 3480 | extern Lisp_Object Qbold, Qextra_bold, Qultra_bold; | ||
| 3481 | extern Lisp_Object Qoblique, Qitalic; | ||
| 3446 | extern Lisp_Object Vface_alternative_font_family_alist; | 3482 | extern Lisp_Object Vface_alternative_font_family_alist; |
| 3447 | extern Lisp_Object Vface_alternative_font_registry_alist; | 3483 | extern Lisp_Object Vface_alternative_font_registry_alist; |
| 3448 | extern void syms_of_xfaces (void); | 3484 | extern void syms_of_xfaces (void); |
| @@ -3487,9 +3523,9 @@ void syms_of_dbusbind (void); | |||
| 3487 | extern char *emacs_root_dir (void); | 3523 | extern char *emacs_root_dir (void); |
| 3488 | #endif /* DOS_NT */ | 3524 | #endif /* DOS_NT */ |
| 3489 | 3525 | ||
| 3490 | /* Nonzero means Emacs has already been initialized. | 3526 | /* True means Emacs has already been initialized. |
| 3491 | Used during startup to detect startup of dumped Emacs. */ | 3527 | Used during startup to detect startup of dumped Emacs. */ |
| 3492 | extern int initialized; | 3528 | extern bool initialized; |
| 3493 | 3529 | ||
| 3494 | extern int immediate_quit; /* Nonzero means ^G can quit instantly */ | 3530 | extern int immediate_quit; /* Nonzero means ^G can quit instantly */ |
| 3495 | 3531 | ||
| @@ -3556,7 +3592,7 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object); | |||
| 3556 | extern void *record_xmalloc (size_t); | 3592 | extern void *record_xmalloc (size_t); |
| 3557 | 3593 | ||
| 3558 | #define USE_SAFE_ALLOCA \ | 3594 | #define USE_SAFE_ALLOCA \ |
| 3559 | ptrdiff_t sa_count = SPECPDL_INDEX (); int sa_must_free = 0 | 3595 | ptrdiff_t sa_count = SPECPDL_INDEX (); bool sa_must_free = 0 |
| 3560 | 3596 | ||
| 3561 | /* SAFE_ALLOCA allocates a simple buffer. */ | 3597 | /* SAFE_ALLOCA allocates a simple buffer. */ |
| 3562 | 3598 | ||
| @@ -3626,6 +3662,38 @@ maybe_gc (void) | |||
| 3626 | Fgarbage_collect (); | 3662 | Fgarbage_collect (); |
| 3627 | } | 3663 | } |
| 3628 | 3664 | ||
| 3665 | LISP_INLINE int | ||
| 3666 | functionp (Lisp_Object object) | ||
| 3667 | { | ||
| 3668 | if (SYMBOLP (object) && !NILP (Ffboundp (object))) | ||
| 3669 | { | ||
| 3670 | object = Findirect_function (object, Qt); | ||
| 3671 | |||
| 3672 | if (CONSP (object) && EQ (XCAR (object), Qautoload)) | ||
| 3673 | { | ||
| 3674 | /* Autoloaded symbols are functions, except if they load | ||
| 3675 | macros or keymaps. */ | ||
| 3676 | int i; | ||
| 3677 | for (i = 0; i < 4 && CONSP (object); i++) | ||
| 3678 | object = XCDR (object); | ||
| 3679 | |||
| 3680 | return ! (CONSP (object) && !NILP (XCAR (object))); | ||
| 3681 | } | ||
| 3682 | } | ||
| 3683 | |||
| 3684 | if (SUBRP (object)) | ||
| 3685 | return XSUBR (object)->max_args != UNEVALLED; | ||
| 3686 | else if (COMPILEDP (object)) | ||
| 3687 | return 1; | ||
| 3688 | else if (CONSP (object)) | ||
| 3689 | { | ||
| 3690 | Lisp_Object car = XCAR (object); | ||
| 3691 | return EQ (car, Qlambda) || EQ (car, Qclosure); | ||
| 3692 | } | ||
| 3693 | else | ||
| 3694 | return 0; | ||
| 3695 | } | ||
| 3696 | |||
| 3629 | INLINE_HEADER_END | 3697 | INLINE_HEADER_END |
| 3630 | 3698 | ||
| 3631 | #endif /* EMACS_LISP_H */ | 3699 | #endif /* EMACS_LISP_H */ |