view src/console.h @ 4857:34ff4dd7397d

Add ChangeLog entries for previous changes to tests dir -------------------- ChangeLog entries follow: -------------------- tests/ChangeLog addition: 2010-01-14 Ben Wing <ben@xemacs.org> * automated/base64-tests.el (bt-base64-encode-string): * automated/base64-tests.el (bt-base64-decode-string): * automated/base64-tests.el (for): * automated/byte-compiler-tests.el: * automated/byte-compiler-tests.el (before-and-after-compile-equal): * automated/case-tests.el: * automated/case-tests.el (downcase-string): * automated/case-tests.el (insert): * automated/case-tests.el (featurep): * automated/case-tests.el (let): * automated/case-tests.el (boundp): * automated/ccl-tests.el (ccl-test-normal-expr): * automated/ccl-tests.el (ccl-test-map-instructions): * automated/ccl-tests.el (ccl-test-suites): * automated/database-tests.el (delete-database-files): * automated/extent-tests.el (let): * automated/extent-tests.el (insert): * automated/extent-tests.el (props): * automated/hash-table-tests.el (test): * automated/hash-table-tests.el (for): * automated/hash-table-tests.el (ht): * automated/hash-table-tests.el (iterations): * automated/hash-table-tests.el (h1): * automated/hash-table-tests.el (make-hash-table): * automated/hash-table-tests.el (sxhash): * automated/lisp-tests.el: * automated/lisp-tests.el (setq): * automated/lisp-tests.el (test-setq): * automated/lisp-tests.el (my-vector): * automated/lisp-tests.el (nconc): * automated/lisp-tests.el (x): * automated/lisp-tests.el (y): * automated/lisp-tests.el (butlast): * automated/lisp-tests.el (+): * automated/lisp-tests.el (featurep): * automated/lisp-tests.el (-): * automated/lisp-tests.el (six): * automated/lisp-tests.el (three): * automated/lisp-tests.el (1): * automated/lisp-tests.el (one): * automated/lisp-tests.el (two): * automated/lisp-tests.el (0): * automated/lisp-tests.el (five): * automated/lisp-tests.el (logxor): * automated/lisp-tests.el (test1): * automated/lisp-tests.el (division-test): * automated/lisp-tests.el (for): * automated/lisp-tests.el (check-function-argcounts): * automated/lisp-tests.el (type-of): * automated/lisp-tests.el (mapcar): * automated/lisp-tests.el (z): * automated/lisp-tests.el (mapvector): * automated/lisp-tests.el (mapconcat): * automated/lisp-tests.el ([1 2 3]): * automated/lisp-tests.el (#*010): * automated/lisp-tests.el (test-harness-risk-infloops): * automated/lisp-tests.el (erase-buffer): * automated/lisp-tests.el (sym): * automated/lisp-tests.el (subseq): * automated/lisp-tests.el (length): * automated/lisp-tests.el (102): * automated/lisp-tests.el (read): * automated/lisp-tests.el (new-char): * automated/lisp-tests.el (new-load-file-name): * automated/lisp-tests.el (cl-floor): * automated/lisp-tests.el (foo): * automated/lisp-tests.el (string-variable): * automated/md5-tests.el (lambda): * automated/md5-tests.el (large-string): * automated/md5-tests.el (mapcar): * automated/md5-tests.el (insert): * automated/mule-tests.el (test-chars): * automated/mule-tests.el (existing-file-name): * automated/mule-tests.el (featurep): * automated/query-coding-tests.el (featurep): * automated/regexp-tests.el: * automated/regexp-tests.el (insert): * automated/regexp-tests.el (Assert): * automated/regexp-tests.el (string-match): * automated/regexp-tests.el (featurep): * automated/regexp-tests.el (text): * automated/regexp-tests.el (text1): * automated/regexp-tests.el ("aáa"): * automated/symbol-tests.el: * automated/symbol-tests.el (name): * automated/symbol-tests.el (check-weak-list-unique): * automated/symbol-tests.el (string): * automated/symbol-tests.el (list): * automated/symbol-tests.el (foo): * automated/symbol-tests.el (read): * automated/symbol-tests.el (eval): * automated/symbol-tests.el (fresh-keyword-name): * automated/symbol-tests.el (set): * automated/symbol-tests.el (print-gensym): * automated/symbol-tests.el (mysym): * automated/syntax-tests.el (test-forward-word): * automated/syntax-tests.el (test-backward-word): * automated/syntax-tests.el (test-syntax-table): * automated/syntax-tests.el (with-syntax-table): * automated/syntax-tests.el (Skip-Test-Unless): * automated/syntax-tests.el (with): * automated/tag-tests.el (testfile): * automated/test-harness.el: * automated/test-harness.el (test-harness-from-buffer): * automated/weak-tests.el (w): * automated/weak-tests.el (p): * automated/weak-tests.el (a): Create Assert-eq, Assert-equal, etc. These are equivalent to (Assert (eq ...)) etc. but display both the actual value and the expected value of the comparison. Use them throughout the test suite. * automated/test-harness.el (Assert): Clean up code and doc string of macro Assert.
author Ben Wing <ben@xemacs.org>
date Thu, 14 Jan 2010 02:34:47 -0600
parents aa5ed11f473b
children e0db3c197671
line wrap: on
line source

/* Define console object for XEmacs.
   Copyright (C) 1996, 2002 Ben Wing

This file is part of XEmacs.

XEmacs is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.

XEmacs is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with XEmacs; see the file COPYING.  If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */

/* Synched up with: Not in FSF. */

/* Written by Ben Wing. */

#ifndef INCLUDED_console_h_
#define INCLUDED_console_h_

/* Devices and consoles are similar entities.  The idea is that
   a console represents a physical keyboard/mouse/other-input-source
   while a device represents a display where frames appear on.
   Nowadays "multi-headed" displays with multiple physical screens
   are becoming familiar; in the XEmacs nomenclature, this maps to a
   "console" supporting multiple "devices".

   In the X world, a console is a "Display" while a device is a
   "Screen".  Implementationally, it can sometimes get confusing:
   under X, multiple devices on a single console are different
   "Display" connections to what is in reality the same Display on
   the same server.  Furthermore, in the X model input comes from the
   device and not from the console.  This causes no confusion because
   events are basically always tagged to a particular X window (i.e.
   frame), which exists on only one screen; therefore the event won't
   be reported multiple times even if there are multiple devices on
   the same physical display.

   This is an implementation detail specific to X consoles (e.g. under
   Windows, this could be different, and input would come directly from
   the console).
*/

/* GCC does not like forward enum declaration. This needs to be
   defined here. What a disgust! */

enum console_variant
{
  dead_console,
  tty_console,
  gtk_console,
  x_console,
  mswindows_console,
  msprinter_console,
  stream_console
};

enum device_metrics
{
  DM_color_default, DM_color_select, DM_color_balloon, DM_color_3d_face,
  DM_color_3d_light, DM_color_3d_dark, DM_color_menu, DM_color_menu_highlight,
  DM_color_menu_button, DM_color_menu_disabled, DM_color_toolbar,
  DM_color_scrollbar, DM_color_desktop, DM_color_workspace, DM_font_default,
  DM_font_menubar, DM_font_dialog, DM_size_cursor, DM_size_scrollbar,
  DM_size_menu, DM_size_toolbar, DM_size_toolbar_button,
  DM_size_toolbar_border, DM_size_icon, DM_size_icon_small, DM_size_device,
  DM_size_workspace, DM_offset_workspace, DM_size_device_mm, DM_device_dpi,
  DM_num_bit_planes, DM_num_color_cells, DM_num_screens, DM_mouse_buttons,
  DM_swap_buttons, DM_show_sounds, DM_slow_device, DM_security,
  DM_backing_store, DM_save_under
};

struct console;

DECLARE_LRECORD (console, struct console);
#define XCONSOLE(x) XRECORD (x, console, struct console)
#define wrap_console(p) wrap_record (p, console)
#define CONSOLEP(x) RECORDP (x, console)
#define CHECK_CONSOLE(x) CHECK_RECORD (x, console)
#define CONCHECK_CONSOLE(x) CONCHECK_RECORD (x, console)

/* Basic properties available to non-privileged users; redefined in
   console-impl.h */

struct console_methods;

int console_live_p (struct console *c);
Lisp_Object console_device_list (struct console *c);

#define CONSOLE_LIVE_P(c) console_live_p (c)
#define CONSOLE_DEVICE_LIST(c) console_device_list (c)

#define CHECK_LIVE_CONSOLE(x) do {			\
  CHECK_CONSOLE (x);					\
  if (! CONSOLE_LIVE_P (XCONSOLE (x)))			\
    dead_wrong_type_argument (Qconsole_live_p, (x));	\
} while (0)
#define CONCHECK_LIVE_CONSOLE(x) do {			\
  CONCHECK_CONSOLE (x);					\
  if (! CONSOLE_LIVE_P (XCONSOLE (x)))			\
    x = wrong_type_argument (Qconsole_live_p, (x));	\
} while (0)

#define CDFW_CONSOLE(obj)				\
   ((WINDOWP  (obj) && WINDOW_LIVE_P (XWINDOW(obj))) ? WINDOW_CONSOLE (XWINDOW (obj))	\
 : ((FRAMEP   (obj) && FRAME_LIVE_P (XFRAME (obj)))  ?  FRAME_CONSOLE (XFRAME  (obj))	\
 : ((DEVICEP  (obj) && DEVICE_LIVE_P (XDEVICE (obj))) ? DEVICE_CONSOLE (XDEVICE (obj))	\
 : ((CONSOLEP (obj) && CONSOLE_LIVE_P (XCONSOLE (obj))) ? obj				\
 : Qnil))))

#define CONSOLE_LOOP(concons) LIST_LOOP (concons, Vconsole_list)
#define CONSOLE_DEVICE_LOOP(devcons, con) \
  LIST_LOOP (devcons, CONSOLE_DEVICE_LIST (con))

EXFUN (Fconsole_disable_input, 1);
EXFUN (Fdelete_console, 2);
EXFUN (Fselect_console, 1);
EXFUN (Fselected_console, 0);

extern Lisp_Object Qcreate_console_hook, Qdelete_console_hook;
extern Lisp_Object Vconsole_defaults, Vconsole_type_list, Vselected_console;

int valid_console_type_p (Lisp_Object type);

Lisp_Object create_console (Lisp_Object name, Lisp_Object type,
			    Lisp_Object connection, Lisp_Object props);
void select_console_1 (Lisp_Object);
struct console *decode_console (Lisp_Object);
void add_entry_to_console_type_list (Lisp_Object symbol,
				     struct console_methods *type);
struct console_methods *decode_console_type (Lisp_Object type,
					     Error_Behavior errb);

enum console_variant get_console_variant (Lisp_Object type);

void delete_console_internal (struct console *con, int force,
			      int from_kill_emacs, int from_io_error);
void io_error_delete_console (Lisp_Object console);
void set_console_last_nonminibuf_frame (struct console *con,
					Lisp_Object frame);
void stuff_buffered_input (Lisp_Object);

#endif /* INCLUDED_console_h_ */