aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorJoakim Verona2012-09-03 17:30:17 +0200
committerJoakim Verona2012-09-03 17:30:17 +0200
commit4a37733c693d59a9b83a3fb2d0c7f9461d149f60 (patch)
treea33402e09342f748baebf0e4f5a1e40538e620f4 /src/lisp.h
parent5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (diff)
parentdcde497f27945c3ca4ce8c21f655ef6f627acdd2 (diff)
downloademacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.tar.gz
emacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.zip
upstream
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h196
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. */
127extern int suppress_checking EXTERNALLY_VISIBLE; 127extern 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
2348LISP_INLINE void
2349vcopy (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
2352LISP_INLINE void 2357LISP_INLINE void
2353set_hash_key (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) 2358set_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
2363LISP_INLINE void
2364set_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
2358LISP_INLINE void 2369LISP_INLINE void
2359set_hash_value (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) 2370set_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
2364LISP_INLINE void 2375LISP_INLINE void
2365set_hash_next (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) 2376set_hash_next (struct Lisp_Hash_Table *h, Lisp_Object next)
2377{
2378 h->next = next;
2379}
2380
2381LISP_INLINE void
2382set_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
2370LISP_INLINE void 2387LISP_INLINE void
2371set_hash_hash (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) 2388set_hash_hash (struct Lisp_Hash_Table *h, Lisp_Object hash)
2389{
2390 h->hash = hash;
2391}
2392
2393LISP_INLINE void
2394set_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
2376LISP_INLINE void 2399LISP_INLINE void
2377set_hash_index (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) 2400set_hash_index (struct Lisp_Hash_Table *h, Lisp_Object index)
2401{
2402 h->index = index;
2403}
2404
2405LISP_INLINE void
2406set_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;
2549extern Lisp_Object Qfloatp; 2578extern Lisp_Object Qfloatp;
2550extern Lisp_Object Qnumberp, Qnumber_or_marker_p; 2579extern Lisp_Object Qnumberp, Qnumber_or_marker_p;
2551 2580
2552extern Lisp_Object Qinteger, Qinterval, Qsymbol, Qstring; 2581extern Lisp_Object Qbuffer, Qinteger, Qsymbol;
2553extern Lisp_Object Qmisc, Qvector, Qfloat, Qcons, Qbuffer;
2554 2582
2555extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; 2583extern 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);
2598extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); 2626extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object);
2599extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *); 2627extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *);
2600extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, int); 2628extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, bool);
2601extern void syms_of_data (void); 2629extern void syms_of_data (void);
2602extern void init_data (void); 2630extern void init_data (void);
2603extern void swap_in_global_binding (struct Lisp_Symbol *); 2631extern 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 */
2610extern Lisp_Object Qcharset; 2638extern Lisp_Object Qcharset;
2611extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, 2639extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t,
2612 ptrdiff_t, int, int, Lisp_Object); 2640 ptrdiff_t, bool, bool, Lisp_Object);
2613extern void init_coding (void); 2641extern void init_coding (void);
2614extern void init_coding_once (void); 2642extern void init_coding_once (void);
2615extern void syms_of_coding (void); 2643extern void syms_of_coding (void);
@@ -2697,43 +2725,43 @@ extern void move_gap_both (ptrdiff_t, ptrdiff_t);
2697extern _Noreturn void buffer_overflow (void); 2725extern _Noreturn void buffer_overflow (void);
2698extern void make_gap (ptrdiff_t); 2726extern void make_gap (ptrdiff_t);
2699extern ptrdiff_t copy_text (const unsigned char *, unsigned char *, 2727extern ptrdiff_t copy_text (const unsigned char *, unsigned char *,
2700 ptrdiff_t, int, int); 2728 ptrdiff_t, bool, bool);
2701extern int count_combining_before (const unsigned char *, 2729extern int count_combining_before (const unsigned char *,
2702 ptrdiff_t, ptrdiff_t, ptrdiff_t); 2730 ptrdiff_t, ptrdiff_t, ptrdiff_t);
2703extern int count_combining_after (const unsigned char *, 2731extern int count_combining_after (const unsigned char *,
2704 ptrdiff_t, ptrdiff_t, ptrdiff_t); 2732 ptrdiff_t, ptrdiff_t, ptrdiff_t);
2705extern void insert (const char *, ptrdiff_t); 2733extern void insert (const char *, ptrdiff_t);
2706extern void insert_and_inherit (const char *, ptrdiff_t); 2734extern void insert_and_inherit (const char *, ptrdiff_t);
2707extern void insert_1 (const char *, ptrdiff_t, int, int, int); 2735extern void insert_1 (const char *, ptrdiff_t, bool, bool, bool);
2708extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t, 2736extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t,
2709 int, int, int); 2737 bool, bool, bool);
2710extern void insert_from_gap (ptrdiff_t, ptrdiff_t); 2738extern void insert_from_gap (ptrdiff_t, ptrdiff_t);
2711extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t, 2739extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t,
2712 ptrdiff_t, ptrdiff_t, int); 2740 ptrdiff_t, ptrdiff_t, bool);
2713extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, int); 2741extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
2714extern void insert_char (int); 2742extern void insert_char (int);
2715extern void insert_string (const char *); 2743extern void insert_string (const char *);
2716extern void insert_before_markers (const char *, ptrdiff_t); 2744extern void insert_before_markers (const char *, ptrdiff_t);
2717extern void insert_before_markers_and_inherit (const char *, ptrdiff_t); 2745extern void insert_before_markers_and_inherit (const char *, ptrdiff_t);
2718extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t, 2746extern 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);
2721extern void del_range (ptrdiff_t, ptrdiff_t); 2749extern void del_range (ptrdiff_t, ptrdiff_t);
2722extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, int, int); 2750extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, bool, bool);
2723extern void del_range_byte (ptrdiff_t, ptrdiff_t, int); 2751extern void del_range_byte (ptrdiff_t, ptrdiff_t, bool);
2724extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, int); 2752extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool);
2725extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t, 2753extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t,
2726 ptrdiff_t, ptrdiff_t, int); 2754 ptrdiff_t, ptrdiff_t, bool);
2727extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, int); 2755extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
2728extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *); 2756extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
2729extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t); 2757extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t);
2730extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t, 2758extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
2731 ptrdiff_t, ptrdiff_t); 2759 ptrdiff_t, ptrdiff_t);
2732extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t, 2760extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t,
2733 ptrdiff_t, ptrdiff_t); 2761 ptrdiff_t, ptrdiff_t);
2734extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, int, int, int); 2762extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool);
2735extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, 2763extern 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);
2737extern void syms_of_insdel (void); 2765extern 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
2744extern Lisp_Object selected_frame; 2772extern Lisp_Object selected_frame;
2745extern Lisp_Object Vwindow_system; 2773extern Lisp_Object Vwindow_system;
2746extern Lisp_Object sit_for (Lisp_Object, int, int); 2774extern Lisp_Object sit_for (Lisp_Object, bool, int);
2747extern void init_display (void); 2775extern void init_display (void);
2748extern void syms_of_display (void); 2776extern void syms_of_display (void);
2749 2777
@@ -2769,7 +2797,7 @@ extern Lisp_Object echo_area_buffer[2];
2769extern void add_to_log (const char *, Lisp_Object, Lisp_Object); 2797extern void add_to_log (const char *, Lisp_Object, Lisp_Object);
2770extern void check_message_stack (void); 2798extern void check_message_stack (void);
2771extern void setup_echo_area_for_printing (int); 2799extern void setup_echo_area_for_printing (int);
2772extern int push_message (void); 2800extern bool push_message (void);
2773extern Lisp_Object pop_message_unwind (Lisp_Object); 2801extern Lisp_Object pop_message_unwind (Lisp_Object);
2774extern Lisp_Object restore_message_unwind (Lisp_Object); 2802extern Lisp_Object restore_message_unwind (Lisp_Object);
2775extern void restore_message (void); 2803extern void restore_message (void);
@@ -2812,7 +2840,7 @@ extern void uninterrupt_malloc (void);
2812extern void malloc_warning (const char *); 2840extern void malloc_warning (const char *);
2813extern _Noreturn void memory_full (size_t); 2841extern _Noreturn void memory_full (size_t);
2814extern _Noreturn void buffer_memory_full (ptrdiff_t); 2842extern _Noreturn void buffer_memory_full (ptrdiff_t);
2815extern int survives_gc_p (Lisp_Object); 2843extern bool survives_gc_p (Lisp_Object);
2816extern void mark_object (Lisp_Object); 2844extern void mark_object (Lisp_Object);
2817#if defined REL_ALLOC && !defined SYSTEM_MALLOC 2845#if defined REL_ALLOC && !defined SYSTEM_MALLOC
2818extern void refill_memory_reserve (void); 2846extern void refill_memory_reserve (void);
@@ -2851,8 +2879,8 @@ extern Lisp_Object make_uninit_string (EMACS_INT);
2851extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT); 2879extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT);
2852extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t); 2880extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t);
2853extern Lisp_Object make_specified_string (const char *, 2881extern Lisp_Object make_specified_string (const char *,
2854 ptrdiff_t, ptrdiff_t, int); 2882 ptrdiff_t, ptrdiff_t, bool);
2855extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, int); 2883extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, bool);
2856extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t); 2884extern 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);
2886extern struct frame *allocate_frame (void); 2914extern struct frame *allocate_frame (void);
2887extern struct Lisp_Process *allocate_process (void); 2915extern struct Lisp_Process *allocate_process (void);
2888extern struct terminal *allocate_terminal (void); 2916extern struct terminal *allocate_terminal (void);
2889extern int gc_in_progress; 2917extern bool gc_in_progress;
2890extern int abort_on_gc; 2918extern bool abort_on_gc;
2891extern Lisp_Object make_float (double); 2919extern Lisp_Object make_float (double);
2892extern void display_malloc_warning (void); 2920extern void display_malloc_warning (void);
2893extern ptrdiff_t inhibit_garbage_collection (void); 2921extern 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. */
2966extern Lisp_Object Qvariable_documentation, Qstandard_input; 2994extern Lisp_Object Qvariable_documentation, Qstandard_input;
2967extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction; 2995extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction;
2996extern Lisp_Object Qlexical_binding;
2968extern Lisp_Object check_obarray (Lisp_Object); 2997extern Lisp_Object check_obarray (Lisp_Object);
2969extern Lisp_Object intern_1 (const char *, ptrdiff_t); 2998extern Lisp_Object intern_1 (const char *, ptrdiff_t);
2970extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t); 2999extern 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. */
3000extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qmacro; 3029extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qmacro;
3001extern Lisp_Object Qinhibit_quit, Qclosure; 3030extern Lisp_Object Qinhibit_quit, Qinternal_interpreter_environment, Qclosure;
3002extern Lisp_Object Qand_rest; 3031extern Lisp_Object Qand_rest;
3003extern Lisp_Object Vautoload_queue; 3032extern Lisp_Object Vautoload_queue;
3004extern Lisp_Object Vsignaling_function; 3033extern Lisp_Object Vsignaling_function;
@@ -3071,23 +3100,23 @@ extern Lisp_Object save_restriction_save (void);
3071extern Lisp_Object save_excursion_restore (Lisp_Object); 3100extern Lisp_Object save_excursion_restore (Lisp_Object);
3072extern Lisp_Object save_restriction_restore (Lisp_Object); 3101extern Lisp_Object save_restriction_restore (Lisp_Object);
3073extern _Noreturn void time_overflow (void); 3102extern _Noreturn void time_overflow (void);
3074extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, int); 3103extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
3075extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, 3104extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
3076 ptrdiff_t, int); 3105 ptrdiff_t, bool);
3077extern void init_editfns (void); 3106extern void init_editfns (void);
3078const char *get_system_name (void); 3107const char *get_system_name (void);
3079extern void syms_of_editfns (void); 3108extern void syms_of_editfns (void);
3080extern void set_time_zone_rule (const char *); 3109extern void set_time_zone_rule (const char *);
3081 3110
3082/* Defined in buffer.c. */ 3111/* Defined in buffer.c. */
3083extern int mouse_face_overlay_overlaps (Lisp_Object); 3112extern bool mouse_face_overlay_overlaps (Lisp_Object);
3084extern _Noreturn void nsberror (Lisp_Object); 3113extern _Noreturn void nsberror (Lisp_Object);
3085extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t); 3114extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t);
3086extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t); 3115extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t);
3087extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t); 3116extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t);
3088extern void report_overlay_modification (Lisp_Object, Lisp_Object, int, 3117extern void report_overlay_modification (Lisp_Object, Lisp_Object, bool,
3089 Lisp_Object, Lisp_Object, Lisp_Object); 3118 Lisp_Object, Lisp_Object, Lisp_Object);
3090extern int overlay_touches_p (ptrdiff_t); 3119extern bool overlay_touches_p (ptrdiff_t);
3091extern Lisp_Object Vbuffer_alist; 3120extern Lisp_Object Vbuffer_alist;
3092extern Lisp_Object set_buffer_if_live (Lisp_Object); 3121extern Lisp_Object set_buffer_if_live (Lisp_Object);
3093extern Lisp_Object other_buffer_safely (Lisp_Object); 3122extern Lisp_Object other_buffer_safely (Lisp_Object);
@@ -3234,7 +3263,7 @@ extern void syms_of_frame (void);
3234extern char **initial_argv; 3263extern char **initial_argv;
3235extern int initial_argc; 3264extern int initial_argc;
3236#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS) 3265#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS)
3237extern int display_arg; 3266extern bool display_arg;
3238#endif 3267#endif
3239extern Lisp_Object decode_env_path (const char *, const char *); 3268extern Lisp_Object decode_env_path (const char *, const char *);
3240extern Lisp_Object empty_unibyte_string, empty_multibyte_string; 3269extern 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
3256void shut_down_emacs (int, int, Lisp_Object); 3285extern void shut_down_emacs (int, Lisp_Object);
3257/* Nonzero means don't do interactive redisplay and don't change tty modes. */ 3286
3258extern int noninteractive; 3287/* True means don't do interactive redisplay and don't change tty modes. */
3288extern bool noninteractive;
3259 3289
3260/* Nonzero means remove site-lisp directories from load-path. */ 3290/* True means remove site-lisp directories from load-path. */
3261extern int no_site_lisp; 3291extern 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. */
3265extern int daemon_pipe[2]; 3295extern 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. */
3269extern int inhibit_window_system; 3299extern bool fatal_error_in_progress;
3270/* Nonzero means that a filter or a sentinel is running. */ 3300
3271extern int running_asynch_code; 3301/* True means don't do use window-system-specific display code. */
3302extern bool inhibit_window_system;
3303/* True means that a filter or a sentinel is running. */
3304extern bool running_asynch_code;
3272 3305
3273/* Defined in process.c. */ 3306/* Defined in process.c. */
3274extern Lisp_Object QCtype, Qlocal; 3307extern 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
3303extern int child_setup (int, int, int, char **, int, Lisp_Object); 3336extern int child_setup (int, int, int, char **, bool, Lisp_Object);
3304extern void init_callproc_1 (void); 3337extern void init_callproc_1 (void);
3305extern void init_callproc (void); 3338extern void init_callproc (void);
3306extern void set_initial_environment (void); 3339extern 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 */
3310extern Lisp_Object Qfunction_documentation; 3343extern Lisp_Object Qfunction_documentation;
3311extern Lisp_Object read_doc_string (Lisp_Object); 3344extern Lisp_Object read_doc_string (Lisp_Object);
3312extern Lisp_Object get_doc_string (Lisp_Object, int, int); 3345extern Lisp_Object get_doc_string (Lisp_Object, bool, bool);
3313extern void syms_of_doc (void); 3346extern void syms_of_doc (void);
3314extern int read_bytecode_char (int); 3347extern int read_bytecode_char (bool);
3315 3348
3316/* Defined in bytecode.c */ 3349/* Defined in bytecode.c */
3317extern Lisp_Object Qbytecode; 3350extern Lisp_Object Qbytecode;
@@ -3382,7 +3415,8 @@ extern void child_setup_tty (int);
3382extern void setup_pty (int); 3415extern void setup_pty (int);
3383extern int set_window_size (int, int, int); 3416extern int set_window_size (int, int, int);
3384extern EMACS_INT get_random (void); 3417extern EMACS_INT get_random (void);
3385extern void seed_random (long); 3418extern void seed_random (void *, ptrdiff_t);
3419extern void init_random (void);
3386extern int emacs_open (const char *, int, int); 3420extern int emacs_open (const char *, int, int);
3387extern int emacs_close (int); 3421extern int emacs_close (int);
3388extern ptrdiff_t emacs_read (int, char *, ptrdiff_t); 3422extern ptrdiff_t emacs_read (int, char *, ptrdiff_t);
@@ -3411,11 +3445,10 @@ extern void syms_of_ccl (void);
3411extern void syms_of_dired (void); 3445extern void syms_of_dired (void);
3412extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, 3446extern 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 */
3417extern int *char_ins_del_vector; 3451extern int *char_ins_del_vector;
3418extern void mark_ttys (void);
3419extern void syms_of_term (void); 3452extern void syms_of_term (void);
3420extern _Noreturn void fatal (const char *msgid, ...) 3453extern _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;
3443extern Lisp_Object Qnormal; 3476extern Lisp_Object Qnormal;
3444extern Lisp_Object QCfamily, QCweight, QCslant; 3477extern Lisp_Object QCfamily, QCweight, QCslant;
3445extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground; 3478extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground;
3479extern Lisp_Object Qextra_light, Qlight, Qsemi_light, Qsemi_bold;
3480extern Lisp_Object Qbold, Qextra_bold, Qultra_bold;
3481extern Lisp_Object Qoblique, Qitalic;
3446extern Lisp_Object Vface_alternative_font_family_alist; 3482extern Lisp_Object Vface_alternative_font_family_alist;
3447extern Lisp_Object Vface_alternative_font_registry_alist; 3483extern Lisp_Object Vface_alternative_font_registry_alist;
3448extern void syms_of_xfaces (void); 3484extern void syms_of_xfaces (void);
@@ -3487,9 +3523,9 @@ void syms_of_dbusbind (void);
3487extern char *emacs_root_dir (void); 3523extern 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. */
3492extern int initialized; 3528extern bool initialized;
3493 3529
3494extern int immediate_quit; /* Nonzero means ^G can quit instantly */ 3530extern int immediate_quit; /* Nonzero means ^G can quit instantly */
3495 3531
@@ -3556,7 +3592,7 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object);
3556extern void *record_xmalloc (size_t); 3592extern 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
3665LISP_INLINE int
3666functionp (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
3629INLINE_HEADER_END 3697INLINE_HEADER_END
3630 3698
3631#endif /* EMACS_LISP_H */ 3699#endif /* EMACS_LISP_H */