#
[bpt/emacs.git] / src / lisp.h
index d5e4aad..d40a129 100644 (file)
@@ -525,12 +525,23 @@ typedef struct interval *INTERVAL;
 
 struct Lisp_Cons
   {
+    /* Please do not use the names of these elements in code other
+       than the core lisp implementation.  Use XCAR and XCDR below.  */
+#ifdef HIDE_LISP_IMPLEMENTATION
+    Lisp_Object car_, cdr_;
+#else
     Lisp_Object car, cdr;
+#endif
   };
 
 /* Take the car or cdr of something known to be a cons cell.  */
+#ifdef HIDE_LISP_IMPLEMENTATION
+#define XCAR(c) (XCONS ((c))->car_)
+#define XCDR(c) (XCONS ((c))->cdr_)
+#else
 #define XCAR(c) (XCONS ((c))->car)
 #define XCDR(c) (XCONS ((c))->cdr)
+#endif
 
 /* Take the car or cdr of something whose type is not known.  */
 #define CAR(c)                                 \
@@ -1012,8 +1023,18 @@ struct Lisp_Float
   {
     Lisp_Object type;          /* essentially used for mark-bit
                                   and chaining when on free-list */
+#ifdef HIDE_LISP_IMPLEMENTATION
+    double data_;
+#else
     double data;
+#endif
   };
+
+#ifdef HIDE_LISP_IMPLEMENTATION
+#define XFLOAT_DATA(f) (XFLOAT (f)->data_)
+#else
+#define XFLOAT_DATA(f) (XFLOAT (f)->data)
+#endif
 #endif /* LISP_FLOAT_TYPE */
 
 /* A character, declared with the following typedef, is a member
@@ -1579,14 +1600,14 @@ void staticpro P_ ((Lisp_Object *));
 
 /* Evaluate expr, UNGCPRO, and then return the value of expr.  */
 #define RETURN_UNGCPRO(expr)                   \
-if (1)                                         \
+do                                             \
     {                                          \
       Lisp_Object ret_ungc_val;                        \
       ret_ungc_val = (expr);                   \
       UNGCPRO;                                 \
       return ret_ungc_val;                     \
     }                                          \
-else
+while (0)
 \f
 /* Declare a Lisp-callable function.  The MAXARGS parameter has the same
    meaning as in the DEFUN macro, and is used to construct a prototype.  */
@@ -1747,6 +1768,8 @@ extern Lisp_Object detect_coding_system P_ ((unsigned char *, int, int));
 extern void init_coding P_ ((void));
 extern void init_coding_once P_ ((void));
 extern void syms_of_coding P_ ((void));
+extern Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object,
+                                                    int));
 
 /* Defined in charset.c */
 extern int nonascii_insert_offset;
@@ -1772,6 +1795,7 @@ extern void init_syntax_once P_ ((void));
 extern void syms_of_syntax P_ ((void));
 
 /* Defined in fns.c */
+extern void sweep_weak_hash_tables P_ ((void));
 extern Lisp_Object Qstring_lessp;
 extern Lisp_Object Vfeatures;
 unsigned sxhash P_ ((Lisp_Object, int));
@@ -1785,6 +1809,7 @@ void hash_put P_ ((struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
 void hash_remove P_ ((struct Lisp_Hash_Table *, Lisp_Object));
 void hash_clear P_ ((struct Lisp_Hash_Table *));
 void remove_hash_entry P_ ((struct Lisp_Hash_Table *, int));
+extern void init_fns P_ ((void));
 EXFUN (Fsxhash, 1);
 EXFUN (Fmake_hash_table, MANY);
 EXFUN (Fcopy_hash_table, 1);
@@ -1908,22 +1933,23 @@ extern void replace_range P_ ((int, int, Lisp_Object, int, int, int));
 extern void syms_of_insdel P_ ((void));
 
 /* Defined in dispnew.c */
+extern Lisp_Object selected_frame;
 EXFUN (Fding, 1);
+EXFUN (Fredraw_frame, 1);
 EXFUN (Fredraw_display, 0);
 EXFUN (Fsleep_for, 2);
 EXFUN (Fsit_for, 3);
 extern Lisp_Object sit_for P_ ((int, int, int, int, int));
 extern void init_display P_ ((void));
 extern void syms_of_display P_ ((void));
+extern void safe_bcopy P_ ((char *, char *, int));
 
 /* Defined in xdisp.c */
-extern Lisp_Object Vresize_mini_config;
-extern struct frame *resize_mini_frame;
-extern int resize_mini_initial_height;
 extern Lisp_Object Qinhibit_redisplay;
 extern Lisp_Object Vmessage_log_max;
 extern int message_enable_multibyte;
 extern Lisp_Object echo_area_buffer[2];
+extern void check_message_stack P_ ((void));
 extern void setup_echo_area_for_printing P_ ((int));
 extern int push_message P_ ((void));
 extern void pop_message P_ ((void));
@@ -1952,7 +1978,15 @@ extern void prepare_menu_bars P_ ((void));
 extern void syms_of_xdisp P_ ((void));
 extern void init_xdisp P_ ((void));
 
+/* Defined in vm-limit.c.  */
+#ifdef __STDC__
+extern void memory_warnings P_ ((void *, void (*warnfun) ()));
+#else
+extern void memory_warnings P_ ((char *, void (*warnfun) ()));
+#endif
+                               
 /* Defined in alloc.c */
+extern void uninterrupt_malloc P_ ((void));
 extern void malloc_warning P_ ((char *));
 extern void memory_full P_ ((void));
 extern void buffer_memory_full P_ ((void));
@@ -2006,6 +2040,7 @@ extern void syms_of_alloc P_ ((void));
 
 /* Defined in print.c */
 extern Lisp_Object Vprin1_to_string_buffer;
+extern void debug_print P_ ((Lisp_Object));
 EXFUN (Fprin1, 2);
 EXFUN (Fprin1_to_string, 2);
 EXFUN (Fprinc, 2);
@@ -2169,14 +2204,17 @@ EXFUN (Fnarrow_to_region, 2);
 EXFUN (Fwiden, 0);
 EXFUN (Fuser_login_name, 1);
 EXFUN (Fsystem_name, 0);
+EXFUN (Fcurrent_time, 0);
 extern int clip_to_bounds P_ ((int, int, int));
 extern Lisp_Object make_buffer_string P_ ((int, int, int));
 extern Lisp_Object make_buffer_string_both P_ ((int, int, int, int, int));
 extern void init_editfns P_ ((void));
 extern void syms_of_editfns P_ ((void));
+EXFUN (Fcurrent_message, 0);
 
 /* defined in buffer.c */
 extern void nsberror P_ ((Lisp_Object));
+extern char *no_switch_window P_ ((Lisp_Object window));
 EXFUN (Fset_buffer_multibyte, 1);
 EXFUN (Foverlay_start, 1);
 EXFUN (Foverlay_end, 1);
@@ -2237,6 +2275,7 @@ extern void syms_of_marker P_ ((void));
 extern Lisp_Object Qfile_error;
 EXFUN (Ffind_file_name_handler, 2);
 EXFUN (Ffile_name_as_directory, 1);
+EXFUN (Fmake_temp_name, 1);
 EXFUN (Fexpand_file_name, 2);
 EXFUN (Ffile_name_nondirectory, 1);
 EXFUN (Fsubstitute_in_file_name, 1);
@@ -2254,9 +2293,12 @@ EXFUN (Fwrite_region, 7);
 EXFUN (Ffile_readable_p, 1);
 EXFUN (Ffile_executable_p, 1);
 EXFUN (Fread_file_name, 5);
+extern Lisp_Object close_file_unwind P_ ((Lisp_Object));
 extern void report_file_error P_ ((char *, Lisp_Object));
 extern int internal_delete_file P_ ((Lisp_Object));
 extern void syms_of_fileio P_ ((void));
+EXFUN (Fmake_temp_name, 1);
+extern void init_fileio_once P_ ((void));
 
 /* Defined in abbrev.c */
 
@@ -2264,6 +2306,7 @@ extern Lisp_Object Vfundamental_mode_abbrev_table;
 extern void syms_of_abbrev P_ ((void));
 
 /* defined in search.c */
+extern void shrink_regexp_cache P_ ((void));
 EXFUN (Fstring_match, 3);
 extern void restore_match_data P_ ((void));
 EXFUN (Fmatch_data, 2);
@@ -2334,7 +2377,7 @@ EXFUN (Frecursive_edit, 0);
 EXFUN (Fcommand_execute, 4);
 EXFUN (Finput_pending_p, 0);
 extern Lisp_Object menu_bar_items P_ ((Lisp_Object));
-extern Lisp_Object toolbar_items P_ ((Lisp_Object, int *));
+extern Lisp_Object tool_bar_items P_ ((Lisp_Object, int *));
 extern Lisp_Object Qvertical_scroll_bar;
 extern void discard_mouse_events ();
 EXFUN (Fevent_convert_list, 1);
@@ -2407,6 +2450,7 @@ extern int compare_window_configurations P_ ((Lisp_Object, Lisp_Object, int));
 EXFUN (Fcoordinates_in_window_p, 2);
 EXFUN (Fwindow_at, 3);
 EXFUN (Fpos_visible_in_window_p, 2);
+extern void mark_window_cursors_off P_ ((struct window *));
 extern int window_internal_height P_ ((struct window *));
 extern int window_internal_width P_ ((struct window *));
 EXFUN (Frecenter, 1);
@@ -2493,6 +2537,7 @@ extern void syms_of_process P_ ((void));
 /* defined in callproc.c */
 extern Lisp_Object Vexec_path, Vexec_directory, Vdata_directory;
 extern Lisp_Object Vdoc_directory;
+EXFUN (Fcall_process, MANY);
 extern int child_setup P_ ((int, int, int, char **, int, Lisp_Object));
 extern void init_callproc_1 P_ ((void));
 extern void init_callproc P_ ((void));
@@ -2507,6 +2552,7 @@ EXFUN (Fdocumentation_property, 3);
 extern Lisp_Object read_doc_string P_ ((Lisp_Object));
 extern Lisp_Object get_doc_string P_ ((Lisp_Object, int, int));
 extern void syms_of_doc P_ ((void));
+extern int read_bytecode_char P_ ((int));
 
 /* defined in bytecode.c */
 extern Lisp_Object Qbytecode;
@@ -2548,6 +2594,10 @@ EXFUN (Fprevious_char_property_change, 2);
 EXFUN (Fnext_char_property_change, 2);
 extern void report_interval_modification P_ ((Lisp_Object, Lisp_Object));
 extern void syms_of_textprop P_ ((void));
+extern Lisp_Object next_single_char_property_change P_ ((Lisp_Object,
+                                                        Lisp_Object,
+                                                        Lisp_Object,
+                                                        Lisp_Object));
 
 /* defined in intervals.c */
 extern Lisp_Object get_local_map P_ ((int, struct buffer *));
@@ -2558,6 +2608,7 @@ EXFUN (Fx_popup_dialog, 2);
 extern void syms_of_xmenu P_ ((void));
 
 /* defined in sysdep.c */
+extern void stuff_char P_ ((char c));
 extern void init_sigio P_ ((int));
 extern void request_sigio P_ ((void));
 extern void unrequest_sigio P_ ((void));
@@ -2585,6 +2636,11 @@ extern void lock_file P_ ((Lisp_Object));
 extern void unlock_file P_ ((Lisp_Object));
 extern void unlock_buffer P_ ((struct buffer *));
 extern void syms_of_filelock P_ ((void));
+extern void init_filelock P_ ((void));
+
+/* Defined in sound.c */
+extern void syms_of_sound P_ ((void));
+extern void init_sound P_ ((void));
 
 /* Defined in category.c */
 extern void init_category_once P_ ((void));
@@ -2594,6 +2650,7 @@ extern void syms_of_category P_ ((void));
 extern void syms_of_ccl P_ ((void));
 
 /* Defined in dired.c */
+EXFUN (Ffile_attributes, 1);
 extern void syms_of_dired P_ ((void));
 
 /* Defined in mocklisp.c */
@@ -2601,6 +2658,7 @@ extern void syms_of_mocklisp P_ ((void));
 
 /* Defined in term.c */
 extern void syms_of_term P_ ((void));
+extern void fatal ();
 
 #ifdef HAVE_X_WINDOWS
 /* Defined in fontset.c */
@@ -2611,9 +2669,15 @@ EXFUN (Fset_fontset_font, 4);
 /* Defined in xfaces.c */
 extern void syms_of_xfaces P_ ((void));
 
+/* Defined in getloadavg.c */
+extern int getloadavg P_ ((double *, int));
+
 #ifdef HAVE_X_WINDOWS
 /* Defined in xfns.c */
+extern void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
 extern void syms_of_xfns P_ ((void));
+EXFUN (Fx_hide_busy_cursor, 1);
+extern void init_xfns P_ ((void));
 #endif
 
 /* Defined in xselect.c */
@@ -2621,6 +2685,9 @@ extern void syms_of_xselect P_ ((void));
 
 /* Defined in xterm.c */
 extern void syms_of_xterm P_ ((void));
+
+/* Defined in getloadavg.c */
+extern int getloadavg P_ ((double [], int));
 \f
 /* Nonzero means Emacs has already been initialized.
    Used during startup to detect startup of dumped Emacs.  */