Mercurial > hg > xemacs-beta
annotate src/console-tty-impl.h @ 4981:4aebb0131297
Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
-------------------- ChangeLog entries follow: --------------------
modules/ChangeLog addition:
2010-02-05 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c:
* postgresql/postgresql.c (CHECK_LIVE_CONNECTION):
* postgresql/postgresql.c (Fpq_connectdb):
* postgresql/postgresql.c (Fpq_connect_start):
* postgresql/postgresql.c (Fpq_lo_import):
* postgresql/postgresql.c (Fpq_lo_export):
* ldap/eldap.c (Fldap_open):
* ldap/eldap.c (Fldap_search_basic):
* ldap/eldap.c (Fldap_add):
* ldap/eldap.c (Fldap_modify):
* ldap/eldap.c (Fldap_delete):
* canna/canna_api.c (Fcanna_initialize):
* canna/canna_api.c (Fcanna_store_yomi):
* canna/canna_api.c (Fcanna_parse):
* canna/canna_api.c (Fcanna_henkan_begin):
EXTERNAL_TO_C_STRING returns its argument instead of storing it
in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar
things happen to related macros. See entry in src/ChangeLog.
More Mule-izing of postgresql.c. Extract out common code
between `pq-connectdb' and `pq-connect-start'. Fix places
that signal an error string using a formatted string to instead
follow the standard and have a fixed reason followed by the
particular error message stored as one of the frobs.
src/ChangeLog addition:
2010-02-05 Ben Wing <ben@xemacs.org>
* console-msw.c (write_string_to_mswindows_debugging_output):
* console-msw.c (Fmswindows_message_box):
* console-x.c (x_perhaps_init_unseen_key_defaults):
* console.c:
* database.c (dbm_get):
* database.c (dbm_put):
* database.c (dbm_remove):
* database.c (berkdb_get):
* database.c (berkdb_put):
* database.c (berkdb_remove):
* database.c (Fopen_database):
* device-gtk.c (gtk_init_device):
* device-msw.c (msprinter_init_device_internal):
* device-msw.c (msprinter_default_printer):
* device-msw.c (msprinter_init_device):
* device-msw.c (sync_printer_with_devmode):
* device-msw.c (Fmsprinter_select_settings):
* device-x.c (sanity_check_geometry_resource):
* device-x.c (Dynarr_add_validified_lisp_string):
* device-x.c (x_init_device):
* device-x.c (Fx_put_resource):
* device-x.c (Fx_valid_keysym_name_p):
* device-x.c (Fx_set_font_path):
* dialog-msw.c (push_lisp_string_as_unicode):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-msw.c (handle_file_dialog_box):
* dialog-x.c (dbox_descriptor_to_widget_value):
* editfns.c (Fformat_time_string):
* editfns.c (Fencode_time):
* editfns.c (Fset_time_zone_rule):
* emacs.c (make_argc_argv):
* emacs.c (Fdump_emacs):
* emodules.c (emodules_load):
* eval.c:
* eval.c (maybe_signal_error_1):
* event-msw.c (Fdde_alloc_advise_item):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (mswindows_wnd_proc):
* fileio.c (report_error_with_errno):
* fileio.c (Fsysnetunam):
* fileio.c (Fdo_auto_save):
* font-mgr.c (extract_fcapi_string):
* font-mgr.c (Ffc_config_app_font_add_file):
* font-mgr.c (Ffc_config_app_font_add_dir):
* font-mgr.c (Ffc_config_filename):
* frame-gtk.c (gtk_set_frame_text_value):
* frame-gtk.c (gtk_create_widgets):
* frame-msw.c (mswindows_init_frame_1):
* frame-msw.c (mswindows_set_title_from_ibyte):
* frame-msw.c (msprinter_init_frame_3):
* frame-x.c (x_set_frame_text_value):
* frame-x.c (x_set_frame_properties):
* frame-x.c (start_drag_internal_1):
* frame-x.c (x_cde_transfer_callback):
* frame-x.c (x_create_widgets):
* glyphs-eimage.c (my_jpeg_output_message):
* glyphs-eimage.c (jpeg_instantiate):
* glyphs-eimage.c (gif_instantiate):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate):
* glyphs-gtk.c (xbm_instantiate_1):
* glyphs-gtk.c (gtk_xbm_instantiate):
* glyphs-gtk.c (gtk_xpm_instantiate):
* glyphs-gtk.c (gtk_xface_instantiate):
* glyphs-gtk.c (cursor_font_instantiate):
* glyphs-gtk.c (gtk_redisplay_widget):
* glyphs-gtk.c (gtk_widget_instantiate_1):
* glyphs-gtk.c (gtk_add_tab_item):
* glyphs-msw.c (mswindows_xpm_instantiate):
* glyphs-msw.c (bmp_instantiate):
* glyphs-msw.c (mswindows_resource_instantiate):
* glyphs-msw.c (xbm_instantiate_1):
* glyphs-msw.c (mswindows_xbm_instantiate):
* glyphs-msw.c (mswindows_xface_instantiate):
* glyphs-msw.c (mswindows_redisplay_widget):
* glyphs-msw.c (mswindows_widget_instantiate):
* glyphs-msw.c (add_tree_item):
* glyphs-msw.c (add_tab_item):
* glyphs-msw.c (mswindows_combo_box_instantiate):
* glyphs-msw.c (mswindows_widget_query_string_geometry):
* glyphs-x.c (x_locate_pixmap_file):
* glyphs-x.c (xbm_instantiate_1):
* glyphs-x.c (x_xbm_instantiate):
* glyphs-x.c (extract_xpm_color_names):
* glyphs-x.c (x_xpm_instantiate):
* glyphs-x.c (x_xface_instantiate):
* glyphs-x.c (autodetect_instantiate):
* glyphs-x.c (safe_XLoadFont):
* glyphs-x.c (cursor_font_instantiate):
* glyphs-x.c (x_redisplay_widget):
* glyphs-x.c (Fchange_subwindow_property):
* glyphs-x.c (x_widget_instantiate):
* glyphs-x.c (x_tab_control_redisplay):
* glyphs.c (pixmap_to_lisp_data):
* gui-x.c (menu_separator_style_and_to_external):
* gui-x.c (add_accel_and_to_external):
* gui-x.c (button_item_to_widget_value):
* hpplay.c (player_error_internal):
* hpplay.c (play_sound_file):
* hpplay.c (play_sound_data):
* intl.c (Fset_current_locale):
* lisp.h:
* menubar-gtk.c (gtk_xemacs_set_accel_keys):
* menubar-msw.c (populate_menu_add_item):
* menubar-msw.c (populate_or_checksum_helper):
* menubar-x.c (menu_item_descriptor_to_widget_value_1):
* nt.c (init_user_info):
* nt.c (get_long_basename):
* nt.c (nt_get_resource):
* nt.c (init_mswindows_environment):
* nt.c (get_cached_volume_information):
* nt.c (mswindows_readdir):
* nt.c (read_unc_volume):
* nt.c (mswindows_stat):
* nt.c (mswindows_getdcwd):
* nt.c (mswindows_executable_type):
* nt.c (Fmswindows_short_file_name):
* ntplay.c (nt_play_sound_file):
* objects-gtk.c:
* objects-gtk.c (gtk_valid_color_name_p):
* objects-gtk.c (gtk_initialize_font_instance):
* objects-gtk.c (gtk_font_list):
* objects-msw.c (font_enum_callback_2):
* objects-msw.c (parse_font_spec):
* objects-x.c (x_parse_nearest_color):
* objects-x.c (x_valid_color_name_p):
* objects-x.c (x_initialize_font_instance):
* objects-x.c (x_font_instance_truename):
* objects-x.c (x_font_list):
* objects-xlike-inc.c (XFUN):
* objects-xlike-inc.c (xft_find_charset_font):
* process-nt.c (mswindows_report_winsock_error):
* process-nt.c (nt_create_process):
* process-nt.c (get_internet_address):
* process-nt.c (nt_open_network_stream):
* process-unix.c:
* process-unix.c (allocate_pty):
* process-unix.c (get_internet_address):
* process-unix.c (unix_canonicalize_host_name):
* process-unix.c (unix_open_network_stream):
* realpath.c:
* select-common.h (lisp_data_to_selection_data):
* select-gtk.c (symbol_to_gtk_atom):
* select-gtk.c (atom_to_symbol):
* select-msw.c (symbol_to_ms_cf):
* select-msw.c (mswindows_register_selection_data_type):
* select-x.c (symbol_to_x_atom):
* select-x.c (x_atom_to_symbol):
* select-x.c (hack_motif_clipboard_selection):
* select-x.c (Fx_store_cutbuffer_internal):
* sound.c (Fplay_sound_file):
* sound.c (Fplay_sound):
* sound.h (sound_perror):
* sysdep.c:
* sysdep.c (qxe_allocating_getcwd):
* sysdep.c (qxe_execve):
* sysdep.c (copy_in_passwd):
* sysdep.c (qxe_getpwnam):
* sysdep.c (qxe_ctime):
* sysdll.c (dll_open):
* sysdll.c (dll_function):
* sysdll.c (dll_variable):
* sysdll.c (search_linked_libs):
* sysdll.c (dll_error):
* sysfile.h:
* sysfile.h (PATHNAME_CONVERT_OUT_TSTR):
* sysfile.h (PATHNAME_CONVERT_OUT_UTF_8):
* sysfile.h (PATHNAME_CONVERT_OUT):
* sysfile.h (LISP_PATHNAME_CONVERT_OUT):
* syswindows.h (ITEXT_TO_TSTR):
* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
* syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT):
* syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN):
* syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
* text.h:
* text.h (eicpy_ext_len):
* text.h (enum new_dfc_src_type):
* text.h (EXTERNAL_TO_ITEXT):
* text.h (GET_STRERROR):
* tooltalk.c (check_status):
* tooltalk.c (Fadd_tooltalk_message_arg):
* tooltalk.c (Fadd_tooltalk_pattern_attribute):
* tooltalk.c (Fadd_tooltalk_pattern_arg):
* win32.c (tstr_to_local_file_format):
* win32.c (mswindows_lisp_error_1):
* win32.c (mswindows_report_process_error):
* win32.c (Fmswindows_shell_execute):
* win32.c (mswindows_read_link_1):
Changes involving external/internal format conversion,
mostly code cleanup and renaming.
1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL
that stored its result in a parameter. The new version of
LISP_STRING_TO_EXTERNAL returns its result through the
return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL.
Use the new-style macros throughout the code.
2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL,
in keeping with overall naming rationalization involving
Itext and related types.
Macros involved in previous two:
EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT
EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC
SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT
SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC
C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL
C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC
LISP_STRING_TO_EXTERNAL
LISP_STRING_TO_EXTERNAL_MALLOC
LISP_STRING_TO_TSTR
C_STRING_TO_TSTR -> ITEXT_TO_TSTR
TSTR_TO_C_STRING -> TSTR_TO_ITEXT
The following four still return their values through parameters,
since they have more than one value to return:
C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL
LISP_STRING_TO_SIZED_EXTERNAL
C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC
LISP_STRING_TO_SIZED_EXTERNAL_MALLOC
Sometimes additional casts had to be inserted, since the old
macros played strange games and completely defeated the type system
of the store params.
3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT
occurred with calls to one of the convenience macros listed above,
or to make_extstring().
4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway)
and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT.
4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something
like LISP_STRING_TO_EXTERNAL(..., Qfile_name).
5. Eliminate some temporary variables that are no longer necessary
now that we return a value rather than storing it into a variable.
6. Some Mule-izing in database.c.
7. Error functions:
-- A bit of code cleanup in maybe_signal_error_1.
-- Eliminate report_file_type_error; it's just an alias for
signal_error_2 with params in a different order.
-- Fix some places in the hostname-handling code that directly
inserted externally-retrieved error strings into the
supposed ASCII "reason" param instead of doing the right thing
and sticking text descriptive of what was going on in "reason"
and putting the external message in a frob.
8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one
or two other places.
9. Some code cleanup in copy_in_passwd() in sysdep.c.
10. Fix a real bug due to accidental variable shadowing in
tstr_to_local_file_format() in win32.c.
| author | Ben Wing <ben@xemacs.org> |
|---|---|
| date | Fri, 05 Feb 2010 11:02:24 -0600 |
| parents | f6cd5fe9bf4c |
| children | e0db3c197671 |
| rev | line source |
|---|---|
| 872 | 1 /* Define TTY specific console, device, and frame object for XEmacs. |
| 2 Copyright (C) 1995 Board of Trustees, University of Illinois. | |
| 3 Copyright (C) 1996 Ben Wing. | |
| 4 | |
| 5 This file is part of XEmacs. | |
| 6 | |
| 7 XEmacs is free software; you can redistribute it and/or modify it | |
| 8 under the terms of the GNU General Public License as published by the | |
| 9 Free Software Foundation; either version 2, or (at your option) any | |
| 10 later version. | |
| 11 | |
| 12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
| 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 15 for more details. | |
| 16 | |
| 17 You should have received a copy of the GNU General Public License | |
| 18 along with XEmacs; see the file COPYING. If not, write to | |
| 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 20 Boston, MA 02111-1307, USA. */ | |
| 21 | |
| 22 /* Synched up with: Not in FSF. */ | |
| 23 | |
| 24 /* Written by Chuck Thompson and Ben Wing. */ | |
| 25 | |
| 26 /* NOTE: Currently each TTY console can have only one device. | |
| 27 Therefore, all stuff for both input and output is lumped into | |
| 28 the console structure. If it ever becomes meaningful to | |
| 29 have more than one device on a TTY console, the output stuff | |
| 30 will have to get separated out. */ | |
| 31 | |
| 32 #ifndef INCLUDED_console_tty_impl_h_ | |
| 33 #define INCLUDED_console_tty_impl_h_ | |
| 34 | |
| 35 #include "console-impl.h" | |
| 36 #include "console-tty.h" | |
| 37 | |
| 38 DECLARE_CONSOLE_TYPE (tty); | |
| 39 | |
| 40 struct tty_console | |
| 41 { | |
| 3092 | 42 #ifdef NEW_GC |
| 43 struct lrecord_header header; | |
| 44 #endif /* NEW_GC */ | |
| 872 | 45 int infd, outfd; |
| 46 Lisp_Object instream, outstream; | |
| 47 Lisp_Object terminal_type; | |
| 48 Lisp_Object controlling_process; | |
| 49 char *term_entry_buffer; | |
| 50 | |
| 51 /* Physical location of cursor on this console. */ | |
| 52 int cursor_x; | |
| 53 int cursor_y; | |
| 54 | |
| 55 /* The real location of the cursor. The above physical location may | |
| 56 be ahead of where we really are. */ | |
| 57 int real_cursor_x; | |
| 58 int real_cursor_y; | |
| 59 | |
| 60 int final_cursor_x; | |
| 61 int final_cursor_y; | |
| 62 | |
| 63 int height; | |
| 64 int width; | |
| 65 | |
| 66 /* The count of frame number. */ | |
| 67 int frame_count; | |
| 68 | |
| 69 /* flags indicating presence, absence or value of various features */ | |
| 70 struct | |
| 71 { | |
| 72 unsigned int must_write_spaces :1; /* terminal inserts nulls, not | |
| 73 spaces to fill whitespace on | |
| 74 screen */ | |
| 75 unsigned int insert_mode_motion :1; /* cursor movement commands | |
| 76 work while in insert mode */ | |
| 77 unsigned int standout_motion :1; /* cursor movement is graceful | |
| 78 in standout or underline mode */ | |
| 79 unsigned int memory_above_frame :1; /* display retained above screen */ | |
| 80 unsigned int memory_below_frame :1; /* display retained below screen */ | |
| 81 unsigned int meta_key :2; /* 0 == mask off top bit; | |
| 82 1 == top bit is meta; | |
| 83 2 == top bit is useful as | |
| 84 character info */ | |
| 85 unsigned int flow_control :1; /* Nonzero means use ^S/^Q as | |
| 86 cretinous flow control. */ | |
| 87 int standout_width; /* # of spaces printed when | |
| 88 change to standout mode */ | |
| 89 int underline_width; /* # of spaces printed when | |
| 90 change to underline mode */ | |
| 91 } flags; | |
| 92 | |
| 93 /* cursor motion entries - each entry is commented with the terminfo | |
| 94 and the termcap entry */ | |
| 95 struct | |
| 96 { | |
| 97 /* local cursor movement */ | |
| 98 const char *up; /* cuu1, up */ | |
| 99 const char *down; /* cud1, do */ | |
| 100 const char *left; /* cub1, le */ | |
| 101 const char *right; /* cuf1, nd */ | |
| 102 const char *home; /* home, ho */ | |
| 103 const char *low_left; /* ll, ll */ | |
| 104 const char *car_return; /* cr, cr */ | |
| 105 | |
| 106 /* parameterized local cursor movement */ | |
| 107 const char *multi_up; /* cuu, UP */ | |
| 108 const char *multi_down; /* cud, DO */ | |
| 109 const char *multi_left; /* cub, LE */ | |
| 110 const char *multi_right; /* cuf, RI */ | |
| 111 | |
| 112 /* absolute cursor motion */ | |
| 113 const char *abs; /* cup, cm */ | |
| 114 const char *hor_abs; /* hpa, ch */ | |
| 115 const char *ver_abs; /* vpa, cv */ | |
| 116 | |
| 117 /* scrolling */ | |
| 118 const char *scroll_forw; /* ind, sf */ | |
| 119 const char *scroll_back; /* ri, sr */ | |
| 120 const char *multi_scroll_forw; /* indn, SF */ | |
| 121 const char *multi_scroll_back; /* rin, SR */ | |
| 122 const char *set_scroll_region; /* csr, cs */ | |
| 123 } cm; | |
| 124 | |
| 125 /* screen editing entries - each entry is commented with the | |
| 126 terminfo and the termcap entry */ | |
| 127 struct | |
| 128 { | |
| 129 /* adding to the screen */ | |
| 130 const char *ins_line; /* il1, al */ | |
| 131 const char *multi_ins_line; /* il, AL */ | |
| 132 const char *repeat; /* rep, rp */ | |
| 133 const char *begin_ins_mode; /* smir, im */ | |
| 134 const char *end_ins_mode; /* rmir, ei */ | |
| 135 const char *ins_char; /* ich1, ic */ | |
| 136 const char *multi_ins_char; /* ich, IC */ | |
| 137 const char *insert_pad; /* ip, ip */ | |
| 138 | |
| 139 /* deleting from the screen */ | |
| 140 const char *clr_frame; /* clear, cl */ | |
| 141 const char *clr_from_cursor; /* ed, cd */ | |
| 142 const char *clr_to_eol; /* el, ce */ | |
| 143 const char *del_line; /* dl1, dl */ | |
| 144 const char *multi_del_line; /* dl, DL */ | |
| 145 const char *del_char; /* dch1, dc */ | |
| 146 const char *multi_del_char; /* dch, DC */ | |
| 147 const char *begin_del_mode; /* smdc, dm */ | |
| 148 const char *end_del_mode; /* rmdc, ed */ | |
| 149 const char *erase_at_cursor; /* ech, ec */ | |
| 150 } se; | |
| 151 | |
| 152 /* screen display entries - each entry is commented with the | |
| 153 terminfo and termcap entry */ | |
| 154 struct | |
| 155 { | |
| 156 const char *begin_standout; /* smso, so */ | |
| 157 const char *end_standout; /* rmso, se */ | |
| 158 const char *begin_underline; /* smul, us */ | |
| 159 const char *end_underline; /* rmul, ue */ | |
| 160 const char *begin_alternate; /* smacs, as */ | |
| 161 const char *end_alternate; /* rmacs, ae */ | |
| 162 | |
| 163 const char *turn_on_reverse; /* rev, mr */ | |
| 164 const char *turn_on_blinking; /* blink, mb */ | |
| 165 const char *turn_on_bold; /* bold, md */ | |
| 166 const char *turn_on_dim; /* dim, mh */ | |
| 167 const char *turn_off_attributes; /* sgr0, me */ | |
| 168 | |
| 169 const char *visual_bell; /* flash, vb */ | |
| 170 const char *audio_bell; /* bel, bl */ | |
| 171 | |
| 172 const char *cursor_visible; /* cvvis, vs */ | |
| 173 const char *cursor_normal; /* cnorm, ve */ | |
| 174 const char *init_motion; /* smcup, ti */ | |
| 175 const char *end_motion; /* rmcup, te */ | |
| 176 const char *keypad_on; /* smkx, ks */ | |
| 177 const char *keypad_off; /* rmkx, ke */ | |
| 178 | |
| 179 const char *orig_pair; /* op, op */ | |
| 180 } sd; | |
| 181 | |
| 182 /* costs of various operations */ | |
| 183 struct | |
| 184 { | |
| 185 int cm_up; | |
| 186 int cm_down; | |
| 187 int cm_left; | |
| 188 int cm_right; | |
| 189 int cm_home; | |
| 190 int cm_low_left; | |
| 191 int cm_car_return; | |
| 192 int cm_abs; | |
| 193 int cm_hor_abs; | |
| 194 int cm_ver_abs; | |
| 195 } cost; | |
| 196 | |
| 197 /* The initial tty mode bits */ | |
| 198 struct emacs_tty old_tty; | |
| 199 | |
| 200 /* Is this TTY our controlling terminal? */ | |
| 201 unsigned int controlling_terminal :1; | |
| 202 unsigned int is_stdio :1; | |
| 3571 | 203 /* Do East Asian chars take up two columns? */ |
| 204 unsigned int multiple_width :1; | |
| 872 | 205 }; |
| 206 | |
| 3092 | 207 #ifdef NEW_GC |
| 208 typedef struct tty_console Lisp_Tty_Console; | |
| 209 | |
| 210 DECLARE_LRECORD (tty_console, Lisp_Tty_Console); | |
| 211 | |
| 212 #define XTTY_CONSOLE(x) \ | |
| 213 XRECORD (x, tty_console, Lisp_Tty_Console) | |
| 214 #define wrap_tty_console(p) wrap_record (p, tty_console) | |
| 215 #define TTY_CONSOLE_P(x) RECORDP (x, tty_console) | |
| 216 #endif /* NEW_GC */ | |
| 217 | |
| 872 | 218 #define CONSOLE_TTY_DATA(c) CONSOLE_TYPE_DATA (c, tty) |
| 219 #define CONSOLE_TTY_CURSOR_X(c) (CONSOLE_TTY_DATA (c)->cursor_x) | |
| 220 #define CONSOLE_TTY_CURSOR_Y(c) (CONSOLE_TTY_DATA (c)->cursor_y) | |
| 221 #define CONSOLE_TTY_REAL_CURSOR_X(c) (CONSOLE_TTY_DATA (c)->real_cursor_x) | |
| 222 #define CONSOLE_TTY_REAL_CURSOR_Y(c) (CONSOLE_TTY_DATA (c)->real_cursor_y) | |
| 223 #define CONSOLE_TTY_FINAL_CURSOR_X(c) (CONSOLE_TTY_DATA (c)->final_cursor_x) | |
| 224 #define CONSOLE_TTY_FINAL_CURSOR_Y(c) (CONSOLE_TTY_DATA (c)->final_cursor_y) | |
| 225 | |
| 3571 | 226 /* In a more ideal world where available terminfo files actually included |
| 227 information on whether a given TTY supports double-width characters or | |
| 228 not, oh, and where Mule was not conditional, SUPPORTS_MULTIPLE_WIDTH | |
| 229 would be as console-specific as its syntax implies. | |
| 230 | |
| 231 In this world, this is overengineering more than it is anything. */ | |
| 232 #define CONSOLE_TTY_SUPPORTS_MULTIPLE_WIDTH(c) (1 != MAX_ICHAR_LEN) | |
| 233 #define CONSOLE_TTY_MULTIPLE_WIDTH(c) \ | |
| 234 (CONSOLE_TTY_SUPPORTS_MULTIPLE_WIDTH(c) ? \ | |
| 235 CONSOLE_TTY_DATA (c)->multiple_width : (0)) | |
| 236 | |
| 872 | 237 #define TTY_CM(c) (CONSOLE_TTY_DATA (c)->cm) |
| 238 #define TTY_SE(c) (CONSOLE_TTY_DATA (c)->se) | |
| 239 #define TTY_SD(c) (CONSOLE_TTY_DATA (c)->sd) | |
| 240 #define TTY_FLAGS(c) (CONSOLE_TTY_DATA (c)->flags) | |
| 241 #define TTY_COST(c) (CONSOLE_TTY_DATA (c)->cost) | |
| 242 | |
| 243 #define TTY_INC_CURSOR_X(c, n) do { \ | |
| 244 int TICX_n = (n); \ | |
| 245 assert (CONSOLE_TTY_CURSOR_X (c) == CONSOLE_TTY_REAL_CURSOR_X (c)); \ | |
| 246 CONSOLE_TTY_CURSOR_X (c) += TICX_n; \ | |
| 247 CONSOLE_TTY_REAL_CURSOR_X (c) += TICX_n; \ | |
| 248 } while (0) | |
| 249 | |
| 250 #define TTY_INC_CURSOR_Y(c, n) do { \ | |
| 251 int TICY_n = (n); \ | |
| 252 CONSOLE_TTY_CURSOR_Y (c) += TICY_n; \ | |
| 253 CONSOLE_TTY_REAL_CURSOR_Y (c) += TICY_n; \ | |
| 254 } while (0) | |
| 255 | |
| 256 struct tty_device | |
| 257 { | |
| 3092 | 258 #ifdef NEW_GC |
| 259 struct lrecord_header header; | |
| 260 #endif /* NEW_GC */ | |
| 872 | 261 #ifdef HAVE_TERMIOS |
| 262 speed_t ospeed; /* Output speed (from sg_ospeed) */ | |
| 263 #else | |
| 264 short ospeed; /* Output speed (from sg_ospeed) */ | |
| 265 #endif | |
| 266 }; | |
| 267 | |
| 3092 | 268 #ifdef NEW_GC |
| 269 typedef struct tty_device Lisp_Tty_Device; | |
| 270 | |
| 271 DECLARE_LRECORD (tty_device, Lisp_Tty_Device); | |
| 272 | |
| 273 #define XTTY_DEVICE(x) \ | |
| 274 XRECORD (x, tty_device, Lisp_Tty_Device) | |
| 275 #define wrap_tty_device(p) wrap_record (p, tty_device) | |
| 276 #define TTY_DEVICE_P(x) RECORDP (x, tty_device) | |
| 277 #endif /* NEW_GC */ | |
| 278 | |
| 872 | 279 #define DEVICE_TTY_DATA(d) DEVICE_TYPE_DATA (d, tty) |
| 280 | |
| 281 /* termcap requires this to be global */ | |
| 282 #ifndef HAVE_TERMIOS | |
| 283 extern short ospeed; /* Output speed (from sg_ospeed) */ | |
| 284 #endif | |
| 285 | |
| 286 #endif /* INCLUDED_console_tty_impl_h_ */ |
