diff src/console.h @ 412:697ef44129c6 r21-2-14

Import from CVS: tag r21-2-14
author cvs
date Mon, 13 Aug 2007 11:20:41 +0200
parents de805c49cfc1
children da8ed4261e83
line wrap: on
line diff
--- a/src/console.h	Mon Aug 13 11:19:22 2007 +0200
+++ b/src/console.h	Mon Aug 13 11:20:41 2007 +0200
@@ -22,8 +22,8 @@
 
 /* Written by Ben Wing. */
 
-#ifndef INCLUDED_console_h_
-#define INCLUDED_console_h_
+#ifndef _XEMACS_CONSOLE_H_
+#define _XEMACS_CONSOLE_H_
 
 /* Devices and consoles are similar entities.  The idea is that
    a console represents a physical keyboard/mouse/other-input-source
@@ -55,23 +55,20 @@
   DM_font_menubar, DM_font_dialog, DM_size_cursor, DM_size_scrollbar,
   DM_size_menu, DM_size_toolbar, DM_size_toolbar_button,
   DM_size_toolbar_border, DM_size_icon, DM_size_icon_small, DM_size_device,
-  DM_size_workspace, DM_offset_workspace, DM_size_device_mm, DM_device_dpi,
-  DM_num_bit_planes, DM_num_color_cells, DM_mouse_buttons, DM_swap_buttons,
-  DM_show_sounds, DM_slow_device, DM_security
+  DM_size_workspace, DM_size_device_mm, DM_device_dpi, DM_num_bit_planes,
+  DM_num_color_cells, DM_mouse_buttons, DM_swap_buttons, DM_show_sounds,
+  DM_slow_device, DM_security
 };
 
-extern const struct struct_description cted_description;
-extern const struct struct_description console_methods_description;
-
 struct console_methods
 {
-  const char *name;	/* Used by print_console, print_device, print_frame */
+  CONST char *name;	/* Used by print_console, print_device, print_frame */
   Lisp_Object symbol;
   Lisp_Object predicate_symbol;
 
   /* console methods */
   void (*init_console_method) (struct console *, Lisp_Object props);
-  void (*mark_console_method) (struct console *);
+  void (*mark_console_method) (struct console *, void (*)(Lisp_Object));
   int (*initially_selected_for_input_method) (struct console *);
   void (*delete_console_method) (struct console *);
   Lisp_Object (*semi_canonicalize_console_connection_method)
@@ -89,24 +86,10 @@
   void (*init_device_method) (struct device *, Lisp_Object props);
   void (*finish_init_device_method) (struct device *, Lisp_Object props);
   void (*delete_device_method) (struct device *);
-  void (*mark_device_method) (struct device *);
+  void (*mark_device_method) (struct device *, void (*)(Lisp_Object));
   void (*asynch_device_change_method) (void);
-  Lisp_Object (*device_system_metrics_method) (struct device *,
-                                               enum device_metrics);
+  Lisp_Object (*device_system_metrics_method) (struct device *, enum device_metrics);
   unsigned int (*device_implementation_flags_method) (void);
-  Lisp_Object (*own_selection_method)(Lisp_Object selection_name,
-                                      Lisp_Object selection_value,
-                                      Lisp_Object how_to_add,
-                                      Lisp_Object selection_type);
-  void (*disown_selection_method)(Lisp_Object selection_name,
-                                  Lisp_Object timeval);
-  Lisp_Object (*get_foreign_selection_method) (Lisp_Object selection_symbol,
-                                               Lisp_Object target_type);
-  Lisp_Object (*selection_exists_p_method)(Lisp_Object selection_name,
-                                           Lisp_Object selection_type);
-  Lisp_Object (*available_selection_types_method)(Lisp_Object selection_name);
-  Lisp_Object (*register_selection_data_type_method)(Lisp_Object type_name);
-  Lisp_Object (*selection_data_type_name_method)(Lisp_Object type);
 
   /* frame methods */
   Lisp_Object *device_specific_frame_props;
@@ -115,7 +98,7 @@
   void (*init_frame_3_method) (struct frame *);
   void (*after_init_frame_method) (struct frame *, int first_on_device,
 				   int first_on_console);
-  void (*mark_frame_method) (struct frame *);
+  void (*mark_frame_method) (struct frame *, void (*)(Lisp_Object));
   void (*delete_frame_method) (struct frame *);
   void (*focus_on_frame_method) (struct frame *);
   void (*raise_frame_method) (struct frame *);
@@ -144,13 +127,12 @@
   Lisp_Object (*get_frame_parent_method) (struct frame *f);
   void (*update_frame_external_traits_method) (struct frame *f, Lisp_Object name);
   int (*frame_size_fixed_p_method) (struct frame *f);
-  void (*eject_page_method) (struct frame *f);
 
   /* redisplay methods */
   int (*left_margin_width_method) (struct window *);
   int (*right_margin_width_method) (struct window *);
   int (*text_width_method) (struct frame *f, struct face_cachel *cachel,
-			    const Emchar *str, Charcount len);
+			    CONST Emchar *str, Charcount len);
   void (*output_display_block_method) (struct window *, struct display_line *,
 				       int, int, int, int, int, int, int);
   int (*divider_height_method) (void);
@@ -161,57 +143,48 @@
 			       int, int, int, int,
 			       Lisp_Object, Lisp_Object, Lisp_Object);
   void (*clear_frame_method) (struct frame *);
-  void (*window_output_begin_method) (struct window *);
-  void (*frame_output_begin_method) (struct frame *);
-  void (*window_output_end_method) (struct window *);
-  void (*frame_output_end_method) (struct frame *);
+  void (*output_begin_method) (struct device *);
+  void (*output_end_method) (struct device *);
   int (*flash_method) (struct device *);
   void (*ring_bell_method) (struct device *, int volume, int pitch,
 			    int duration);
   void (*frame_redraw_cursor_method) (struct frame *f);
   void (*set_final_cursor_coords_method) (struct frame *, int, int);
-  void (*bevel_area_method) (struct window *, face_index, int, int, int, int, int,
-			     int, enum edge_style);
-  void (*output_pixmap_method) (struct window *w, Lisp_Object image_instance,
-				struct display_box *db, struct display_glyph_area *dga,
-				face_index findex, int cursor_start, int cursor_width,
-				int cursor_height, int offset_bitmap);
-  void (*output_string_method) (struct window *w, struct display_line *dl,
-				Emchar_dynarr *buf, int xpos, int xoffset,
-				int start_pixpos, int width, face_index findex,
-				int cursor, int cursor_start, int cursor_width,
-				int cursor_height);
+
   /* color methods */
-  int (*initialize_color_instance_method) (Lisp_Color_Instance *,
+  int (*initialize_color_instance_method) (struct Lisp_Color_Instance *,
 					   Lisp_Object name,
 					   Lisp_Object device,
 					   Error_behavior errb);
-  void (*mark_color_instance_method) (Lisp_Color_Instance *);
-  void (*print_color_instance_method) (Lisp_Color_Instance *,
+  void (*mark_color_instance_method) (struct Lisp_Color_Instance *,
+				      void (*)(Lisp_Object));
+  void (*print_color_instance_method) (struct Lisp_Color_Instance *,
 				       Lisp_Object printcharfun,
 				       int escapeflag);
-  void (*finalize_color_instance_method) (Lisp_Color_Instance *);
-  int (*color_instance_equal_method) (Lisp_Color_Instance *,
-				      Lisp_Color_Instance *,
+  void (*finalize_color_instance_method) (struct Lisp_Color_Instance *);
+  int (*color_instance_equal_method) (struct Lisp_Color_Instance *,
+				      struct Lisp_Color_Instance *,
 				      int depth);
-  unsigned long (*color_instance_hash_method) (Lisp_Color_Instance *,
+  unsigned long (*color_instance_hash_method) (struct Lisp_Color_Instance *,
 					       int depth);
-  Lisp_Object (*color_instance_rgb_components_method) (Lisp_Color_Instance *);
+  Lisp_Object (*color_instance_rgb_components_method)
+    (struct Lisp_Color_Instance *);
   int (*valid_color_name_p_method) (struct device *, Lisp_Object color);
 
   /* font methods */
-  int (*initialize_font_instance_method) (Lisp_Font_Instance *,
+  int (*initialize_font_instance_method) (struct Lisp_Font_Instance *,
 					  Lisp_Object name,
 					  Lisp_Object device,
 					  Error_behavior errb);
-  void (*mark_font_instance_method) (Lisp_Font_Instance *);
-  void (*print_font_instance_method) (Lisp_Font_Instance *,
+  void (*mark_font_instance_method) (struct Lisp_Font_Instance *,
+				     void (*)(Lisp_Object));
+  void (*print_font_instance_method) (struct Lisp_Font_Instance *,
 				      Lisp_Object printcharfun,
 				      int escapeflag);
-  void (*finalize_font_instance_method) (Lisp_Font_Instance *);
-  Lisp_Object (*font_instance_truename_method) (Lisp_Font_Instance *,
+  void (*finalize_font_instance_method) (struct Lisp_Font_Instance *);
+  Lisp_Object (*font_instance_truename_method) (struct Lisp_Font_Instance *,
 						Error_behavior errb);
-  Lisp_Object (*font_instance_properties_method) (Lisp_Font_Instance *);
+  Lisp_Object (*font_instance_properties_method) (struct Lisp_Font_Instance *);
   Lisp_Object (*list_fonts_method) (Lisp_Object pattern,
 				    Lisp_Object device);
   Lisp_Object (*find_charset_font_method) (Lisp_Object device,
@@ -219,31 +192,29 @@
 					   Lisp_Object charset);
   int (*font_spec_matches_charset_method) (struct device *d,
 					   Lisp_Object charset,
-					   const Bufbyte *nonreloc,
+					   CONST Bufbyte *nonreloc,
 					   Lisp_Object reloc,
 					   Bytecount offset,
 					   Bytecount length);
 
   /* image methods */
-  void (*mark_image_instance_method) (Lisp_Image_Instance *);
-  void (*print_image_instance_method) (Lisp_Image_Instance *,
+  void (*mark_image_instance_method) (struct Lisp_Image_Instance *,
+				      void (*)(Lisp_Object));
+  void (*print_image_instance_method) (struct Lisp_Image_Instance *,
 				       Lisp_Object printcharfun,
 				       int escapeflag);
-  void (*finalize_image_instance_method) (Lisp_Image_Instance *);
-  void (*unmap_subwindow_method) (Lisp_Image_Instance *);
-  void (*map_subwindow_method) (Lisp_Image_Instance *, int x, int y,
-				struct display_glyph_area* dga);
-  void (*resize_subwindow_method) (Lisp_Image_Instance *, int w, int h);
-  void (*update_subwindow_method) (Lisp_Image_Instance *);
-  void (*update_widget_method) (Lisp_Image_Instance *);
-  int (*image_instance_equal_method) (Lisp_Image_Instance *,
-				      Lisp_Image_Instance *,
+  void (*finalize_image_instance_method) (struct Lisp_Image_Instance *);
+  void (*unmap_subwindow_method) (struct Lisp_Image_Instance *);
+  void (*map_subwindow_method) (struct Lisp_Image_Instance *, int x, int y);
+  void (*resize_subwindow_method) (struct Lisp_Image_Instance *, int w, int h);
+  void (*update_subwindow_method) (struct Lisp_Image_Instance *);
+  int (*image_instance_equal_method) (struct Lisp_Image_Instance *,
+				      struct Lisp_Image_Instance *,
 				      int depth);
-  unsigned long (*image_instance_hash_method) (Lisp_Image_Instance *,
+  unsigned long (*image_instance_hash_method) (struct Lisp_Image_Instance *,
 					       int depth);
-  void (*init_image_instance_from_eimage_method) (Lisp_Image_Instance *ii,
+  void (*init_image_instance_from_eimage_method) (struct Lisp_Image_Instance *ii,
 						  int width, int height,
-						  int slices,
 						  unsigned char *eimage,
 						  int dest_mask,
 						  Lisp_Object instantiator,
@@ -301,18 +272,8 @@
 /*
  * Constants returned by device_implementation_flags_method
  */
-
 /* Set when device uses pixel-based geometry */
-#define XDEVIMPF_PIXEL_GEOMETRY	    0x00000001L
-
-/* Indicates that the device is a printer */
-#define XDEVIMPF_IS_A_PRINTER	    0x00000002L
-
-/* Do not automatically redisplay this device */
-#define XDEVIMPF_NO_AUTO_REDISPLAY  0x00000004L
-
-/* Do not delete the device when last frame's gone */
-#define XDEVIMPF_FRAMELESS_OK	    0x00000008L
+#define XDEVIMPF_PIXEL_GEOMETRY	  0x00000001L
 
 
 #define CONSOLE_TYPE_NAME(c) ((c)->conmeths->name)
@@ -379,29 +340,17 @@
     type##_console_methods = xnew_and_zero (struct console_methods);	\
     type##_console_methods->name = obj_name;				\
     type##_console_methods->symbol = Q##type;				\
-    defsymbol_nodump (&type##_console_methods->predicate_symbol, pred_sym);	\
+    defsymbol (&type##_console_methods->predicate_symbol, pred_sym);	\
     add_entry_to_console_type_list (Q##type, type##_console_methods);	\
     type##_console_methods->image_conversion_list = Qnil;		\
-    staticpro_nodump (&type##_console_methods->image_conversion_list);	\
-    dumpstruct (&type##_console_methods, &console_methods_description);	\
+    staticpro (&type##_console_methods->image_conversion_list);		\
 } while (0)
 
-#define REINITIALIZE_CONSOLE_TYPE(type) do {	\
-    staticpro_nodump (&type##_console_methods->predicate_symbol);	\
-    staticpro_nodump (&type##_console_methods->image_conversion_list);	\
-} while (0)
-
-
 /* Declare that console-type TYPE has method M; used in
    initialization routines */
 #define CONSOLE_HAS_METHOD(type, m) \
   (type##_console_methods->m##_method = type##_##m)
 
-/* Declare that console-type TYPE inherits method M
-   implementation from console-type FROMTYPE */
-#define CONSOLE_INHERITS_METHOD(type, fromtype, m) \
-  (type##_console_methods->m##_method = fromtype##_##m)
-
 struct console
 {
   struct lcrecord_header header;
@@ -447,6 +396,7 @@
 #define XCONSOLE(x) XRECORD (x, console, struct console)
 #define XSETCONSOLE(x, p) XSETRECORD (x, p, console)
 #define CONSOLEP(x) RECORDP (x, console)
+#define GC_CONSOLEP(x) GC_RECORDP (x, console)
 #define CHECK_CONSOLE(x) CHECK_RECORD (x, console)
 #define CONCHECK_CONSOLE(x) CONCHECK_RECORD (x, console)
 
@@ -464,9 +414,9 @@
 #define CONSOLE_TYPE_P(con, type) EQ (CONSOLE_TYPE (con), Q##type)
 
 #ifdef ERROR_CHECK_TYPECHECK
-INLINE_HEADER struct console *
+INLINE struct console *
 error_check_console_type (struct console *con, Lisp_Object sym);
-INLINE_HEADER struct console *
+INLINE struct console *
 error_check_console_type (struct console *con, Lisp_Object sym)
 {
   assert (EQ (CONSOLE_TYPE (con), sym));
@@ -603,4 +553,4 @@
 void set_console_last_nonminibuf_frame (struct console *con,
 					Lisp_Object frame);
 
-#endif /* INCLUDED_console_h_ */
+#endif /* _XEMACS_CONSOLE_H_ */