#include "botl.h"
+enum wp_ids { wp_tty = 1, wp_X11, wp_Qt, wp_mswin, wp_curses,
+ wp_chainin, wp_chainout, wp_safestartup, wp_shim,
+ wp_hup, wp_guistubs, wp_ttystubs,
+#ifdef OUTDATED_STUFF
+ , wp_mac, wp_Gem, wp_Gnome, wp_amii, wp_amiv
+#endif
+};
+
/* NB: this MUST match chain_procs below */
struct window_procs {
const char *name; /* Names should start with [a-z]. Names must
* not start with '-'. Names starting with
* '+' are reserved for processors. */
+ enum wp_ids wp_id;
unsigned long wincap; /* window port capability options supported */
unsigned long wincap2; /* additional window port capability options */
boolean has_color[CLR_MAX];
#define status_update (*windowprocs.win_status_update)
#define update_invent_slot (*windowprocs.win_update_invent_slot)
+/*
+ *
+ */
+#define WPID(name) #name, wp_##name
+#define WPIDMINUS(name) "-" #name, wp_##name
+
/*
* WINCAP
* Window port preference capability bits.
/* Macro for the currently active Window Port whose function
pointers have been loaded */
+#if 0
+/* 3.7 The string comparison version isn't used anymore */
#define WINDOWPORT(wn) \
(windowprocs.name && !strncmpi((#wn), windowprocs.name, strlen((#wn))))
+#endif
+
+#define WINDOWPORT(wn) (windowprocs.wp_id == wp_##wn)
/* role selection by player_selection(); this ought to be in the core... */
#define RS_NAME 0
const char *name; /* Names should start with [a-z]. Names must
* not start with '-'. Names starting with
* '+' are reserved for processors. */
+ enum wp_ids wp_id;
unsigned long wincap; /* window port capability options supported */
unsigned long wincap2; /* additional window port capability options */
boolean has_color[CLR_MAX];
* Option processing can take place before a user-decided WindowPort
* is even initialized, so check for that too.
*/
- if (!WINDOWPORT(safe-startup)) {
+ if (!WINDOWPORT(safestartup)) {
if (iflags.hilite_delta && !wc2_supported("statushilites")) {
raw_printf("Status highlighting not supported for %s interface.",
windowprocs.name);
free((genericptr_t) tmps) /*, tmps = 0*/ ;
if (windowprocs.win_raw_print == def_raw_print
- || WINDOWPORT(safe-startup))
+ || WINDOWPORT(safestartup))
nh_terminate(EXIT_SUCCESS);
}
static perminvent_info *hup_update_invent_slot(winid, int, perminvent_info *);
static struct window_procs hup_procs = {
- "hup", 0L, 0L,
+ WPID(hup), 0L, 0L,
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
hup_init_nhwindows,
hup_void_ndecl, /* player_selection */
#error You cannot compile this with both GUISTUB and TTYSTUB defined.
#endif
-struct window_procs mswin_procs = { "-guistubs" };
+struct window_procs mswin_procs = { WPIDMINUS(guistubs) };
#ifdef QT_GRAPHICS
-struct window_procs Qt_procs = { "-guistubs" };
+struct window_procs Qt_procs = { WPIDMINUS(guistubs) };
int qt_tilewidth, qt_tileheight, qt_fontsize, qt_compact_mode;
#endif
void
HANDLE hConIn;
HANDLE hConOut;
-struct window_procs tty_procs = { "-ttystubs" };
+struct window_procs tty_procs = { WPIDMINUS(ttystubs) };
#ifdef CURSES_GRAPHICS
char erase_char, kill_char;
#endif
* Get a set of valid safe windowport function
* pointers during early startup initialization.
*/
- if (!WINDOWPORT(safe-startup))
+ if (!WINDOWPORT(safestartup))
windowprocs = *get_safe_procs(1);
if (!GUILaunched)
windowprocs.win_nhgetch = windows_console_custom_nhgetch;
c = 'n';
ct = 0;
saved_procs = windowprocs;
- if (!WINDOWPORT(safe-startup))
+ if (!WINDOWPORT(safestartup))
windowprocs = *get_safe_procs(2); /* arg 2 uses no-newline variant */
windowprocs.win_nhgetch = windows_console_custom_nhgetch;
raw_print("\n");
exit_nhwindows((char *) 0);
iflags.window_inited = FALSE;
}
- if (!WINDOWPORT(mswin) && !WINDOWPORT(safe-startup))
+ if (!WINDOWPORT(mswin) && !WINDOWPORT(safestartup))
safe_routines();
if (wizard) {
raw_print("Execute debug breakpoint wizard?");
} // namespace nethack_qt_
struct window_procs Qt_procs = {
- "Qt",
+ WPID(Qt),
(WC_COLOR | WC_HILITE_PET
| WC_ASCII_MAP | WC_TILED_MAP
| WC_FONT_MAP | WC_TILE_FILE | WC_TILE_WIDTH | WC_TILE_HEIGHT
/* Interface definition, for windows.c */
struct window_procs X11_procs = {
- "X11",
+ WPID(X11),
( WC_COLOR | WC_INVERSE | WC_HILITE_PET | WC_ASCII_MAP | WC_TILED_MAP
| WC_PLAYER_SELECTION | WC_PERM_INVENT | WC_MOUSE_SUPPORT ),
/* status requires VIA_WINDOWPORT(); WC2_FLUSH_STATUS ensures that */
}
struct window_procs chainin_procs = {
- "-chainin", 0, /* wincap */
+ WPIDMINUS(chainin), 0, /* wincap */
0, /* wincap2 */
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* color availability */
/*
}
struct chain_procs chainout_procs = {
- "-chainout", 0, /* wincap */
+ WPIDMINUS(chainout), 0, /* wincap */
0, /* wincap2 */
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* color availability */
/*
/* Interface definition, for windows.c */
struct window_procs curses_procs = {
- "curses",
+ WPID(curses),
(WC_ALIGN_MESSAGE | WC_ALIGN_STATUS | WC_COLOR | WC_INVERSE
| WC_HILITE_PET
#ifdef NCURSES_MOUSE_VERSION /* (this macro name works for PDCURSES too) */
*/
struct window_procs safe_procs = {
- "safe-startup", 0L, 0L,
+ WPID(safestartup), 0L, 0L,
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* color availability */
safe_init_nhwindows, safe_player_selection, safe_askname,
safe_get_nh_event,
/* Interface definition used in windows.c */
struct window_procs shim_procs = {
- "shim",
+ WPID(shim),
(0
| WC_ASCII_MAP
| WC_COLOR | WC_HILITE_PET | WC_INVERSE | WC_EIGHT_BIT_IN),
/* Interface definition, for windows.c */
struct window_procs tty_procs = {
- "tty",
+ WPID(tty),
(0
#ifdef TTY_PERM_INVENT
| WC_PERM_INVENT
/* Interface definition, for windows.c */
struct window_procs mswin_procs = {
- "MSWIN",
+ WPID(mswin),
WC_COLOR | WC_HILITE_PET | WC_ALIGN_MESSAGE | WC_ALIGN_STATUS | WC_INVERSE
| WC_SCROLL_AMOUNT | WC_SCROLL_MARGIN | WC_MAP_MODE | WC_FONT_MESSAGE
| WC_FONT_STATUS | WC_FONT_MENU | WC_FONT_TEXT | WC_FONT_MAP