annotate src/console-impl.h @ 934:c925bacdda60

[xemacs-hg @ 2002-07-29 09:21:12 by michaels] 2002-07-17 Marcus Crestani <crestani@informatik.uni-tuebingen.de> Markus Kaltenbach <makalten@informatik.uni-tuebingen.de> Mike Sperber <mike@xemacs.org> configure flag to turn these changes on: --use-kkcc First we added a dumpable flag to lrecord_implementation. It shows, if the object is dumpable and should be processed by the dumper. * lrecord.h (struct lrecord_implementation): added dumpable flag (MAKE_LRECORD_IMPLEMENTATION): fitted the different makro definitions to the new lrecord_implementation and their calls. Then we changed mark_object, that it no longer needs a mark method for those types that have pdump descritions. * alloc.c: (mark_object): If the object has a description, the new mark algorithm is called, and the object is marked according to its description. Otherwise it uses the mark method like before. These procedures mark objects according to their descriptions. They are modeled on the corresponding pdumper procedures. (mark_with_description): (get_indirect_count): (structure_size): (mark_struct_contents): These procedures still call mark_object, this is needed while there are Lisp_Objects without descriptions left. We added pdump descriptions for many Lisp_Objects: * extents.c: extent_auxiliary_description * database.c: database_description * gui.c: gui_item_description * scrollbar.c: scrollbar_instance_description * toolbar.c: toolbar_button_description * event-stream.c: command_builder_description * mule-charset.c: charset_description * device-msw.c: devmode_description * dialog-msw.c: mswindows_dialog_id_description * eldap.c: ldap_description * postgresql.c: pgconn_description pgresult_description * tooltalk.c: tooltalk_message_description tooltalk_pattern_description * ui-gtk.c: emacs_ffi_description emacs_gtk_object_description * events.c: * events.h: * event-stream.c: * event-Xt.c: * event-gtk.c: * event-tty.c: To write a pdump description for Lisp_Event, we converted every struct in the union event to a Lisp_Object. So we created nine new Lisp_Objects: Lisp_Key_Data, Lisp_Button_Data, Lisp_Motion_Data, Lisp_Process_Data, Lisp_Timeout_Data, Lisp_Eval_Data, Lisp_Misc_User_Data, Lisp_Magic_Data, Lisp_Magic_Eval_Data. We also wrote makro selectors and mutators for the fields of the new designed Lisp_Event and added everywhere these new abstractions. We implemented XD_UNION support in (mark_with_description), so we can describe exspecially console/device specific data with XD_UNION. To describe with XD_UNION, we added a field to these objects, which holds the variant type of the object. This field is initialized in the appendant constructor. The variant is an integer, it has also to be described in an description, if XD_UNION is used. XD_UNION is used in following descriptions: * console.c: console_description (get_console_variant): returns the variant (create_console): added variant initialization * console.h (console_variant): the different console types * console-impl.h (struct console): added enum console_variant contype * device.c: device_description (Fmake_device): added variant initialization * device-impl.h (struct device): added enum console_variant devtype * objects.c: image_instance_description font_instance_description (Fmake_color_instance): added variant initialization (Fmake_font_instance): added variant initialization * objects-impl.h (struct Lisp_Color_Instance): added color_instance_type * objects-impl.h (struct Lisp_Font_Instance): added font_instance_type * process.c: process_description (make_process_internal): added variant initialization * process.h (process_variant): the different process types
author michaels
date Mon, 29 Jul 2002 09:21:25 +0000
parents c15f25529e61
children e22b0213b713
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
1 /* Define console object for XEmacs.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
2 Copyright (C) 1996, 2002 Ben Wing
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
3
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
4 This file is part of XEmacs.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
5
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
9 later version.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
10
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
14 for more details.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
15
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
20
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
22
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
23 /* Written by Ben Wing. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
24
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
25 #ifndef INCLUDED_console_impl_h_
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
26 #define INCLUDED_console_impl_h_
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
27
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
28 #include "console.h"
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
29
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
30 extern const struct struct_description cted_description;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
31 extern const struct struct_description console_methods_description;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
32
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
33
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
34 /*
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
35 * Constants returned by device_implementation_flags_method
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
36 */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
37
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
38 /* Set when device uses pixel-based geometry */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
39 #define XDEVIMPF_PIXEL_GEOMETRY 0x00000001L
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
40
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
41 /* Indicates that the device is a printer */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
42 #define XDEVIMPF_IS_A_PRINTER 0x00000002L
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
43
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
44 /* Do not automatically redisplay this device */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
45 #define XDEVIMPF_NO_AUTO_REDISPLAY 0x00000004L
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
46
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
47 /* Do not delete the device when last frame's gone */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
48 #define XDEVIMPF_FRAMELESS_OK 0x00000008L
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
49
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
50 /* Do not preempt resiaply of frame or device once it starts */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
51 #define XDEVIMPF_DONT_PREEMPT_REDISPLAY 0x00000010L
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
52
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
53 struct console_methods
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
54 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
55 const char *name; /* Used by print_console, print_device, print_frame */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
56 Lisp_Object symbol;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
57 Lisp_Object predicate_symbol;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
58 unsigned int flags; /* Read-only implementation flags, set once upon
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
59 console type creation. INITIALIZE_CONSOLE_TYPE sets
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
60 this member to 0. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
61
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
62 /* console methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
63 void (*init_console_method) (struct console *, Lisp_Object props);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
64 void (*mark_console_method) (struct console *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
65 int (*initially_selected_for_input_method) (struct console *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
66 void (*delete_console_method) (struct console *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
67 Lisp_Object (*semi_canonicalize_console_connection_method)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
68 (Lisp_Object connection, Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
69 Lisp_Object (*semi_canonicalize_device_connection_method)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
70 (Lisp_Object connection, Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
71 Lisp_Object (*canonicalize_console_connection_method)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
72 (Lisp_Object connection, Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
73 Lisp_Object (*canonicalize_device_connection_method)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
74 (Lisp_Object connection, Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
75 Lisp_Object (*device_to_console_connection_method)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
76 (Lisp_Object connection, Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
77
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
78 /* device methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
79 void (*init_device_method) (struct device *, Lisp_Object props);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
80 void (*finish_init_device_method) (struct device *, Lisp_Object props);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
81 void (*delete_device_method) (struct device *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
82 void (*mark_device_method) (struct device *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
83 void (*asynch_device_change_method) (void);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
84 Lisp_Object (*device_system_metrics_method) (struct device *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
85 enum device_metrics);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
86 Lisp_Object (*own_selection_method)(Lisp_Object selection_name,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
87 Lisp_Object selection_value,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
88 Lisp_Object how_to_add,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
89 Lisp_Object selection_type,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
90 int owned_p);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
91 void (*disown_selection_method)(Lisp_Object selection_name,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
92 Lisp_Object timeval);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
93 Lisp_Object (*get_foreign_selection_method) (Lisp_Object selection_symbol,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
94 Lisp_Object target_type);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
95 Lisp_Object (*selection_exists_p_method)(Lisp_Object selection_name,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
96 Lisp_Object selection_type);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
97 Lisp_Object (*available_selection_types_method)(Lisp_Object selection_name);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
98 Lisp_Object (*register_selection_data_type_method)(Lisp_Object type_name);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
99 Lisp_Object (*selection_data_type_name_method)(Lisp_Object type);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
100
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
101 /* frame methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
102 Lisp_Object *device_specific_frame_props;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
103 void (*init_frame_1_method) (struct frame *, Lisp_Object properties,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
104 int frame_name_is_defaulted);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
105 void (*init_frame_2_method) (struct frame *, Lisp_Object properties);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
106 void (*init_frame_3_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
107 void (*after_init_frame_method) (struct frame *, int first_on_device,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
108 int first_on_console);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
109 void (*mark_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
110 void (*delete_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
111 void (*focus_on_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
112 void (*raise_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
113 void (*lower_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
114 void (*enable_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
115 void (*disable_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
116 int (*get_mouse_position_method) (struct device *d, Lisp_Object *frame,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
117 int *x, int *y);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
118 void (*set_mouse_position_method) (struct window *w, int x, int y);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
119 void (*make_frame_visible_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
120 void (*make_frame_invisible_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
121 void (*iconify_frame_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
122 Lisp_Object (*frame_property_method) (struct frame *f, Lisp_Object prop);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
123 int (*internal_frame_property_p_method) (struct frame *f,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
124 Lisp_Object prop);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
125 Lisp_Object (*frame_properties_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
126 void (*set_frame_properties_method) (struct frame *f, Lisp_Object plist);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
127 void (*set_frame_size_method) (struct frame *f, int width, int height);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
128 void (*set_frame_position_method) (struct frame *f, int xoff, int yoff);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
129 int (*frame_visible_p_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
130 int (*frame_totally_visible_p_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
131 int (*frame_iconified_p_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
132 void (*set_title_from_ibyte_method) (struct frame *f, Ibyte *title);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
133 void (*set_icon_name_from_ibyte_method) (struct frame *f, Ibyte *title);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
134 void (*set_frame_pointer_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
135 void (*set_frame_icon_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
136 void (*popup_menu_method) (Lisp_Object menu, Lisp_Object event);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
137 Lisp_Object (*get_frame_parent_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
138 void (*update_frame_external_traits_method) (struct frame *f, Lisp_Object name);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
139 int (*frame_size_fixed_p_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
140 void (*eject_page_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
141
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
142 /* redisplay methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
143 int (*left_margin_width_method) (struct window *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
144 int (*right_margin_width_method) (struct window *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
145 int (*text_width_method) (struct frame *f, struct face_cachel *cachel,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
146 const Ichar *str, Charcount len);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
147 void (*output_display_block_method) (struct window *, struct display_line *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
148 int, int, int, int, int, int, int);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
149 int (*divider_height_method) (void);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
150 int (*eol_cursor_width_method) (void);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
151 void (*output_vertical_divider_method) (struct window *, int);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
152 void (*clear_to_window_end_method) (struct window *, int, int);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
153 void (*clear_region_method) (Lisp_Object, struct device*, struct frame*, face_index,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
154 int, int, int, int,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
155 Lisp_Object, Lisp_Object, Lisp_Object);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
156 void (*clear_frame_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
157 void (*window_output_begin_method) (struct window *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
158 void (*frame_output_begin_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
159 void (*window_output_end_method) (struct window *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
160 void (*frame_output_end_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
161 int (*flash_method) (struct device *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
162 void (*ring_bell_method) (struct device *, int volume, int pitch,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
163 int duration);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
164 void (*frame_redraw_cursor_method) (struct frame *f);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
165 void (*set_final_cursor_coords_method) (struct frame *, int, int);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
166 void (*bevel_area_method) (struct window *, face_index, int, int, int, int, int,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
167 int, enum edge_style);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
168 void (*output_pixmap_method) (struct window *w, Lisp_Object image_instance,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
169 struct display_box *db, struct display_glyph_area *dga,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
170 face_index findex, int cursor_start, int cursor_width,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
171 int cursor_height, int offset_bitmap);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
172 void (*output_string_method) (struct window *w, struct display_line *dl,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
173 Ichar_dynarr *buf, int xpos, int xoffset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
174 int start_pixpos, int width, face_index findex,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
175 int cursor, int cursor_start, int cursor_width,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
176 int cursor_height);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
177
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
178 /* color methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
179 int (*initialize_color_instance_method) (Lisp_Color_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
180 Lisp_Object name,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
181 Lisp_Object device,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
182 Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
183 void (*mark_color_instance_method) (Lisp_Color_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
184 void (*print_color_instance_method) (Lisp_Color_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
185 Lisp_Object printcharfun,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
186 int escapeflag);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
187 void (*finalize_color_instance_method) (Lisp_Color_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
188 int (*color_instance_equal_method) (Lisp_Color_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
189 Lisp_Color_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
190 int depth);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
191 Hashcode (*color_instance_hash_method) (Lisp_Color_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
192 int depth);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
193 Lisp_Object (*color_instance_rgb_components_method) (Lisp_Color_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
194 int (*valid_color_name_p_method) (struct device *, Lisp_Object color);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
195
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
196 /* font methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
197 int (*initialize_font_instance_method) (Lisp_Font_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
198 Lisp_Object name,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
199 Lisp_Object device,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
200 Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
201 void (*mark_font_instance_method) (Lisp_Font_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
202 void (*print_font_instance_method) (Lisp_Font_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
203 Lisp_Object printcharfun,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
204 int escapeflag);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
205 void (*finalize_font_instance_method) (Lisp_Font_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
206 Lisp_Object (*font_instance_truename_method) (Lisp_Font_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
207 Error_Behavior errb);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
208 Lisp_Object (*font_instance_properties_method) (Lisp_Font_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
209 Lisp_Object (*list_fonts_method) (Lisp_Object pattern,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
210 Lisp_Object device);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
211 Lisp_Object (*find_charset_font_method) (Lisp_Object device,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
212 Lisp_Object font,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
213 Lisp_Object charset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
214 int stage);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
215 int (*font_spec_matches_charset_method) (struct device *d,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
216 Lisp_Object charset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
217 const Ibyte *nonreloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
218 Lisp_Object reloc,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
219 Bytecount offset,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
220 Bytecount length,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
221 int stage);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
222
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
223 /* image methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
224 void (*mark_image_instance_method) (Lisp_Image_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
225 void (*print_image_instance_method) (Lisp_Image_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
226 Lisp_Object printcharfun,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
227 int escapeflag);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
228 void (*finalize_image_instance_method) (Lisp_Image_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
229 void (*unmap_subwindow_method) (Lisp_Image_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
230 void (*map_subwindow_method) (Lisp_Image_Instance *, int x, int y,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
231 struct display_glyph_area* dga);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
232 void (*resize_subwindow_method) (Lisp_Image_Instance *, int w, int h);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
233 void (*redisplay_subwindow_method) (Lisp_Image_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
234 void (*redisplay_widget_method) (Lisp_Image_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
235 /* Maybe this should be a specifier. Unfortunately specifiers don't
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
236 allow us to represent things at the toolkit level, which is what
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
237 is required here. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
238 int (*widget_border_width_method) (void);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
239 int (*widget_spacing_method) (Lisp_Image_Instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
240 int (*image_instance_equal_method) (Lisp_Image_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
241 Lisp_Image_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
242 int depth);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
243 Hashcode (*image_instance_hash_method) (Lisp_Image_Instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
244 int depth);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
245 void (*init_image_instance_from_eimage_method) (Lisp_Image_Instance *ii,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
246 int width, int height,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
247 int slices,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
248 unsigned char *eimage,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
249 int dest_mask,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
250 Lisp_Object instantiator,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
251 Lisp_Object domain);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
252 Lisp_Object (*locate_pixmap_file_method) (Lisp_Object file_method);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
253 int (*colorize_image_instance_method) (Lisp_Object image_instance,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
254 Lisp_Object fg, Lisp_Object bg);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
255 void (*widget_query_string_geometry_method) (Lisp_Object string,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
256 Lisp_Object face,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
257 int* width, int* height,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
258 Lisp_Object domain);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
259 Lisp_Object image_conversion_list;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
260
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
261 #ifdef HAVE_TOOLBARS
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
262 /* toolbar methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
263 void (*output_frame_toolbars_method) (struct frame *);
905
c15f25529e61 [xemacs-hg @ 2002-07-06 21:05:42 by andyp]
andyp
parents: 872
diff changeset
264 void (*clear_frame_toolbars_method) (struct frame *);
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
265 void (*initialize_frame_toolbars_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
266 void (*free_frame_toolbars_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
267 void (*output_toolbar_button_method) (struct frame *, Lisp_Object);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
268 void (*redraw_frame_toolbars_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
269 void (*redraw_exposed_toolbars_method) (struct frame *f, int x, int y,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
270 int width, int height);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
271 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
272
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
273 #ifdef HAVE_SCROLLBARS
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
274 /* scrollbar methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
275 int (*inhibit_scrollbar_slider_size_change_method) (void);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
276 void (*free_scrollbar_instance_method) (struct scrollbar_instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
277 void (*release_scrollbar_instance_method) (struct scrollbar_instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
278 void (*create_scrollbar_instance_method) (struct frame *, int,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
279 struct scrollbar_instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
280 void (*update_scrollbar_instance_values_method) (struct window *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
281 struct scrollbar_instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
282 int, int, int, int, int,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
283 int, int, int, int, int);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
284 void (*update_scrollbar_instance_status_method) (struct window *, int, int,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
285 struct
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
286 scrollbar_instance *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
287 void (*scrollbar_pointer_changed_in_window_method) (struct window *w);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
288 #ifdef MEMORY_USAGE_STATS
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
289 int (*compute_scrollbar_instance_usage_method) (struct device *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
290 struct scrollbar_instance *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
291 struct overhead_stats *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
292 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
293 #endif /* HAVE_SCROLLBARS */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
294
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
295 #ifdef HAVE_MENUBARS
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
296 /* menubar methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
297 void (*update_frame_menubars_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
298 void (*free_frame_menubars_method) (struct frame *);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
299 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
300
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
301 #ifdef HAVE_DIALOGS
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
302 /* dialog methods */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
303 Lisp_Object (*make_dialog_box_internal_method) (struct frame *,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
304 Lisp_Object type,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
305 Lisp_Object keys);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
306 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
307 };
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
308
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
309 #define CONMETH_TYPE(meths) ((meths)->symbol)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
310 #define CONMETH_IMPL_FLAG(meths, f) ((meths)->flags & (f))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
311
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
312 #define CONSOLE_TYPE_NAME(c) ((c)->conmeths->name)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
313 #define CONSOLE_TYPE(c) ((c)->conmeths->symbol)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
314 #define CONSOLE_IMPL_FLAG(c, f) CONMETH_IMPL_FLAG ((c)->conmeths, (f))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
315
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
316 /******** Accessing / calling a console method *********/
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
317
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
318 #define HAS_CONTYPE_METH_P(meth, m) ((meth)->m##_method)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
319 #define CONTYPE_METH(meth, m, args) (((meth)->m##_method) args)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
320
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
321 /* Call a void-returning console method, if it exists */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
322 #define MAYBE_CONTYPE_METH(meth, m, args) do { \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
323 struct console_methods *maybe_contype_meth_meth = (meth); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
324 if (HAS_CONTYPE_METH_P (maybe_contype_meth_meth, m)) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
325 CONTYPE_METH (maybe_contype_meth_meth, m, args); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
326 } while (0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
327
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
328 /* Call a console method, if it exists; otherwise return
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
329 the specified value - meth is multiply evaluated. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
330 #define CONTYPE_METH_OR_GIVEN(meth, m, args, given) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
331 (HAS_CONTYPE_METH_P (meth, m) ? \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
332 CONTYPE_METH (meth, m, args) : (given))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
333
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
334 /* Call an int-returning console method, if it exists; otherwise
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
335 return 0 */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
336 #define MAYBE_INT_CONTYPE_METH(meth, m, args) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
337 CONTYPE_METH_OR_GIVEN (meth, m, args, 0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
338
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
339 /* Call an Lisp-Object-returning console method, if it exists;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
340 otherwise return Qnil */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
341 #define MAYBE_LISP_CONTYPE_METH(meth, m, args) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
342 CONTYPE_METH_OR_GIVEN (meth, m, args, Qnil)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
343
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
344 /******** Same functions, operating on a console instead of a
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
345 struct console_methods ********/
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
346
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
347 #define HAS_CONMETH_P(c, m) HAS_CONTYPE_METH_P ((c)->conmeths, m)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
348 #define CONMETH(c, m, args) CONTYPE_METH ((c)->conmeths, m, args)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
349 #define MAYBE_CONMETH(c, m, args) MAYBE_CONTYPE_METH ((c)->conmeths, m, args)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
350 #define CONMETH_OR_GIVEN(c, m, args, given) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
351 CONTYPE_METH_OR_GIVEN((c)->conmeths, m, args, given)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
352 #define MAYBE_INT_CONMETH(c, m, args) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
353 MAYBE_INT_CONTYPE_METH ((c)->conmeths, m, args)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
354 #define MAYBE_LISP_CONMETH(c, m, args) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
355 MAYBE_LISP_CONTYPE_METH ((c)->conmeths, m, args)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
356
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
357 /******** Defining new console types ********/
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
358
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
359 typedef struct console_type_entry console_type_entry;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
360 struct console_type_entry
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
361 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
362 Lisp_Object symbol;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
363 struct console_methods *meths;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
364 };
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
365
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
366 #define DECLARE_CONSOLE_TYPE(type) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
367 extern struct console_methods * type##_console_methods
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
368
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
369 #define DEFINE_CONSOLE_TYPE(type) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
370 struct console_methods * type##_console_methods
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
371
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
372 #define INITIALIZE_CONSOLE_TYPE(type, obj_name, pred_sym) do { \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
373 type##_console_methods = xnew_and_zero (struct console_methods); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
374 type##_console_methods->name = obj_name; \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
375 type##_console_methods->symbol = Q##type; \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
376 defsymbol_nodump (&type##_console_methods->predicate_symbol, pred_sym); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
377 add_entry_to_console_type_list (Q##type, type##_console_methods); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
378 type##_console_methods->image_conversion_list = Qnil; \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
379 staticpro_nodump (&type##_console_methods->image_conversion_list); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
380 dump_add_root_struct_ptr (&type##_console_methods, &console_methods_description); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
381 } while (0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
382
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
383 #define REINITIALIZE_CONSOLE_TYPE(type) do { \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
384 staticpro_nodump (&type##_console_methods->predicate_symbol); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
385 staticpro_nodump (&type##_console_methods->image_conversion_list); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
386 } while (0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
387
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
388
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
389 /* Declare that console-type TYPE has method M; used in
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
390 initialization routines */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
391 #define CONSOLE_HAS_METHOD(type, m) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
392 (type##_console_methods->m##_method = type##_##m)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
393
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
394 /* Declare that console-type TYPE inherits method M
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
395 implementation from console-type FROMTYPE */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
396 #define CONSOLE_INHERITS_METHOD(type, fromtype, m) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
397 (type##_console_methods->m##_method = fromtype##_##m)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
398
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
399 /* Define console type implementation flags */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
400 #define CONSOLE_IMPLEMENTATION_FLAGS(type, flg) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
401 (type##_console_methods->flags = flg)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
402
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
403 struct console
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
404 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
405 struct lcrecord_header header;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
406
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
407 /* Description of this console's methods. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
408 struct console_methods *conmeths;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
409
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 905
diff changeset
410 #ifdef USE_KKCC
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 905
diff changeset
411 enum console_variant contype;
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 905
diff changeset
412 #endif /* USE_KKCC */
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 905
diff changeset
413
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
414 /* A structure of auxiliary data specific to the console type.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
415 struct x_console is used for X window frames; defined in console-x.h
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
416 struct tty_console is used to TTY's; defined in console-tty.h */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
417 void *console_data;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
418
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
419 /* Character that causes a quit. Normally C-g.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
420 #### Should be possible for this not to be ASCII. (Currently works
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
421 under Windows.) */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
422 Ichar quit_char;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
423
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
424 /* ----- begin partially-completed console localization of
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
425 event loop ---- */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
426
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
427 int local_var_flags;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
428
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
429 #define MARKED_SLOT(x) Lisp_Object x
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
430 #include "conslots.h"
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
431
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
432 /* Where to store the next keystroke of the macro.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
433 Index into con->kbd_macro_builder. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
434 int kbd_macro_ptr;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
435
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
436 /* The finalized section of the macro starts at kbd_macro_buffer and
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
437 ends before this. This is not the same as kbd_macro_pointer, because
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
438 we advance this to kbd_macro_pointer when a key's command is complete.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
439 This way, the keystrokes for "end-kbd-macro" are not included in the
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
440 macro. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
441 int kbd_macro_end;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
442
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
443 /* ----- end partially-completed console localization of event loop ---- */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
444
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
445 unsigned int input_enabled :1;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
446 };
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
447
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
448 /* Redefine basic properties more efficiently */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
449
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
450 #undef CONSOLE_LIVE_P
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
451 #define CONSOLE_LIVE_P(con) (!EQ (CONSOLE_TYPE (con), Qdead))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
452 #undef CONSOLE_DEVICE_LIST
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
453 #define CONSOLE_DEVICE_LIST(con) ((con)->device_list)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
454
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
455 #define CONSOLE_TYPE_P(con, type) EQ (CONSOLE_TYPE (con), Q##type)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
456
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
457 #ifdef ERROR_CHECK_TYPES
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
458 DECLARE_INLINE_HEADER (
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
459 struct console *
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
460 error_check_console_type (struct console *con, Lisp_Object sym)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
461 )
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
462 {
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
463 assert (EQ (CONSOLE_TYPE (con), sym));
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
464 return con;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
465 }
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
466 # define CONSOLE_TYPE_DATA(con, type) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
467 (*(struct type##_console **) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
468 &(error_check_console_type (con, Q##type))->console_data)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
469 #else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
470 # define CONSOLE_TYPE_DATA(con, type) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
471 (*(struct type##_console **) &((con)->console_data))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
472 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
473
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
474 #define CHECK_CONSOLE_TYPE(x, type) do { \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
475 CHECK_CONSOLE (x); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
476 if (! CONSOLE_TYPE_P (XCONSOLE (x), type)) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
477 dead_wrong_type_argument \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
478 (type##_console_methods->predicate_symbol, x); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
479 } while (0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
480 #define CONCHECK_CONSOLE_TYPE(x, type) do { \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
481 CONCHECK_CONSOLE (x); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
482 if (!(CONSOLEP (x) && \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
483 CONSOLE_TYPE_P (XCONSOLE (x), type))) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
484 x = wrong_type_argument \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
485 (type##_console_methods->predicate_symbol, x); \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
486 } while (0)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
487
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
488 /* #### These should be in the console-*.h files but there are
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
489 too many places where the abstraction is broken. Need to
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
490 fix. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
491
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
492 #ifdef HAVE_GTK
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
493 #define CONSOLE_TYPESYM_GTK_P(typesym) EQ (typesym, Qgtk)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
494 #else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
495 #define CONSOLE_TYPESYM_GTK_P(typesym) 0
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
496 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
497
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
498 #ifdef HAVE_X_WINDOWS
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
499 #define CONSOLE_TYPESYM_X_P(typesym) EQ (typesym, Qx)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
500 #else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
501 #define CONSOLE_TYPESYM_X_P(typesym) 0
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
502 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
503 #ifdef HAVE_TTY
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
504 #define CONSOLE_TYPESYM_TTY_P(typesym) EQ (typesym, Qtty)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
505 #else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
506 #define CONSOLE_TYPESYM_TTY_P(typesym) 0
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
507 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
508 #ifdef HAVE_MS_WINDOWS
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
509 #define CONSOLE_TYPESYM_MSWINDOWS_P(typesym) EQ (typesym, Qmswindows)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
510 #else
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
511 #define CONSOLE_TYPESYM_MSWINDOWS_P(typesym) 0
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
512 #endif
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
513 #define CONSOLE_TYPESYM_STREAM_P(typesym) EQ (typesym, Qstream)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
514
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
515 #define CONSOLE_TYPESYM_WIN_P(typesym) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
516 (CONSOLE_TYPESYM_GTK_P (typesym) || CONSOLE_TYPESYM_X_P (typesym) || CONSOLE_TYPESYM_MSWINDOWS_P (typesym))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
517
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
518 #define CONSOLE_X_P(con) CONSOLE_TYPESYM_X_P (CONSOLE_TYPE (con))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
519 #define CHECK_X_CONSOLE(z) CHECK_CONSOLE_TYPE (z, x)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
520 #define CONCHECK_X_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, x)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
521
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
522 #define CONSOLE_GTK_P(con) CONSOLE_TYPESYM_GTK_P (CONSOLE_TYPE (con))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
523 #define CHECK_GTK_CONSOLE(z) CHECK_CONSOLE_TYPE (z, gtk)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
524 #define CONCHECK_GTK_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, gtk)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
525
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
526 #define CONSOLE_TTY_P(con) CONSOLE_TYPESYM_TTY_P (CONSOLE_TYPE (con))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
527 #define CHECK_TTY_CONSOLE(z) CHECK_CONSOLE_TYPE (z, tty)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
528 #define CONCHECK_TTY_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, tty)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
529
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
530 #define CONSOLE_MSWINDOWS_P(con) CONSOLE_TYPESYM_MSWINDOWS_P (CONSOLE_TYPE (con))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
531 #define CHECK_MSWINDOWS_CONSOLE(z) CHECK_CONSOLE_TYPE (z, mswindows)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
532 #define CONCHECK_MSWINDOWS_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, mswindows)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
533
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
534 #define CONSOLE_STREAM_P(con) CONSOLE_TYPESYM_STREAM_P (CONSOLE_TYPE (con))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
535 #define CHECK_STREAM_CONSOLE(z) CHECK_CONSOLE_TYPE (z, stream)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
536 #define CONCHECK_STREAM_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, stream)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
537
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
538 #define CONSOLE_WIN_P(con) CONSOLE_TYPESYM_WIN_P (CONSOLE_TYPE (con))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
539
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
540 /* This structure marks which slots in a console have corresponding
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
541 default values in console_defaults.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
542 Each such slot has a nonzero value in this structure.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
543 The value has only one nonzero bit.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
544
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
545 When a console has its own local value for a slot,
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
546 the bit for that slot (found in the same slot in this structure)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
547 is turned on in the console's local_var_flags slot.
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
548
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
549 If a slot in this structure is zero, then even though there may
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
550 be a DEFVAR_CONSOLE_LOCAL for the slot, there is no default value for it;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
551 and the corresponding slot in console_defaults is not used. */
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
552
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
553 extern struct console console_local_flags;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
554
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
555 #define CONSOLE_NAME(con) ((con)->name)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
556 #define CONSOLE_CONNECTION(con) ((con)->connection)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
557 #define CONSOLE_CANON_CONNECTION(con) ((con)->canon_connection)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
558 #define CONSOLE_FUNCTION_KEY_MAP(con) ((con)->function_key_map)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
559 #define CONSOLE_SELECTED_DEVICE(con) ((con)->selected_device)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
560 #define CONSOLE_SELECTED_FRAME(con) \
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
561 DEVICE_SELECTED_FRAME (XDEVICE ((con)->selected_device))
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
562 #define CONSOLE_LAST_NONMINIBUF_FRAME(con) NON_LVALUE ((con)->last_nonminibuf_frame)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
563 #define CONSOLE_QUIT_CHAR(con) ((con)->quit_char)
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
564
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
565 DECLARE_CONSOLE_TYPE (dead);
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
566
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
567 extern console_type_entry_dynarr *the_console_type_entry_dynarr;
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
568
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents:
diff changeset
569 #endif /* INCLUDED_console_impl_h_ */