Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-05-18 08:30:09

0001 /****************************************************************************
0002  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
0003  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
0004  *                                                                          *
0005  * Permission is hereby granted, free of charge, to any person obtaining a  *
0006  * copy of this software and associated documentation files (the            *
0007  * "Software"), to deal in the Software without restriction, including      *
0008  * without limitation the rights to use, copy, modify, merge, publish,      *
0009  * distribute, distribute with modifications, sublicense, and/or sell       *
0010  * copies of the Software, and to permit persons to whom the Software is    *
0011  * furnished to do so, subject to the following conditions:                 *
0012  *                                                                          *
0013  * The above copyright notice and this permission notice shall be included  *
0014  * in all copies or substantial portions of the Software.                   *
0015  *                                                                          *
0016  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
0017  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
0018  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
0019  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
0020  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
0021  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
0022  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
0023  *                                                                          *
0024  * Except as contained in this notice, the name(s) of the above copyright   *
0025  * holders shall not be used in advertising or otherwise to promote the     *
0026  * sale, use or other dealings in this Software without prior written       *
0027  * authorization.                                                           *
0028  ****************************************************************************/
0029 
0030 /****************************************************************************
0031  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
0032  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
0033  *     and: Thomas E. Dickey                        1996-on                 *
0034  ****************************************************************************/
0035 
0036 /* $Id: curses.h.in,v 1.277 2021/09/24 16:07:37 tom Exp $ */
0037 
0038 #ifndef __NCURSES_H
0039 #define __NCURSES_H
0040 
0041 /*
0042  The symbols beginning NCURSES_ or USE_ are configuration choices.
0043  A few of the former can be overridden by applications at compile-time.
0044  Most of the others correspond to configure-script options (or checks
0045  by the configure-script for features of the system on which it is built).
0046 
0047  These symbols can be overridden by applications at compile-time:
0048  NCURSES_NOMACROS suppresses macro definitions in favor of functions
0049  NCURSES_WATTR_MACROS suppresses wattr_* macro definitions
0050  NCURSES_WIDECHAR is an alternative for declaring wide-character functions.
0051 
0052  These symbols are used only when building ncurses:
0053  NCURSES_ATTR_T
0054  NCURSES_FIELD_INTERNALS
0055  NCURSES_INTERNALS
0056 
0057  These symbols are set by the configure script:
0058  NCURSES_ENABLE_STDBOOL_H
0059  NCURSES_EXPANDED
0060  NCURSES_EXT_COLORS
0061  NCURSES_EXT_FUNCS
0062  NCURSES_EXT_PUTWIN
0063  NCURSES_NO_PADDING
0064  NCURSES_OSPEED_COMPAT
0065  NCURSES_PATHSEP
0066  NCURSES_REENTRANT
0067  */
0068 
0069 #define CURSES 1
0070 #define CURSES_H 1
0071 
0072 /* These are defined only in curses.h, and are used for conditional compiles */
0073 #define NCURSES_VERSION_MAJOR 6
0074 #define NCURSES_VERSION_MINOR 4
0075 #define NCURSES_VERSION_PATCH 20221231
0076 
0077 /* This is defined in more than one ncurses header, for identification */
0078 #undef  NCURSES_VERSION
0079 #define NCURSES_VERSION "6.4"
0080 
0081 /*
0082  * Identify the mouse encoding version.
0083  */
0084 #define NCURSES_MOUSE_VERSION 2
0085 
0086 /*
0087  * Definitions to facilitate DLL's.
0088  */
0089 #include <ncursesw/ncurses_dll.h>
0090 
0091 /*
0092  * Extra headers.
0093  */
0094 #if 1
0095 #include <stdint.h>
0096 #endif
0097 
0098 #ifdef __cplusplus
0099 #else
0100 #if 0
0101 #include <stdnoreturn.h>
0102 #undef GCC_NORETURN
0103 #define GCC_NORETURN _Noreturn
0104 #endif
0105 #endif
0106 
0107 /*
0108  * User-definable tweak to disable the include of <stdbool.h>.
0109  */
0110 #ifndef NCURSES_ENABLE_STDBOOL_H
0111 #define NCURSES_ENABLE_STDBOOL_H 1
0112 #endif
0113 
0114 /*
0115  * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
0116  * configured using --disable-macros.
0117  */
0118 #ifndef NCURSES_ATTR_T
0119 #define NCURSES_ATTR_T int
0120 #endif
0121 
0122 /*
0123  * Expands to 'const' if ncurses is configured using --enable-const.  Note that
0124  * doing so makes it incompatible with other implementations of X/Open Curses.
0125  */
0126 #undef  NCURSES_CONST
0127 #define NCURSES_CONST const
0128 
0129 #undef NCURSES_INLINE
0130 #define NCURSES_INLINE inline
0131 
0132 /*
0133  * The standard type used for color values, and for color-pairs.  The latter
0134  * allows the curses library to enumerate the combinations of foreground and
0135  * background colors used by an application, and is normally the product of the
0136  * total foreground and background colors.
0137  *
0138  * X/Open uses "short" for both of these types, ultimately because they are
0139  * numbers from the SVr4 terminal database, which uses 16-bit signed values.
0140  */
0141 #undef  NCURSES_COLOR_T
0142 #define NCURSES_COLOR_T short
0143 
0144 #undef  NCURSES_PAIRS_T
0145 #define NCURSES_PAIRS_T short
0146 
0147 /*
0148  * Definitions used to make WINDOW and similar structs opaque.
0149  */
0150 #ifndef NCURSES_INTERNALS
0151 #define NCURSES_OPAQUE       0
0152 #define NCURSES_OPAQUE_FORM  0
0153 #define NCURSES_OPAQUE_MENU  0
0154 #define NCURSES_OPAQUE_PANEL 0
0155 #endif
0156 
0157 /*
0158  * Definition used to optionally suppress wattr* macros to help with the
0159  * transition from ncurses5 to ncurses6 by allowing the header files to
0160  * be shared across development packages for ncursesw in both ABIs.
0161  */
0162 #ifndef NCURSES_WATTR_MACROS
0163 #define NCURSES_WATTR_MACROS 0
0164 #endif
0165 
0166 /*
0167  * The reentrant code relies on the opaque setting, but adds features.
0168  */
0169 #ifndef NCURSES_REENTRANT
0170 #define NCURSES_REENTRANT 0
0171 #endif
0172 
0173 /*
0174  * In certain environments, we must work around linker problems for data
0175  */
0176 #undef NCURSES_BROKEN_LINKER
0177 #if 0
0178 #define NCURSES_BROKEN_LINKER 1
0179 #endif
0180 
0181 /*
0182  * Control whether bindings for interop support are added.
0183  */
0184 #undef  NCURSES_INTEROP_FUNCS
0185 #define NCURSES_INTEROP_FUNCS 1
0186 
0187 /*
0188  * The internal type used for window dimensions.
0189  */
0190 #undef  NCURSES_SIZE_T
0191 #define NCURSES_SIZE_T short
0192 
0193 /*
0194  * Control whether tparm() supports varargs or fixed-parameter list.
0195  */
0196 #undef NCURSES_TPARM_VARARGS
0197 #define NCURSES_TPARM_VARARGS 1
0198 
0199 /*
0200  * Control type used for tparm's arguments.  While X/Open equates long and
0201  * char* values, this is not always workable for 64-bit platforms.
0202  */
0203 #undef NCURSES_TPARM_ARG
0204 #define NCURSES_TPARM_ARG intptr_t
0205 
0206 /*
0207  * Control whether ncurses uses wcwidth() for checking width of line-drawing
0208  * characters.
0209  */
0210 #undef NCURSES_WCWIDTH_GRAPHICS
0211 #define NCURSES_WCWIDTH_GRAPHICS 1
0212 
0213 /*
0214  * NCURSES_CH_T is used in building the library, but not used otherwise in
0215  * this header file, since that would make the normal/wide-character versions
0216  * of the header incompatible.
0217  */
0218 #undef  NCURSES_CH_T
0219 #define NCURSES_CH_T cchar_t
0220 
0221 #if 1 && defined(_LP64)
0222 typedef unsigned chtype;
0223 typedef unsigned mmask_t;
0224 #else
0225 typedef uint32_t chtype;
0226 typedef uint32_t mmask_t;
0227 #endif
0228 
0229 /*
0230  * We need FILE, etc.  Include this before checking any feature symbols.
0231  */
0232 #include <stdio.h>
0233 
0234 /*
0235  * With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or
0236  * conflicting) when _XOPEN_SOURCE is 500 or greater.  If NCURSES_WIDECHAR is
0237  * not already defined, e.g., if the platform relies upon nonstandard feature
0238  * test macros, define it at this point if the standard feature test macros
0239  * indicate that it should be defined.
0240  */
0241 #ifndef NCURSES_WIDECHAR
0242 #if defined(_XOPEN_SOURCE_EXTENDED) || (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500))
0243 #define NCURSES_WIDECHAR 1
0244 #else
0245 #define NCURSES_WIDECHAR 0
0246 #endif
0247 #endif /* NCURSES_WIDECHAR */
0248 
0249 #include <stdarg.h> /* we need va_list */
0250 #if NCURSES_WIDECHAR
0251 #include <stddef.h> /* we want wchar_t */
0252 #endif
0253 
0254 /* X/Open and SVr4 specify that curses implements 'bool'.  However, C++ may also
0255  * implement it.  If so, we must use the C++ compiler's type to avoid conflict
0256  * with other interfaces.
0257  *
0258  * A further complication is that <stdbool.h> may declare 'bool' to be a
0259  * different type, such as an enum which is not necessarily compatible with
0260  * C++.  If we have <stdbool.h>, make 'bool' a macro, so users may #undef it.
0261  * Otherwise, let it remain a typedef to avoid conflicts with other #define's.
0262  * In either case, make a typedef for NCURSES_BOOL which can be used if needed
0263  * from either C or C++.
0264  */
0265 
0266 #undef TRUE
0267 #define TRUE    1
0268 
0269 #undef FALSE
0270 #define FALSE   0
0271 
0272 typedef unsigned char NCURSES_BOOL;
0273 
0274 #if defined(__cplusplus)    /* __cplusplus, etc. */
0275 
0276 /* use the C++ compiler's bool type */
0277 #define NCURSES_BOOL bool
0278 
0279 #else           /* c89, c99, etc. */
0280 
0281 #if NCURSES_ENABLE_STDBOOL_H
0282 #include <stdbool.h>
0283 /* use whatever the C compiler decides bool really is */
0284 #define NCURSES_BOOL bool
0285 #else
0286 /* there is no predefined bool - use our own */
0287 #undef bool
0288 #define bool NCURSES_BOOL
0289 #endif
0290 
0291 #endif /* !__cplusplus, etc. */
0292 
0293 #ifdef __cplusplus
0294 extern "C" {
0295 #define NCURSES_CAST(type,value) static_cast<type>(value)
0296 #else
0297 #define NCURSES_CAST(type,value) (type)(value)
0298 #endif
0299 
0300 #define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p)))
0301 
0302 /*
0303  * X/Open attributes.  In the ncurses implementation, they are identical to the
0304  * A_ attributes.
0305  */
0306 #define WA_ATTRIBUTES   A_ATTRIBUTES
0307 #define WA_NORMAL   A_NORMAL
0308 #define WA_STANDOUT A_STANDOUT
0309 #define WA_UNDERLINE    A_UNDERLINE
0310 #define WA_REVERSE  A_REVERSE
0311 #define WA_BLINK    A_BLINK
0312 #define WA_DIM      A_DIM
0313 #define WA_BOLD     A_BOLD
0314 #define WA_ALTCHARSET   A_ALTCHARSET
0315 #define WA_INVIS    A_INVIS
0316 #define WA_PROTECT  A_PROTECT
0317 #define WA_HORIZONTAL   A_HORIZONTAL
0318 #define WA_LEFT     A_LEFT
0319 #define WA_LOW      A_LOW
0320 #define WA_RIGHT    A_RIGHT
0321 #define WA_TOP      A_TOP
0322 #define WA_VERTICAL A_VERTICAL
0323 
0324 #if 1
0325 #define WA_ITALIC   A_ITALIC    /* ncurses extension */
0326 #endif
0327 
0328 /* colors */
0329 #define COLOR_BLACK 0
0330 #define COLOR_RED   1
0331 #define COLOR_GREEN 2
0332 #define COLOR_YELLOW    3
0333 #define COLOR_BLUE  4
0334 #define COLOR_MAGENTA   5
0335 #define COLOR_CYAN  6
0336 #define COLOR_WHITE 7
0337 
0338 /* line graphics */
0339 
0340 #if 0 || NCURSES_REENTRANT
0341 NCURSES_WRAPPED_VAR(chtype*, acs_map);
0342 #define acs_map NCURSES_PUBLIC_VAR(acs_map())
0343 #else
0344 extern NCURSES_EXPORT_VAR(chtype) acs_map[];
0345 #endif
0346 
0347 #define NCURSES_ACS(c)  (acs_map[NCURSES_CAST(unsigned char,(c))])
0348 
0349 /* VT100 symbols begin here */
0350 #define ACS_ULCORNER    NCURSES_ACS('l') /* upper left corner */
0351 #define ACS_LLCORNER    NCURSES_ACS('m') /* lower left corner */
0352 #define ACS_URCORNER    NCURSES_ACS('k') /* upper right corner */
0353 #define ACS_LRCORNER    NCURSES_ACS('j') /* lower right corner */
0354 #define ACS_LTEE    NCURSES_ACS('t') /* tee pointing right */
0355 #define ACS_RTEE    NCURSES_ACS('u') /* tee pointing left */
0356 #define ACS_BTEE    NCURSES_ACS('v') /* tee pointing up */
0357 #define ACS_TTEE    NCURSES_ACS('w') /* tee pointing down */
0358 #define ACS_HLINE   NCURSES_ACS('q') /* horizontal line */
0359 #define ACS_VLINE   NCURSES_ACS('x') /* vertical line */
0360 #define ACS_PLUS    NCURSES_ACS('n') /* large plus or crossover */
0361 #define ACS_S1      NCURSES_ACS('o') /* scan line 1 */
0362 #define ACS_S9      NCURSES_ACS('s') /* scan line 9 */
0363 #define ACS_DIAMOND NCURSES_ACS('`') /* diamond */
0364 #define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */
0365 #define ACS_DEGREE  NCURSES_ACS('f') /* degree symbol */
0366 #define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */
0367 #define ACS_BULLET  NCURSES_ACS('~') /* bullet */
0368 /* Teletype 5410v1 symbols begin here */
0369 #define ACS_LARROW  NCURSES_ACS(',') /* arrow pointing left */
0370 #define ACS_RARROW  NCURSES_ACS('+') /* arrow pointing right */
0371 #define ACS_DARROW  NCURSES_ACS('.') /* arrow pointing down */
0372 #define ACS_UARROW  NCURSES_ACS('-') /* arrow pointing up */
0373 #define ACS_BOARD   NCURSES_ACS('h') /* board of squares */
0374 #define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */
0375 #define ACS_BLOCK   NCURSES_ACS('0') /* solid square block */
0376 /*
0377  * These aren't documented, but a lot of System Vs have them anyway
0378  * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
0379  * The ACS_names may not match AT&T's, our source didn't know them.
0380  */
0381 #define ACS_S3      NCURSES_ACS('p') /* scan line 3 */
0382 #define ACS_S7      NCURSES_ACS('r') /* scan line 7 */
0383 #define ACS_LEQUAL  NCURSES_ACS('y') /* less/equal */
0384 #define ACS_GEQUAL  NCURSES_ACS('z') /* greater/equal */
0385 #define ACS_PI      NCURSES_ACS('{') /* Pi */
0386 #define ACS_NEQUAL  NCURSES_ACS('|') /* not equal */
0387 #define ACS_STERLING    NCURSES_ACS('}') /* UK pound sign */
0388 
0389 /*
0390  * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
0391  * is the right, b is the bottom, and l is the left.  t, r, b, and l might
0392  * be B (blank), S (single), D (double), or T (thick).  The subset defined
0393  * here only uses B and S.
0394  */
0395 #define ACS_BSSB    ACS_ULCORNER
0396 #define ACS_SSBB    ACS_LLCORNER
0397 #define ACS_BBSS    ACS_URCORNER
0398 #define ACS_SBBS    ACS_LRCORNER
0399 #define ACS_SBSS    ACS_RTEE
0400 #define ACS_SSSB    ACS_LTEE
0401 #define ACS_SSBS    ACS_BTEE
0402 #define ACS_BSSS    ACS_TTEE
0403 #define ACS_BSBS    ACS_HLINE
0404 #define ACS_SBSB    ACS_VLINE
0405 #define ACS_SSSS    ACS_PLUS
0406 
0407 #undef  ERR
0408 #define ERR     (-1)
0409 
0410 #undef  OK
0411 #define OK      (0)
0412 
0413 /* values for the _flags member */
0414 #define _SUBWIN         0x01    /* is this a sub-window? */
0415 #define _ENDLINE        0x02    /* is the window flush right? */
0416 #define _FULLWIN        0x04    /* is the window full-screen? */
0417 #define _SCROLLWIN      0x08    /* bottom edge is at screen bottom? */
0418 #define _ISPAD          0x10    /* is this window a pad? */
0419 #define _HASMOVED       0x20    /* has cursor moved since last refresh? */
0420 #define _WRAPPED        0x40    /* cursor was just wrappped */
0421 
0422 /*
0423  * this value is used in the firstchar and lastchar fields to mark
0424  * unchanged lines
0425  */
0426 #define _NOCHANGE       -1
0427 
0428 /*
0429  * this value is used in the oldindex field to mark lines created by insertions
0430  * and scrolls.
0431  */
0432 #define _NEWINDEX   -1
0433 
0434 #ifdef NCURSES_INTERNALS
0435 #undef SCREEN
0436 #define SCREEN struct screen
0437 SCREEN;
0438 #else
0439 typedef struct screen  SCREEN;
0440 #endif
0441 
0442 typedef struct _win_st WINDOW;
0443 
0444 typedef chtype  attr_t;     /* ...must be at least as wide as chtype */
0445 
0446 #if NCURSES_WIDECHAR
0447 
0448 #if 0
0449 #ifdef mblen            /* libutf8.h defines it w/o undefining first */
0450 #undef mblen
0451 #endif
0452 #include <libutf8.h>
0453 #endif
0454 
0455 #if 1
0456 #include <wchar.h>      /* ...to get mbstate_t, etc. */
0457 #endif
0458 
0459 #if 0
0460 typedef unsigned short wchar_t1;
0461 #endif
0462 
0463 #if 0
0464 typedef unsigned int wint_t1;
0465 #endif
0466 
0467 /*
0468  * cchar_t stores an array of CCHARW_MAX wide characters.  The first is
0469  * normally a spacing character.  The others are non-spacing.  If those
0470  * (spacing and nonspacing) do not fill the array, a null L'\0' follows.
0471  * Otherwise, a null is assumed to follow when extracting via getcchar().
0472  */
0473 #define CCHARW_MAX  5
0474 typedef struct
0475 {
0476     attr_t  attr;
0477     wchar_t chars[CCHARW_MAX];
0478 #if 1
0479 #undef NCURSES_EXT_COLORS
0480 #define NCURSES_EXT_COLORS 20221231
0481     int     ext_color;  /* color pair, must be more than 16-bits */
0482 #endif
0483 }
0484 cchar_t;
0485 
0486 #endif /* NCURSES_WIDECHAR */
0487 
0488 #if !NCURSES_OPAQUE
0489 struct ldat;
0490 
0491 struct _win_st
0492 {
0493     NCURSES_SIZE_T _cury, _curx; /* current cursor position */
0494 
0495     /* window location and size */
0496     NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */
0497     NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */
0498 
0499     short   _flags;     /* window state flags */
0500 
0501     /* attribute tracking */
0502     attr_t  _attrs;     /* current attribute for non-space character */
0503     chtype  _bkgd;      /* current background char/attribute pair */
0504 
0505     /* option values set by user */
0506     bool    _notimeout; /* no time out on function-key entry? */
0507     bool    _clear;     /* consider all data in the window invalid? */
0508     bool    _leaveok;   /* OK to not reset cursor on exit? */
0509     bool    _scroll;    /* OK to scroll this window? */
0510     bool    _idlok;     /* OK to use insert/delete line? */
0511     bool    _idcok;     /* OK to use insert/delete char? */
0512     bool    _immed;     /* window in immed mode? (not yet used) */
0513     bool    _sync;      /* window in sync mode? */
0514     bool    _use_keypad;    /* process function keys into KEY_ symbols? */
0515     int _delay;     /* 0 = nodelay, <0 = blocking, >0 = delay */
0516 
0517     struct ldat *_line; /* the actual line data */
0518 
0519     /* global screen state */
0520     NCURSES_SIZE_T _regtop; /* top line of scrolling region */
0521     NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */
0522 
0523     /* these are used only if this is a sub-window */
0524     int _parx;      /* x coordinate of this window in parent */
0525     int _pary;      /* y coordinate of this window in parent */
0526     WINDOW  *_parent;   /* pointer to parent if a sub-window */
0527 
0528     /* these are used only if this is a pad */
0529     struct pdat
0530     {
0531         NCURSES_SIZE_T _pad_y,      _pad_x;
0532         NCURSES_SIZE_T _pad_top,    _pad_left;
0533         NCURSES_SIZE_T _pad_bottom, _pad_right;
0534     } _pad;
0535 
0536     NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
0537 
0538 #if NCURSES_WIDECHAR
0539     cchar_t  _bkgrnd;   /* current background char/attribute pair */
0540 #if 1
0541     int _color;     /* current color-pair for non-space character */
0542 #endif
0543 #endif
0544 };
0545 #endif /* NCURSES_OPAQUE */
0546 
0547 /*
0548  * GCC (and some other compilers) define '__attribute__'; we're using this
0549  * macro to alert the compiler to flag inconsistencies in printf/scanf-like
0550  * function calls.  Just in case '__attribute__' isn't defined, make a dummy.
0551  * Old versions of G++ do not accept it anyway, at least not consistently with
0552  * GCC.
0553  */
0554 #if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
0555 #define __attribute__(p) /* nothing */
0556 #endif
0557 
0558 /*
0559  * We cannot define these in ncurses_cfg.h, since they require parameters to be
0560  * passed (that is non-portable).
0561  */
0562 #ifndef GCC_PRINTFLIKE
0563 #ifndef printf
0564 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
0565 #else
0566 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
0567 #endif
0568 #endif
0569 
0570 #ifndef GCC_SCANFLIKE
0571 #ifndef scanf
0572 #define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
0573 #else
0574 #define GCC_SCANFLIKE(fmt,var)  /*nothing*/
0575 #endif
0576 #endif
0577 
0578 #ifndef GCC_NORETURN
0579 #define GCC_NORETURN /* nothing */
0580 #endif
0581 
0582 #ifndef GCC_UNUSED
0583 #define GCC_UNUSED /* nothing */
0584 #endif
0585 
0586 #undef  GCC_DEPRECATED
0587 #if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2)) && !defined(NCURSES_INTERNALS)
0588 #define GCC_DEPRECATED(msg) __attribute__((deprecated))
0589 #else
0590 #define GCC_DEPRECATED(msg) /* nothing */
0591 #endif
0592 
0593 /*
0594  * Curses uses a helper function.  Define our type for this to simplify
0595  * extending it for the sp-funcs feature.
0596  */
0597 typedef int (*NCURSES_OUTC)(int);
0598 
0599 /*
0600  * Function prototypes.  This is the complete X/Open Curses list of required
0601  * functions.  Those marked `generated' will have sources generated from the
0602  * macro definitions later in this file, in order to satisfy XPG4.2
0603  * requirements.
0604  */
0605 
0606 extern NCURSES_EXPORT(int) addch (const chtype);            /* generated */
0607 extern NCURSES_EXPORT(int) addchnstr (const chtype *, int);     /* generated */
0608 extern NCURSES_EXPORT(int) addchstr (const chtype *);           /* generated */
0609 extern NCURSES_EXPORT(int) addnstr (const char *, int);         /* generated */
0610 extern NCURSES_EXPORT(int) addstr (const char *);           /* generated */
0611 extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T);            /* generated */
0612 extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T);         /* generated */
0613 extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T);            /* generated */
0614 extern NCURSES_EXPORT(int) attr_get (attr_t *, NCURSES_PAIRS_T *, void *);  /* generated */
0615 extern NCURSES_EXPORT(int) attr_off (attr_t, void *);           /* generated */
0616 extern NCURSES_EXPORT(int) attr_on (attr_t, void *);            /* generated */
0617 extern NCURSES_EXPORT(int) attr_set (attr_t, NCURSES_PAIRS_T, void *);      /* generated */
0618 extern NCURSES_EXPORT(int) baudrate (void);             /* implemented */
0619 extern NCURSES_EXPORT(int) beep  (void);                /* implemented */
0620 extern NCURSES_EXPORT(int) bkgd (chtype);               /* generated */
0621 extern NCURSES_EXPORT(void) bkgdset (chtype);               /* generated */
0622 extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);    /* generated */
0623 extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype);      /* generated */
0624 extern NCURSES_EXPORT(bool) can_change_color (void);            /* implemented */
0625 extern NCURSES_EXPORT(int) cbreak (void);               /* implemented */
0626 extern NCURSES_EXPORT(int) chgat (int, attr_t, NCURSES_PAIRS_T, const void *);  /* generated */
0627 extern NCURSES_EXPORT(int) clear (void);                /* generated */
0628 extern NCURSES_EXPORT(int) clearok (WINDOW *,bool);         /* implemented */
0629 extern NCURSES_EXPORT(int) clrtobot (void);             /* generated */
0630 extern NCURSES_EXPORT(int) clrtoeol (void);             /* generated */
0631 extern NCURSES_EXPORT(int) color_content (NCURSES_COLOR_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*,NCURSES_COLOR_T*);  /* implemented */
0632 extern NCURSES_EXPORT(int) color_set (NCURSES_PAIRS_T,void*);           /* generated */
0633 extern NCURSES_EXPORT(int) COLOR_PAIR (int);                /* generated */
0634 extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */
0635 extern NCURSES_EXPORT(int) curs_set (int);              /* implemented */
0636 extern NCURSES_EXPORT(int) def_prog_mode (void);            /* implemented */
0637 extern NCURSES_EXPORT(int) def_shell_mode (void);           /* implemented */
0638 extern NCURSES_EXPORT(int) delay_output (int);              /* implemented */
0639 extern NCURSES_EXPORT(int) delch (void);                /* generated */
0640 extern NCURSES_EXPORT(void) delscreen (SCREEN *);           /* implemented */
0641 extern NCURSES_EXPORT(int) delwin (WINDOW *);               /* implemented */
0642 extern NCURSES_EXPORT(int) deleteln (void);             /* generated */
0643 extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int);  /* implemented */
0644 extern NCURSES_EXPORT(int) doupdate (void);             /* implemented */
0645 extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *);          /* implemented */
0646 extern NCURSES_EXPORT(int) echo (void);                 /* implemented */
0647 extern NCURSES_EXPORT(int) echochar (const chtype);         /* generated */
0648 extern NCURSES_EXPORT(int) erase (void);                /* generated */
0649 extern NCURSES_EXPORT(int) endwin (void);               /* implemented */
0650 extern NCURSES_EXPORT(char) erasechar (void);               /* implemented */
0651 extern NCURSES_EXPORT(void) filter (void);              /* implemented */
0652 extern NCURSES_EXPORT(int) flash (void);                /* implemented */
0653 extern NCURSES_EXPORT(int) flushinp (void);             /* implemented */
0654 extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *);           /* generated */
0655 extern NCURSES_EXPORT(int) getch (void);                /* generated */
0656 extern NCURSES_EXPORT(int) getnstr (char *, int);           /* generated */
0657 extern NCURSES_EXPORT(int) getstr (char *);             /* generated */
0658 extern NCURSES_EXPORT(WINDOW *) getwin (FILE *);            /* implemented */
0659 extern NCURSES_EXPORT(int) halfdelay (int);             /* implemented */
0660 extern NCURSES_EXPORT(bool) has_colors (void);              /* implemented */
0661 extern NCURSES_EXPORT(bool) has_ic (void);              /* implemented */
0662 extern NCURSES_EXPORT(bool) has_il (void);              /* implemented */
0663 extern NCURSES_EXPORT(int) hline (chtype, int);             /* generated */
0664 extern NCURSES_EXPORT(void) idcok (WINDOW *, bool);         /* implemented */
0665 extern NCURSES_EXPORT(int) idlok (WINDOW *, bool);          /* implemented */
0666 extern NCURSES_EXPORT(void) immedok (WINDOW *, bool);           /* implemented */
0667 extern NCURSES_EXPORT(chtype) inch (void);              /* generated */
0668 extern NCURSES_EXPORT(int) inchnstr (chtype *, int);            /* generated */
0669 extern NCURSES_EXPORT(int) inchstr (chtype *);              /* generated */
0670 extern NCURSES_EXPORT(WINDOW *) initscr (void);             /* implemented */
0671 extern NCURSES_EXPORT(int) init_color (NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T);    /* implemented */
0672 extern NCURSES_EXPORT(int) init_pair (NCURSES_PAIRS_T,NCURSES_COLOR_T,NCURSES_COLOR_T);     /* implemented */
0673 extern NCURSES_EXPORT(int) innstr (char *, int);            /* generated */
0674 extern NCURSES_EXPORT(int) insch (chtype);              /* generated */
0675 extern NCURSES_EXPORT(int) insdelln (int);              /* generated */
0676 extern NCURSES_EXPORT(int) insertln (void);             /* generated */
0677 extern NCURSES_EXPORT(int) insnstr (const char *, int);         /* generated */
0678 extern NCURSES_EXPORT(int) insstr (const char *);           /* generated */
0679 extern NCURSES_EXPORT(int) instr (char *);              /* generated */
0680 extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool);           /* implemented */
0681 extern NCURSES_EXPORT(bool) isendwin (void);                /* implemented */
0682 extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int);      /* implemented */
0683 extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *);           /* implemented */
0684 extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int);      /* implemented */
0685 extern NCURSES_EXPORT(int) keypad (WINDOW *,bool);          /* implemented */
0686 extern NCURSES_EXPORT(char) killchar (void);                /* implemented */
0687 extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool);         /* implemented */
0688 extern NCURSES_EXPORT(char *) longname (void);              /* implemented */
0689 extern NCURSES_EXPORT(int) meta (WINDOW *,bool);            /* implemented */
0690 extern NCURSES_EXPORT(int) move (int, int);             /* generated */
0691 extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype);        /* generated */
0692 extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */
0693 extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *);   /* generated */
0694 extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */
0695 extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *);       /* generated */
0696 extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, NCURSES_PAIRS_T, const void *);  /* generated */
0697 extern NCURSES_EXPORT(int) mvcur (int,int,int,int);         /* implemented */
0698 extern NCURSES_EXPORT(int) mvdelch (int, int);              /* generated */
0699 extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int);       /* implemented */
0700 extern NCURSES_EXPORT(int) mvgetch (int, int);              /* generated */
0701 extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int);       /* generated */
0702 extern NCURSES_EXPORT(int) mvgetstr (int, int, char *);         /* generated */
0703 extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int);     /* generated */
0704 extern NCURSES_EXPORT(chtype) mvinch (int, int);            /* generated */
0705 extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int);    /* generated */
0706 extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *);      /* generated */
0707 extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int);        /* generated */
0708 extern NCURSES_EXPORT(int) mvinsch (int, int, chtype);          /* generated */
0709 extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */
0710 extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *);       /* generated */
0711 extern NCURSES_EXPORT(int) mvinstr (int, int, char *);          /* generated */
0712 extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...)     /* implemented */
0713         GCC_PRINTFLIKE(3,4);
0714 extern NCURSES_EXPORT(int) mvscanw (int,int, const char *,...)      /* implemented */
0715         GCC_SCANFLIKE(3,4);
0716 extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int);     /* generated */
0717 extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */
0718 extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */
0719 extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *);    /* generated */
0720 extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int);  /* generated */
0721 extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *);    /* generated */
0722 extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, NCURSES_PAIRS_T, const void *);/* generated */
0723 extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int);       /* generated */
0724 extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int);       /* generated */
0725 extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int);    /* generated */
0726 extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *);  /* generated */
0727 extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int);  /* generated */
0728 extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int);            /* implemented */
0729 extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int);         /* generated */
0730 extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */
0731 extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *);       /* generated */
0732 extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int);     /* generated */
0733 extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype);       /* generated */
0734 extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int);  /* generated */
0735 extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *);    /* generated */
0736 extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *);       /* generated */
0737 extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...)    /* implemented */
0738         GCC_PRINTFLIKE(4,5);
0739 extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, const char *,...)    /* implemented */
0740         GCC_SCANFLIKE(4,5);
0741 extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int);   /* generated */
0742 extern NCURSES_EXPORT(int) napms (int);                 /* implemented */
0743 extern NCURSES_EXPORT(WINDOW *) newpad (int,int);           /* implemented */
0744 extern NCURSES_EXPORT(SCREEN *) newterm (const char *,FILE *,FILE *);   /* implemented */
0745 extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int);       /* implemented */
0746 extern NCURSES_EXPORT(int) nl (void);                   /* implemented */
0747 extern NCURSES_EXPORT(int) nocbreak (void);             /* implemented */
0748 extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool);         /* implemented */
0749 extern NCURSES_EXPORT(int) noecho (void);               /* implemented */
0750 extern NCURSES_EXPORT(int) nonl (void);                 /* implemented */
0751 extern NCURSES_EXPORT(void) noqiflush (void);               /* implemented */
0752 extern NCURSES_EXPORT(int) noraw (void);                /* implemented */
0753 extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool);           /* implemented */
0754 extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *);        /* implemented */
0755 extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *);      /* implemented */
0756 extern NCURSES_EXPORT(int) pair_content (NCURSES_PAIRS_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*);        /* implemented */
0757 extern NCURSES_EXPORT(int) PAIR_NUMBER (int);               /* generated */
0758 extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype);      /* implemented */
0759 extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
0760 extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */
0761 extern NCURSES_EXPORT(int) printw (const char *,...)            /* implemented */
0762         GCC_PRINTFLIKE(1,2);
0763 extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *);           /* implemented */
0764 extern NCURSES_EXPORT(void) qiflush (void);             /* implemented */
0765 extern NCURSES_EXPORT(int) raw (void);                  /* implemented */
0766 extern NCURSES_EXPORT(int) redrawwin (WINDOW *);            /* generated */
0767 extern NCURSES_EXPORT(int) refresh (void);              /* generated */
0768 extern NCURSES_EXPORT(int) resetty (void);              /* implemented */
0769 extern NCURSES_EXPORT(int) reset_prog_mode (void);          /* implemented */
0770 extern NCURSES_EXPORT(int) reset_shell_mode (void);         /* implemented */
0771 extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int));    /* implemented */
0772 extern NCURSES_EXPORT(int) savetty (void);              /* implemented */
0773 extern NCURSES_EXPORT(int) scanw (const char *,...)         /* implemented */
0774         GCC_SCANFLIKE(1,2);
0775 extern NCURSES_EXPORT(int) scr_dump (const char *);         /* implemented */
0776 extern NCURSES_EXPORT(int) scr_init (const char *);         /* implemented */
0777 extern NCURSES_EXPORT(int) scrl (int);                  /* generated */
0778 extern NCURSES_EXPORT(int) scroll (WINDOW *);               /* generated */
0779 extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool);            /* implemented */
0780 extern NCURSES_EXPORT(int) scr_restore (const char *);          /* implemented */
0781 extern NCURSES_EXPORT(int) scr_set (const char *);          /* implemented */
0782 extern NCURSES_EXPORT(int) setscrreg (int,int);             /* generated */
0783 extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *);            /* implemented */
0784 extern NCURSES_EXPORT(int) slk_attroff (const chtype);          /* implemented */
0785 extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *);     /* generated:WIDEC */
0786 extern NCURSES_EXPORT(int) slk_attron (const chtype);           /* implemented */
0787 extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*);          /* generated:WIDEC */
0788 extern NCURSES_EXPORT(int) slk_attrset (const chtype);          /* implemented */
0789 extern NCURSES_EXPORT(attr_t) slk_attr (void);              /* implemented */
0790 extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,NCURSES_PAIRS_T,void*);   /* implemented */
0791 extern NCURSES_EXPORT(int) slk_clear (void);                /* implemented */
0792 extern NCURSES_EXPORT(int) slk_color (NCURSES_PAIRS_T);             /* implemented */
0793 extern NCURSES_EXPORT(int) slk_init (int);              /* implemented */
0794 extern NCURSES_EXPORT(char *) slk_label (int);              /* implemented */
0795 extern NCURSES_EXPORT(int) slk_noutrefresh (void);          /* implemented */
0796 extern NCURSES_EXPORT(int) slk_refresh (void);              /* implemented */
0797 extern NCURSES_EXPORT(int) slk_restore (void);              /* implemented */
0798 extern NCURSES_EXPORT(int) slk_set (int,const char *,int);      /* implemented */
0799 extern NCURSES_EXPORT(int) slk_touch (void);                /* implemented */
0800 extern NCURSES_EXPORT(int) standout (void);             /* generated */
0801 extern NCURSES_EXPORT(int) standend (void);             /* generated */
0802 extern NCURSES_EXPORT(int) start_color (void);              /* implemented */
0803 extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int);  /* implemented */
0804 extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int);  /* implemented */
0805 extern NCURSES_EXPORT(int) syncok (WINDOW *, bool);         /* implemented */
0806 extern NCURSES_EXPORT(chtype) termattrs (void);             /* implemented */
0807 extern NCURSES_EXPORT(char *) termname (void);              /* implemented */
0808 extern NCURSES_EXPORT(void) timeout (int);              /* generated */
0809 extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int);      /* generated */
0810 extern NCURSES_EXPORT(int) touchwin (WINDOW *);             /* generated */
0811 extern NCURSES_EXPORT(int) typeahead (int);             /* implemented */
0812 extern NCURSES_EXPORT(int) ungetch (int);               /* implemented */
0813 extern NCURSES_EXPORT(int) untouchwin (WINDOW *);           /* generated */
0814 extern NCURSES_EXPORT(void) use_env (bool);             /* implemented */
0815 extern NCURSES_EXPORT(void) use_tioctl (bool);              /* implemented */
0816 extern NCURSES_EXPORT(int) vidattr (chtype);                /* implemented */
0817 extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC);      /* implemented */
0818 extern NCURSES_EXPORT(int) vline (chtype, int);             /* generated */
0819 extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_printw) /* implemented */
0820         GCC_PRINTFLIKE(2,0);
0821 extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *, va_list)  /* implemented */
0822         GCC_PRINTFLIKE(2,0);    
0823 extern NCURSES_EXPORT(int) vwscanw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_scanw)   /* implemented */
0824         GCC_SCANFLIKE(2,0);
0825 extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, const char *, va_list)   /* implemented */
0826         GCC_SCANFLIKE(2,0);
0827 extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype);     /* implemented */
0828 extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int);    /* implemented */
0829 extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *);     /* generated */
0830 extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int);    /* implemented */
0831 extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *);     /* generated */
0832 extern NCURSES_EXPORT(int) wattron (WINDOW *, int);         /* generated */
0833 extern NCURSES_EXPORT(int) wattroff (WINDOW *, int);            /* generated */
0834 extern NCURSES_EXPORT(int) wattrset (WINDOW *, int);            /* generated */
0835 extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, NCURSES_PAIRS_T *, void *);   /* generated */
0836 extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *);     /* implemented */
0837 extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *);    /* implemented */
0838 extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, NCURSES_PAIRS_T, void *);   /* generated */
0839 extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype);            /* implemented */
0840 extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype);         /* implemented */
0841 extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);  /* implemented */
0842 extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, NCURSES_PAIRS_T, const void *);/* implemented */
0843 extern NCURSES_EXPORT(int) wclear (WINDOW *);               /* implemented */
0844 extern NCURSES_EXPORT(int) wclrtobot (WINDOW *);            /* implemented */
0845 extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *);            /* implemented */
0846 extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,NCURSES_PAIRS_T,void*);      /* implemented */
0847 extern NCURSES_EXPORT(void) wcursyncup (WINDOW *);          /* implemented */
0848 extern NCURSES_EXPORT(int) wdelch (WINDOW *);               /* implemented */
0849 extern NCURSES_EXPORT(int) wdeleteln (WINDOW *);            /* generated */
0850 extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype);      /* implemented */
0851 extern NCURSES_EXPORT(int) werase (WINDOW *);               /* implemented */
0852 extern NCURSES_EXPORT(int) wgetch (WINDOW *);               /* implemented */
0853 extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int);      /* implemented */
0854 extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *);          /* generated */
0855 extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int);      /* implemented */
0856 extern NCURSES_EXPORT(chtype) winch (WINDOW *);             /* implemented */
0857 extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int);     /* implemented */
0858 extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *);       /* generated */
0859 extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int);     /* implemented */
0860 extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype);           /* implemented */
0861 extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int);            /* implemented */
0862 extern NCURSES_EXPORT(int) winsertln (WINDOW *);            /* generated */
0863 extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int);   /* implemented */
0864 extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *);        /* generated */
0865 extern NCURSES_EXPORT(int) winstr (WINDOW *, char *);           /* generated */
0866 extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int);            /* implemented */
0867 extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *);         /* implemented */
0868 extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...)     /* implemented */
0869         GCC_PRINTFLIKE(2,3);
0870 extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int);        /* implemented */
0871 extern NCURSES_EXPORT(int) wrefresh (WINDOW *);             /* implemented */
0872 extern NCURSES_EXPORT(int) wscanw (WINDOW *, const char *,...)      /* implemented */
0873         GCC_SCANFLIKE(2,3);
0874 extern NCURSES_EXPORT(int) wscrl (WINDOW *,int);            /* implemented */
0875 extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int);       /* implemented */
0876 extern NCURSES_EXPORT(int) wstandout (WINDOW *);            /* generated */
0877 extern NCURSES_EXPORT(int) wstandend (WINDOW *);            /* generated */
0878 extern NCURSES_EXPORT(void) wsyncdown (WINDOW *);           /* implemented */
0879 extern NCURSES_EXPORT(void) wsyncup (WINDOW *);             /* implemented */
0880 extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int);            /* implemented */
0881 extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int);     /* implemented */
0882 extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int);        /* implemented */
0883 
0884 /*
0885  * These are also declared in <ncursesw/term.h>:
0886  */
0887 extern NCURSES_EXPORT(int) tigetflag (const char *);            /* implemented */
0888 extern NCURSES_EXPORT(int) tigetnum (const char *);         /* implemented */
0889 extern NCURSES_EXPORT(char *) tigetstr (const char *);          /* implemented */
0890 extern NCURSES_EXPORT(int) putp (const char *);             /* implemented */
0891 
0892 #if NCURSES_TPARM_VARARGS
0893 extern NCURSES_EXPORT(char *) tparm (const char *, ...);        /* special */
0894 #else
0895 extern NCURSES_EXPORT(char *) tparm (const char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG);  /* special */
0896 #endif
0897 
0898 extern NCURSES_EXPORT(char *) tiparm (const char *, ...);       /* special */
0899 
0900 /*
0901  * These functions are not in X/Open, but we use them in macro definitions:
0902  */
0903 extern NCURSES_EXPORT(int) getattrs (const WINDOW *);           /* generated */
0904 extern NCURSES_EXPORT(int) getcurx (const WINDOW *);            /* generated */
0905 extern NCURSES_EXPORT(int) getcury (const WINDOW *);            /* generated */
0906 extern NCURSES_EXPORT(int) getbegx (const WINDOW *);            /* generated */
0907 extern NCURSES_EXPORT(int) getbegy (const WINDOW *);            /* generated */
0908 extern NCURSES_EXPORT(int) getmaxx (const WINDOW *);            /* generated */
0909 extern NCURSES_EXPORT(int) getmaxy (const WINDOW *);            /* generated */
0910 extern NCURSES_EXPORT(int) getparx (const WINDOW *);            /* generated */
0911 extern NCURSES_EXPORT(int) getpary (const WINDOW *);            /* generated */
0912 
0913 /*
0914  * vid_attr() was implemented originally based on a draft of X/Open curses.
0915  */
0916 #if !NCURSES_WIDECHAR
0917 #define vid_attr(a,pair,opts) vidattr(a)
0918 #endif
0919 
0920 /*
0921  * These functions are extensions - not in X/Open Curses.
0922  */
0923 #if 1
0924 #undef  NCURSES_EXT_FUNCS
0925 #define NCURSES_EXT_FUNCS 20221231
0926 typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
0927 typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
0928 extern NCURSES_EXPORT(bool) is_term_resized (int, int);
0929 extern NCURSES_EXPORT(char *) keybound (int, int);
0930 extern NCURSES_EXPORT(const char *) curses_version (void);
0931 extern NCURSES_EXPORT(int) alloc_pair (int, int);
0932 extern NCURSES_EXPORT(int) assume_default_colors (int, int);
0933 extern NCURSES_EXPORT(int) define_key (const char *, int);
0934 extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
0935 extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
0936 extern NCURSES_EXPORT(int) extended_slk_color(int);
0937 extern NCURSES_EXPORT(int) find_pair (int, int);
0938 extern NCURSES_EXPORT(int) free_pair (int);
0939 extern NCURSES_EXPORT(int) get_escdelay (void);
0940 extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
0941 extern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
0942 extern NCURSES_EXPORT(int) key_defined (const char *);
0943 extern NCURSES_EXPORT(int) keyok (int, bool);
0944 extern NCURSES_EXPORT(void) reset_color_pairs (void);
0945 extern NCURSES_EXPORT(int) resize_term (int, int);
0946 extern NCURSES_EXPORT(int) resizeterm (int, int);
0947 extern NCURSES_EXPORT(int) set_escdelay (int);
0948 extern NCURSES_EXPORT(int) set_tabsize (int);
0949 extern NCURSES_EXPORT(int) use_default_colors (void);
0950 extern NCURSES_EXPORT(int) use_extended_names (bool);
0951 extern NCURSES_EXPORT(int) use_legacy_coding (int);
0952 extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *);
0953 extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *);
0954 extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
0955 extern NCURSES_EXPORT(void) nofilter(void);
0956 
0957 /*
0958  * These extensions provide access to information stored in the WINDOW even
0959  * when NCURSES_OPAQUE is set:
0960  */
0961 extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *);    /* generated */
0962 extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *);    /* generated */
0963 extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *);      /* generated */
0964 extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *);      /* generated */
0965 extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *);    /* generated */
0966 extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *);     /* generated */
0967 extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *);    /* generated */
0968 extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *);    /* generated */
0969 extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *);  /* generated */
0970 extern NCURSES_EXPORT(bool) is_pad (const WINDOW *);        /* generated */
0971 extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *);   /* generated */
0972 extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *);     /* generated */
0973 extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *);     /* generated */
0974 extern NCURSES_EXPORT(int) wgetdelay (const WINDOW *);      /* generated */
0975 extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */
0976 
0977 #else
0978 #define curses_version() NCURSES_VERSION
0979 #endif
0980 
0981 /*
0982  * Extra extension-functions, which pass a SCREEN pointer rather than using
0983  * a global variable SP.
0984  */
0985 #if 1
0986 #undef  NCURSES_SP_FUNCS
0987 #define NCURSES_SP_FUNCS 20221231
0988 #define NCURSES_SP_NAME(name) name##_sp
0989 
0990 /* Define the sp-funcs helper function */
0991 #define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC)
0992 typedef int (*NCURSES_SP_OUTC)(SCREEN*, int);
0993 
0994 extern NCURSES_EXPORT(SCREEN *) new_prescr (void); /* implemented:SP_FUNC */
0995 
0996 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(baudrate) (SCREEN*); /* implemented:SP_FUNC */
0997 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FUNC */
0998 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */
0999 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */
1000 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */
1001 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */
1002 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
1003 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */
1004 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */
1005 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(doupdate) (SCREEN*); /* implemented:SP_FUNC */
1006 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (SCREEN*); /* implemented:SP_FUNC */
1007 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (SCREEN*); /* implemented:SP_FUNC */
1008 extern NCURSES_EXPORT(char) NCURSES_SP_NAME(erasechar) (SCREEN*);/* implemented:SP_FUNC */
1009 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(filter) (SCREEN*); /* implemented:SP_FUNC */
1010 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flash) (SCREEN*); /* implemented:SP_FUNC */
1011 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flushinp) (SCREEN*); /* implemented:SP_FUNC */
1012 extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(getwin) (SCREEN*, FILE *);          /* implemented:SP_FUNC */
1013 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* implemented:SP_FUNC */
1014 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */
1015 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */
1016 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */
1017 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */
1018 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */
1019 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool); /* implemented:SP_FUNC */
1020 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */
1021 extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */
1022 extern NCURSES_EXPORT(char) NCURSES_SP_NAME(killchar) (SCREEN*); /* implemented:SP_FUNC */
1023 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemented:SP_FUNC */
1024 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
1025 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */
1026 extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */
1027 extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, const char *, FILE *, FILE *); /* implemented:SP_FUNC */
1028 extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
1029 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */
1030 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */
1031 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_FUNC */
1032 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */
1033 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */
1034 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */
1035 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */
1036 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */
1037 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */
1038 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
1039 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_shell_mode) (SCREEN*); /* implemented:SP_FUNC */
1040 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resetty) (SCREEN*); /* implemented:SP_FUNC */
1041 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ripoffline) (SCREEN*, int, int (*)(WINDOW *, int));  /* implemented:SP_FUNC */
1042 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(savetty) (SCREEN*); /* implemented:SP_FUNC */
1043 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_init) (SCREEN*, const char *); /* implemented:SP_FUNC */
1044 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (SCREEN*, const char *); /* implemented:SP_FUNC */
1045 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_set) (SCREEN*, const char *); /* implemented:SP_FUNC */
1046 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype); /* implemented:SP_FUNC */
1047 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */
1048 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */
1049 extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */
1050 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, NCURSES_PAIRS_T, void*); /* implemented:SP_FUNC */
1051 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */
1052 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, NCURSES_PAIRS_T); /* implemented:SP_FUNC */
1053 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */
1054 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */
1055 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */
1056 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (SCREEN*); /* implemented:SP_FUNC */
1057 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (SCREEN*); /* implemented:SP_FUNC */
1058 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (SCREEN*, int, const char *, int); /* implemented:SP_FUNC */
1059 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (SCREEN*); /* implemented:SP_FUNC */
1060 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(start_color) (SCREEN*); /* implemented:SP_FUNC */
1061 extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(termattrs) (SCREEN*); /* implemented:SP_FUNC */
1062 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemented:SP_FUNC */
1063 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */
1064 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */
1065 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (SCREEN*, bool); /* implemented:SP_FUNC */
1066 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_tioctl) (SCREEN*, bool); /* implemented:SP_FUNC */
1067 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype);  /* implemented:SP_FUNC */
1068 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
1069 #if 1
1070 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int);    /* implemented:EXT_SP_FUNC */
1071 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
1072 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int);  /* implemented:EXT_SP_FUNC */
1073 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int);    /* implemented:EXT_SP_FUNC */
1074 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *); /* implemented:EXT_SP_FUNC */
1075 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *); /* implemented:EXT_SP_FUNC */
1076 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int);  /* implemented:EXT_SP_FUNC */
1077 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */
1078 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
1079 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
1080 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int);  /* implemented:EXT_SP_FUNC */
1081 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int);    /* implemented:EXT_SP_FUNC */
1082 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int);   /* implemented:EXT_SP_FUNC */
1083 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *);    /* implemented:EXT_SP_FUNC */
1084 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */
1085 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */  /* implemented:EXT_SP_FUNC */
1086 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
1087 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int);    /* implemented:EXT_SP_FUNC */
1088 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
1089 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int);    /* implemented:EXT_SP_FUNC */
1090 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_tabsize) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
1091 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_default_colors) (SCREEN*);   /* implemented:EXT_SP_FUNC */
1092 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int);   /* implemented:EXT_SP_FUNC */
1093 #endif
1094 #else
1095 #undef  NCURSES_SP_FUNCS
1096 #define NCURSES_SP_FUNCS 0
1097 #define NCURSES_SP_NAME(name) name
1098 #define NCURSES_SP_OUTC NCURSES_OUTC
1099 #endif
1100 
1101 /* attributes */
1102 
1103 #define NCURSES_ATTR_SHIFT       8
1104 #define NCURSES_BITS(mask,shift) (NCURSES_CAST(chtype,(mask)) << ((shift) + NCURSES_ATTR_SHIFT))
1105 
1106 #define A_NORMAL    (1U - 1U)
1107 #define A_ATTRIBUTES    NCURSES_BITS(~(1U - 1U),0)
1108 #define A_CHARTEXT  (NCURSES_BITS(1U,0) - 1U)
1109 #define A_COLOR     NCURSES_BITS(((1U) << 8) - 1U,0)
1110 #define A_STANDOUT  NCURSES_BITS(1U,8)
1111 #define A_UNDERLINE NCURSES_BITS(1U,9)
1112 #define A_REVERSE   NCURSES_BITS(1U,10)
1113 #define A_BLINK     NCURSES_BITS(1U,11)
1114 #define A_DIM       NCURSES_BITS(1U,12)
1115 #define A_BOLD      NCURSES_BITS(1U,13)
1116 #define A_ALTCHARSET    NCURSES_BITS(1U,14)
1117 #define A_INVIS     NCURSES_BITS(1U,15)
1118 #define A_PROTECT   NCURSES_BITS(1U,16)
1119 #define A_HORIZONTAL    NCURSES_BITS(1U,17)
1120 #define A_LEFT      NCURSES_BITS(1U,18)
1121 #define A_LOW       NCURSES_BITS(1U,19)
1122 #define A_RIGHT     NCURSES_BITS(1U,20)
1123 #define A_TOP       NCURSES_BITS(1U,21)
1124 #define A_VERTICAL  NCURSES_BITS(1U,22)
1125 
1126 #if 1
1127 #define A_ITALIC    NCURSES_BITS(1U,23) /* ncurses extension */
1128 #endif
1129 
1130 /*
1131  * Most of the pseudo functions are macros that either provide compatibility
1132  * with older versions of curses, or provide inline functionality to improve
1133  * performance.
1134  */
1135 
1136 /*
1137  * These pseudo functions are always implemented as macros:
1138  */
1139 
1140 #define getyx(win,y,x)      (y = getcury(win), x = getcurx(win))
1141 #define getbegyx(win,y,x)   (y = getbegy(win), x = getbegx(win))
1142 #define getmaxyx(win,y,x)   (y = getmaxy(win), x = getmaxx(win))
1143 #define getparyx(win,y,x)   (y = getpary(win), x = getparx(win))
1144 
1145 #define getsyx(y,x) do { if (newscr) { \
1146                  if (is_leaveok(newscr)) \
1147                 (y) = (x) = -1; \
1148                  else \
1149                  getyx(newscr,(y), (x)); \
1150             } \
1151             } while(0)
1152 
1153 #define setsyx(y,x) do { if (newscr) { \
1154                 if ((y) == -1 && (x) == -1) \
1155                 leaveok(newscr, TRUE); \
1156                 else { \
1157                 leaveok(newscr, FALSE); \
1158                 wmove(newscr, (y), (x)); \
1159                 } \
1160             } \
1161             } while(0)
1162 
1163 #ifndef NCURSES_NOMACROS
1164 
1165 /*
1166  * These miscellaneous pseudo functions are provided for compatibility:
1167  */
1168 
1169 #define wgetstr(w, s)       wgetnstr(w, s, -1)
1170 #define getnstr(s, n)       wgetnstr(stdscr, s, (n))
1171 
1172 #define setterm(term)       setupterm(term, 1, (int *)0)
1173 
1174 #define fixterm()       reset_prog_mode()
1175 #define resetterm()     reset_shell_mode()
1176 #define saveterm()      def_prog_mode()
1177 #define crmode()        cbreak()
1178 #define nocrmode()      nocbreak()
1179 #define gettmode()
1180 
1181 /* It seems older SYSV curses versions define these */
1182 #if !NCURSES_OPAQUE
1183 #define getattrs(win)       NCURSES_CAST(int, NCURSES_OK_ADDR(win) ? (win)->_attrs : A_NORMAL)
1184 #define getcurx(win)        (NCURSES_OK_ADDR(win) ? (win)->_curx : ERR)
1185 #define getcury(win)        (NCURSES_OK_ADDR(win) ? (win)->_cury : ERR)
1186 #define getbegx(win)        (NCURSES_OK_ADDR(win) ? (win)->_begx : ERR)
1187 #define getbegy(win)        (NCURSES_OK_ADDR(win) ? (win)->_begy : ERR)
1188 #define getmaxx(win)        (NCURSES_OK_ADDR(win) ? ((win)->_maxx + 1) : ERR)
1189 #define getmaxy(win)        (NCURSES_OK_ADDR(win) ? ((win)->_maxy + 1) : ERR)
1190 #define getparx(win)        (NCURSES_OK_ADDR(win) ? (win)->_parx : ERR)
1191 #define getpary(win)        (NCURSES_OK_ADDR(win) ? (win)->_pary : ERR)
1192 #endif /* NCURSES_OPAQUE */
1193 
1194 #define wstandout(win)      (wattrset(win,A_STANDOUT))
1195 #define wstandend(win)      (wattrset(win,A_NORMAL))
1196 
1197 #define wattron(win,at)     wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
1198 #define wattroff(win,at)    wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
1199 
1200 #if !NCURSES_OPAQUE
1201 #if NCURSES_WATTR_MACROS
1202 #if NCURSES_WIDECHAR && 1
1203 #define wattrset(win,at) \
1204     (NCURSES_OK_ADDR(win) \
1205       ? ((win)->_color = NCURSES_CAST(int, PAIR_NUMBER(at)), \
1206          (win)->_attrs = NCURSES_CAST(attr_t, at), \
1207          OK) \
1208       : ERR)
1209 #else
1210 #define wattrset(win,at) \
1211     (NCURSES_OK_ADDR(win) \
1212       ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \
1213          OK) \
1214       : ERR)
1215 #endif
1216 #endif /* NCURSES_WATTR_MACROS */
1217 #endif /* NCURSES_OPAQUE */
1218 
1219 #define scroll(win)     wscrl(win,1)
1220 
1221 #define touchwin(win)       wtouchln((win), 0, getmaxy(win), 1)
1222 #define touchline(win, s, c)    wtouchln((win), s, c, 1)
1223 #define untouchwin(win)     wtouchln((win), 0, getmaxy(win), 0)
1224 
1225 #define box(win, v, h)      wborder(win, v, v, h, h, 0, 0, 0, 0)
1226 #define border(ls, rs, ts, bs, tl, tr, bl, br)  wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
1227 #define hline(ch, n)        whline(stdscr, ch, (n))
1228 #define vline(ch, n)        wvline(stdscr, ch, (n))
1229 
1230 #define winstr(w, s)        winnstr(w, s, -1)
1231 #define winchstr(w, s)      winchnstr(w, s, -1)
1232 #define winsstr(w, s)       winsnstr(w, s, -1)
1233 
1234 #if !NCURSES_OPAQUE
1235 #define redrawwin(win)      wredrawln(win, 0, (NCURSES_OK_ADDR(win) ? (win)->_maxy+1 : -1))
1236 #endif /* NCURSES_OPAQUE */
1237 
1238 #define waddstr(win,str)    waddnstr(win,str,-1)
1239 #define waddchstr(win,str)  waddchnstr(win,str,-1)
1240 
1241 /*
1242  * These apply to the first 256 color pairs.
1243  */
1244 #define COLOR_PAIR(n)   (NCURSES_BITS((n), 0) & A_COLOR)
1245 #define PAIR_NUMBER(a)  (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
1246 
1247 /*
1248  * pseudo functions for standard screen
1249  */
1250 
1251 #define addch(ch)       waddch(stdscr,(ch))
1252 #define addchnstr(str,n)    waddchnstr(stdscr,(str),(n))
1253 #define addchstr(str)       waddchstr(stdscr,(str))
1254 #define addnstr(str,n)      waddnstr(stdscr,(str),(n))
1255 #define addstr(str)     waddnstr(stdscr,(str),-1)
1256 #define attr_get(ap,cp,o)   wattr_get(stdscr,(ap),(cp),(o))
1257 #define attr_off(a,o)       wattr_off(stdscr,(a),(o))
1258 #define attr_on(a,o)        wattr_on(stdscr,(a),(o))
1259 #define attr_set(a,c,o)     wattr_set(stdscr,(a),(c),(o))
1260 #define attroff(at)     wattroff(stdscr,(at))
1261 #define attron(at)      wattron(stdscr,(at))
1262 #define attrset(at)     wattrset(stdscr,(at))
1263 #define bkgd(ch)        wbkgd(stdscr,(ch))
1264 #define bkgdset(ch)     wbkgdset(stdscr,(ch))
1265 #define chgat(n,a,c,o)      wchgat(stdscr,(n),(a),(c),(o))
1266 #define clear()         wclear(stdscr)
1267 #define clrtobot()      wclrtobot(stdscr)
1268 #define clrtoeol()      wclrtoeol(stdscr)
1269 #define color_set(c,o)      wcolor_set(stdscr,(c),(o))
1270 #define delch()         wdelch(stdscr)
1271 #define deleteln()      winsdelln(stdscr,-1)
1272 #define echochar(c)     wechochar(stdscr,(c))
1273 #define erase()         werase(stdscr)
1274 #define getch()         wgetch(stdscr)
1275 #define getstr(str)     wgetstr(stdscr,(str))
1276 #define inch()          winch(stdscr)
1277 #define inchnstr(s,n)       winchnstr(stdscr,(s),(n))
1278 #define inchstr(s)      winchstr(stdscr,(s))
1279 #define innstr(s,n)     winnstr(stdscr,(s),(n))
1280 #define insch(c)        winsch(stdscr,(c))
1281 #define insdelln(n)     winsdelln(stdscr,(n))
1282 #define insertln()      winsdelln(stdscr,1)
1283 #define insnstr(s,n)        winsnstr(stdscr,(s),(n))
1284 #define insstr(s)       winsstr(stdscr,(s))
1285 #define instr(s)        winstr(stdscr,(s))
1286 #define move(y,x)       wmove(stdscr,(y),(x))
1287 #define refresh()       wrefresh(stdscr)
1288 #define scrl(n)         wscrl(stdscr,(n))
1289 #define setscrreg(t,b)      wsetscrreg(stdscr,(t),(b))
1290 #define standend()      wstandend(stdscr)
1291 #define standout()      wstandout(stdscr)
1292 #define timeout(delay)      wtimeout(stdscr,(delay))
1293 #define wdeleteln(win)      winsdelln(win,-1)
1294 #define winsertln(win)      winsdelln(win,1)
1295 
1296 /*
1297  * mv functions
1298  */
1299 
1300 #define mvwaddch(win,y,x,ch)        (wmove((win),(y),(x)) == ERR ? ERR : waddch((win),(ch)))
1301 #define mvwaddchnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),(n)))
1302 #define mvwaddchstr(win,y,x,str)    (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1))
1303 #define mvwaddnstr(win,y,x,str,n)   (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n)))
1304 #define mvwaddstr(win,y,x,str)      (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1))
1305 #define mvwchgat(win,y,x,n,a,c,o)   (wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o)))
1306 #define mvwdelch(win,y,x)       (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
1307 #define mvwgetch(win,y,x)       (wmove((win),(y),(x)) == ERR ? ERR : wgetch(win))
1308 #define mvwgetnstr(win,y,x,str,n)   (wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n)))
1309 #define mvwgetstr(win,y,x,str)      (wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str)))
1310 #define mvwhline(win,y,x,c,n)       (wmove((win),(y),(x)) == ERR ? ERR : whline((win),(c),(n)))
1311 #define mvwinch(win,y,x)        (wmove((win),(y),(x)) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
1312 #define mvwinchnstr(win,y,x,s,n)    (wmove((win),(y),(x)) == ERR ? ERR : winchnstr((win),(s),(n)))
1313 #define mvwinchstr(win,y,x,s)       (wmove((win),(y),(x)) == ERR ? ERR : winchstr((win),(s)))
1314 #define mvwinnstr(win,y,x,s,n)      (wmove((win),(y),(x)) == ERR ? ERR : winnstr((win),(s),(n)))
1315 #define mvwinsch(win,y,x,c)     (wmove((win),(y),(x)) == ERR ? ERR : winsch((win),(c)))
1316 #define mvwinsnstr(win,y,x,s,n)     (wmove((win),(y),(x)) == ERR ? ERR : winsnstr((win),(s),(n)))
1317 #define mvwinsstr(win,y,x,s)        (wmove((win),(y),(x)) == ERR ? ERR : winsstr((win),(s)))
1318 #define mvwinstr(win,y,x,s)     (wmove((win),(y),(x)) == ERR ? ERR : winstr((win),(s)))
1319 #define mvwvline(win,y,x,c,n)       (wmove((win),(y),(x)) == ERR ? ERR : wvline((win),(c),(n)))
1320 
1321 #define mvaddch(y,x,ch)         mvwaddch(stdscr,(y),(x),(ch))
1322 #define mvaddchnstr(y,x,str,n)      mvwaddchnstr(stdscr,(y),(x),(str),(n))
1323 #define mvaddchstr(y,x,str)     mvwaddchstr(stdscr,(y),(x),(str))
1324 #define mvaddnstr(y,x,str,n)        mvwaddnstr(stdscr,(y),(x),(str),(n))
1325 #define mvaddstr(y,x,str)       mvwaddstr(stdscr,(y),(x),(str))
1326 #define mvchgat(y,x,n,a,c,o)        mvwchgat(stdscr,(y),(x),(n),(a),(c),(o))
1327 #define mvdelch(y,x)            mvwdelch(stdscr,(y),(x))
1328 #define mvgetch(y,x)            mvwgetch(stdscr,(y),(x))
1329 #define mvgetnstr(y,x,str,n)        mvwgetnstr(stdscr,(y),(x),(str),(n))
1330 #define mvgetstr(y,x,str)       mvwgetstr(stdscr,(y),(x),(str))
1331 #define mvhline(y,x,c,n)        mvwhline(stdscr,(y),(x),(c),(n))
1332 #define mvinch(y,x)         mvwinch(stdscr,(y),(x))
1333 #define mvinchnstr(y,x,s,n)     mvwinchnstr(stdscr,(y),(x),(s),(n))
1334 #define mvinchstr(y,x,s)        mvwinchstr(stdscr,(y),(x),(s))
1335 #define mvinnstr(y,x,s,n)       mvwinnstr(stdscr,(y),(x),(s),(n))
1336 #define mvinsch(y,x,c)          mvwinsch(stdscr,(y),(x),(c))
1337 #define mvinsnstr(y,x,s,n)      mvwinsnstr(stdscr,(y),(x),(s),(n))
1338 #define mvinsstr(y,x,s)         mvwinsstr(stdscr,(y),(x),(s))
1339 #define mvinstr(y,x,s)          mvwinstr(stdscr,(y),(x),(s))
1340 #define mvvline(y,x,c,n)        mvwvline(stdscr,(y),(x),(c),(n))
1341 
1342 /*
1343  * Some wide-character functions can be implemented without the extensions.
1344  */
1345 #if !NCURSES_OPAQUE
1346 #define getbkgd(win)                    (NCURSES_OK_ADDR(win) ? ((win)->_bkgd) : 0)
1347 #endif /* NCURSES_OPAQUE */
1348 
1349 #define slk_attr_off(a,v)       ((v) ? ERR : slk_attroff(a))
1350 #define slk_attr_on(a,v)        ((v) ? ERR : slk_attron(a))
1351 
1352 #if !NCURSES_OPAQUE
1353 #if NCURSES_WATTR_MACROS
1354 #if NCURSES_WIDECHAR && 1
1355 #define wattr_set(win,a,p,opts) \
1356     (NCURSES_OK_ADDR(win) \
1357      ? ((void)((win)->_attrs = ((a) & ~A_COLOR), \
1358            (win)->_color = (opts) ? *(int *)(opts) : (p)), \
1359         OK) \
1360      : ERR)
1361 #define wattr_get(win,a,p,opts) \
1362     (NCURSES_OK_ADDR(win) \
1363      ? ((void)(NCURSES_OK_ADDR(a) \
1364            ? (*(a) = (win)->_attrs) \
1365            : OK), \
1366         (void)(NCURSES_OK_ADDR(p) \
1367            ? (*(p) = (NCURSES_PAIRS_T) (win)->_color) \
1368            : OK), \
1369         (void)(NCURSES_OK_ADDR(opts) \
1370            ? (*(int *)(opts) = (win)->_color) \
1371            : OK), \
1372         OK) \
1373      : ERR)
1374 #else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
1375 #define wattr_set(win,a,p,opts) \
1376      (NCURSES_OK_ADDR(win) \
1377       ? ((void)((win)->_attrs = (((a) & ~A_COLOR) | \
1378                      (attr_t)COLOR_PAIR(p))), \
1379          OK) \
1380       : ERR)
1381 #define wattr_get(win,a,p,opts) \
1382     (NCURSES_OK_ADDR(win) \
1383      ? ((void)(NCURSES_OK_ADDR(a) \
1384            ? (*(a) = (win)->_attrs) \
1385            : OK), \
1386         (void)(NCURSES_OK_ADDR(p) \
1387            ? (*(p) = (NCURSES_PAIRS_T) PAIR_NUMBER((win)->_attrs)) \
1388            : OK), \
1389         OK) \
1390      : ERR)
1391 #endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
1392 #endif /* NCURSES_WATTR_MACROS */
1393 #endif /* NCURSES_OPAQUE */
1394 
1395 /*
1396  * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use
1397  * varargs.h.  It adds new calls vw_printw/vw_scanw, which are supposed to
1398  * use POSIX stdarg.h.  The ncurses versions of vwprintw/vwscanw already
1399  * use stdarg.h, so...
1400  */
1401 /* define vw_printw     vwprintw */
1402 /* define vw_scanw      vwscanw */
1403 
1404 /*
1405  * Export fallback function for use in C++ binding.
1406  */
1407 #if !1
1408 #define vsscanf(a,b,c) _nc_vsscanf(a,b,c)
1409 NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
1410 #endif
1411 
1412 /*
1413  * These macros are extensions - not in X/Open Curses.
1414  */
1415 #if 1
1416 #if !NCURSES_OPAQUE
1417 #define is_cleared(win)     (NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE)
1418 #define is_idcok(win)       (NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE)
1419 #define is_idlok(win)       (NCURSES_OK_ADDR(win) ? (win)->_idlok : FALSE)
1420 #define is_immedok(win)     (NCURSES_OK_ADDR(win) ? (win)->_immed : FALSE)
1421 #define is_keypad(win)      (NCURSES_OK_ADDR(win) ? (win)->_use_keypad : FALSE)
1422 #define is_leaveok(win)     (NCURSES_OK_ADDR(win) ? (win)->_leaveok : FALSE)
1423 #define is_nodelay(win)     (NCURSES_OK_ADDR(win) ? ((win)->_delay == 0) : FALSE)
1424 #define is_notimeout(win)   (NCURSES_OK_ADDR(win) ? (win)->_notimeout : FALSE)
1425 #define is_pad(win)     (NCURSES_OK_ADDR(win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
1426 #define is_scrollok(win)    (NCURSES_OK_ADDR(win) ? (win)->_scroll : FALSE)
1427 #define is_subwin(win)      (NCURSES_OK_ADDR(win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
1428 #define is_syncok(win)      (NCURSES_OK_ADDR(win) ? (win)->_sync : FALSE)
1429 #define wgetdelay(win)      (NCURSES_OK_ADDR(win) ? (win)->_delay : 0)
1430 #define wgetparent(win)     (NCURSES_OK_ADDR(win) ? (win)->_parent : 0)
1431 #define wgetscrreg(win,t,b) (NCURSES_OK_ADDR(win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
1432 #endif
1433 #endif
1434 
1435 /*
1436  * X/Open says this returns a bool; SVr4 also checked for out-of-range line.
1437  * The macro provides compatibility:
1438  */
1439 #define is_linetouched(w,l) ((!(w) || ((l) > getmaxy(w)) || ((l) < 0)) ? ERR : (is_linetouched)((w),(l)))
1440 
1441 #endif /* NCURSES_NOMACROS */
1442 
1443 /*
1444  * Public variables.
1445  *
1446  * Notes:
1447  *  a. ESCDELAY was an undocumented feature under AIX curses.
1448  *     It gives the ESC expire time in milliseconds.
1449  *  b. ttytype is needed for backward compatibility
1450  */
1451 #if NCURSES_REENTRANT
1452 
1453 NCURSES_WRAPPED_VAR(WINDOW *, curscr);
1454 NCURSES_WRAPPED_VAR(WINDOW *, newscr);
1455 NCURSES_WRAPPED_VAR(WINDOW *, stdscr);
1456 NCURSES_WRAPPED_VAR(char *, ttytype);
1457 NCURSES_WRAPPED_VAR(int, COLORS);
1458 NCURSES_WRAPPED_VAR(int, COLOR_PAIRS);
1459 NCURSES_WRAPPED_VAR(int, COLS);
1460 NCURSES_WRAPPED_VAR(int, ESCDELAY);
1461 NCURSES_WRAPPED_VAR(int, LINES);
1462 NCURSES_WRAPPED_VAR(int, TABSIZE);
1463 
1464 #define curscr      NCURSES_PUBLIC_VAR(curscr())
1465 #define newscr      NCURSES_PUBLIC_VAR(newscr())
1466 #define stdscr      NCURSES_PUBLIC_VAR(stdscr())
1467 #define ttytype     NCURSES_PUBLIC_VAR(ttytype())
1468 #define COLORS      NCURSES_PUBLIC_VAR(COLORS())
1469 #define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS())
1470 #define COLS        NCURSES_PUBLIC_VAR(COLS())
1471 #define ESCDELAY    NCURSES_PUBLIC_VAR(ESCDELAY())
1472 #define LINES       NCURSES_PUBLIC_VAR(LINES())
1473 #define TABSIZE     NCURSES_PUBLIC_VAR(TABSIZE())
1474 
1475 #else
1476 
1477 extern NCURSES_EXPORT_VAR(WINDOW *) curscr;
1478 extern NCURSES_EXPORT_VAR(WINDOW *) newscr;
1479 extern NCURSES_EXPORT_VAR(WINDOW *) stdscr;
1480 extern NCURSES_EXPORT_VAR(char) ttytype[];
1481 extern NCURSES_EXPORT_VAR(int) COLORS;
1482 extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;
1483 extern NCURSES_EXPORT_VAR(int) COLS;
1484 extern NCURSES_EXPORT_VAR(int) ESCDELAY;
1485 extern NCURSES_EXPORT_VAR(int) LINES;
1486 extern NCURSES_EXPORT_VAR(int) TABSIZE;
1487 
1488 #endif
1489 
1490 /*
1491  * Pseudo-character tokens outside ASCII range.  The curses wgetch() function
1492  * will return any given one of these only if the corresponding k- capability
1493  * is defined in your terminal's terminfo entry.
1494  *
1495  * Some keys (KEY_A1, etc) are arranged like this:
1496  *  a1     up    a3
1497  *  left   b2    right
1498  *  c1     down  c3
1499  *
1500  * A few key codes do not depend upon the terminfo entry.
1501  */
1502 #define KEY_CODE_YES    0400        /* A wchar_t contains a key code */
1503 #define KEY_MIN     0401        /* Minimum curses key */
1504 #define KEY_BREAK   0401        /* Break key (unreliable) */
1505 #define KEY_SRESET  0530        /* Soft (partial) reset (unreliable) */
1506 #define KEY_RESET   0531        /* Reset or hard reset (unreliable) */
1507 /*
1508  * These definitions were generated by ./MKkey_defs.sh .././../include/Caps .././../include/Caps-ncurses
1509  */
1510 #define KEY_DOWN    0402        /* down-arrow key */
1511 #define KEY_UP      0403        /* up-arrow key */
1512 #define KEY_LEFT    0404        /* left-arrow key */
1513 #define KEY_RIGHT   0405        /* right-arrow key */
1514 #define KEY_HOME    0406        /* home key */
1515 #define KEY_BACKSPACE   0407        /* backspace key */
1516 #define KEY_F0      0410        /* Function keys.  Space for 64 */
1517 #define KEY_F(n)    (KEY_F0+(n))    /* Value of function key n */
1518 #define KEY_DL      0510        /* delete-line key */
1519 #define KEY_IL      0511        /* insert-line key */
1520 #define KEY_DC      0512        /* delete-character key */
1521 #define KEY_IC      0513        /* insert-character key */
1522 #define KEY_EIC     0514        /* sent by rmir or smir in insert mode */
1523 #define KEY_CLEAR   0515        /* clear-screen or erase key */
1524 #define KEY_EOS     0516        /* clear-to-end-of-screen key */
1525 #define KEY_EOL     0517        /* clear-to-end-of-line key */
1526 #define KEY_SF      0520        /* scroll-forward key */
1527 #define KEY_SR      0521        /* scroll-backward key */
1528 #define KEY_NPAGE   0522        /* next-page key */
1529 #define KEY_PPAGE   0523        /* previous-page key */
1530 #define KEY_STAB    0524        /* set-tab key */
1531 #define KEY_CTAB    0525        /* clear-tab key */
1532 #define KEY_CATAB   0526        /* clear-all-tabs key */
1533 #define KEY_ENTER   0527        /* enter/send key */
1534 #define KEY_PRINT   0532        /* print key */
1535 #define KEY_LL      0533        /* lower-left key (home down) */
1536 #define KEY_A1      0534        /* upper left of keypad */
1537 #define KEY_A3      0535        /* upper right of keypad */
1538 #define KEY_B2      0536        /* center of keypad */
1539 #define KEY_C1      0537        /* lower left of keypad */
1540 #define KEY_C3      0540        /* lower right of keypad */
1541 #define KEY_BTAB    0541        /* back-tab key */
1542 #define KEY_BEG     0542        /* begin key */
1543 #define KEY_CANCEL  0543        /* cancel key */
1544 #define KEY_CLOSE   0544        /* close key */
1545 #define KEY_COMMAND 0545        /* command key */
1546 #define KEY_COPY    0546        /* copy key */
1547 #define KEY_CREATE  0547        /* create key */
1548 #define KEY_END     0550        /* end key */
1549 #define KEY_EXIT    0551        /* exit key */
1550 #define KEY_FIND    0552        /* find key */
1551 #define KEY_HELP    0553        /* help key */
1552 #define KEY_MARK    0554        /* mark key */
1553 #define KEY_MESSAGE 0555        /* message key */
1554 #define KEY_MOVE    0556        /* move key */
1555 #define KEY_NEXT    0557        /* next key */
1556 #define KEY_OPEN    0560        /* open key */
1557 #define KEY_OPTIONS 0561        /* options key */
1558 #define KEY_PREVIOUS    0562        /* previous key */
1559 #define KEY_REDO    0563        /* redo key */
1560 #define KEY_REFERENCE   0564        /* reference key */
1561 #define KEY_REFRESH 0565        /* refresh key */
1562 #define KEY_REPLACE 0566        /* replace key */
1563 #define KEY_RESTART 0567        /* restart key */
1564 #define KEY_RESUME  0570        /* resume key */
1565 #define KEY_SAVE    0571        /* save key */
1566 #define KEY_SBEG    0572        /* shifted begin key */
1567 #define KEY_SCANCEL 0573        /* shifted cancel key */
1568 #define KEY_SCOMMAND    0574        /* shifted command key */
1569 #define KEY_SCOPY   0575        /* shifted copy key */
1570 #define KEY_SCREATE 0576        /* shifted create key */
1571 #define KEY_SDC     0577        /* shifted delete-character key */
1572 #define KEY_SDL     0600        /* shifted delete-line key */
1573 #define KEY_SELECT  0601        /* select key */
1574 #define KEY_SEND    0602        /* shifted end key */
1575 #define KEY_SEOL    0603        /* shifted clear-to-end-of-line key */
1576 #define KEY_SEXIT   0604        /* shifted exit key */
1577 #define KEY_SFIND   0605        /* shifted find key */
1578 #define KEY_SHELP   0606        /* shifted help key */
1579 #define KEY_SHOME   0607        /* shifted home key */
1580 #define KEY_SIC     0610        /* shifted insert-character key */
1581 #define KEY_SLEFT   0611        /* shifted left-arrow key */
1582 #define KEY_SMESSAGE    0612        /* shifted message key */
1583 #define KEY_SMOVE   0613        /* shifted move key */
1584 #define KEY_SNEXT   0614        /* shifted next key */
1585 #define KEY_SOPTIONS    0615        /* shifted options key */
1586 #define KEY_SPREVIOUS   0616        /* shifted previous key */
1587 #define KEY_SPRINT  0617        /* shifted print key */
1588 #define KEY_SREDO   0620        /* shifted redo key */
1589 #define KEY_SREPLACE    0621        /* shifted replace key */
1590 #define KEY_SRIGHT  0622        /* shifted right-arrow key */
1591 #define KEY_SRSUME  0623        /* shifted resume key */
1592 #define KEY_SSAVE   0624        /* shifted save key */
1593 #define KEY_SSUSPEND    0625        /* shifted suspend key */
1594 #define KEY_SUNDO   0626        /* shifted undo key */
1595 #define KEY_SUSPEND 0627        /* suspend key */
1596 #define KEY_UNDO    0630        /* undo key */
1597 #define KEY_MOUSE   0631        /* Mouse event has occurred */
1598 
1599 #ifdef NCURSES_EXT_FUNCS
1600 #define KEY_RESIZE  0632        /* Terminal resize event */
1601 #endif
1602 
1603 #define KEY_MAX     0777        /* Maximum key value is 0632 */
1604 /* $Id: curses.wide,v 1.51 2021/05/22 20:28:29 tom Exp $ */
1605 /*
1606  * vile:cmode:
1607  * This file is part of ncurses, designed to be appended after curses.h.in
1608  * (see that file for the relevant copyright).
1609  */
1610 #define _XOPEN_CURSES 1
1611 
1612 #if NCURSES_WIDECHAR
1613 
1614 extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
1615 
1616 #define NCURSES_WACS(c) (&_nc_wacs[NCURSES_CAST(unsigned char,(c))])
1617 
1618 #define WACS_BSSB   NCURSES_WACS('l')
1619 #define WACS_SSBB   NCURSES_WACS('m')
1620 #define WACS_BBSS   NCURSES_WACS('k')
1621 #define WACS_SBBS   NCURSES_WACS('j')
1622 #define WACS_SBSS   NCURSES_WACS('u')
1623 #define WACS_SSSB   NCURSES_WACS('t')
1624 #define WACS_SSBS   NCURSES_WACS('v')
1625 #define WACS_BSSS   NCURSES_WACS('w')
1626 #define WACS_BSBS   NCURSES_WACS('q')
1627 #define WACS_SBSB   NCURSES_WACS('x')
1628 #define WACS_SSSS   NCURSES_WACS('n')
1629 
1630 #define WACS_ULCORNER   WACS_BSSB
1631 #define WACS_LLCORNER   WACS_SSBB
1632 #define WACS_URCORNER   WACS_BBSS
1633 #define WACS_LRCORNER   WACS_SBBS
1634 #define WACS_RTEE   WACS_SBSS
1635 #define WACS_LTEE   WACS_SSSB
1636 #define WACS_BTEE   WACS_SSBS
1637 #define WACS_TTEE   WACS_BSSS
1638 #define WACS_HLINE  WACS_BSBS
1639 #define WACS_VLINE  WACS_SBSB
1640 #define WACS_PLUS   WACS_SSSS
1641 
1642 #define WACS_S1     NCURSES_WACS('o') /* scan line 1 */
1643 #define WACS_S9     NCURSES_WACS('s') /* scan line 9 */
1644 #define WACS_DIAMOND    NCURSES_WACS('`') /* diamond */
1645 #define WACS_CKBOARD    NCURSES_WACS('a') /* checker board */
1646 #define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */
1647 #define WACS_PLMINUS    NCURSES_WACS('g') /* plus/minus */
1648 #define WACS_BULLET NCURSES_WACS('~') /* bullet */
1649 
1650     /* Teletype 5410v1 symbols */
1651 #define WACS_LARROW NCURSES_WACS(',') /* arrow left */
1652 #define WACS_RARROW NCURSES_WACS('+') /* arrow right */
1653 #define WACS_DARROW NCURSES_WACS('.') /* arrow down */
1654 #define WACS_UARROW NCURSES_WACS('-') /* arrow up */
1655 #define WACS_BOARD  NCURSES_WACS('h') /* board of squares */
1656 #define WACS_LANTERN    NCURSES_WACS('i') /* lantern symbol */
1657 #define WACS_BLOCK  NCURSES_WACS('0') /* solid square block */
1658 
1659     /* ncurses extensions */
1660 #define WACS_S3     NCURSES_WACS('p') /* scan line 3 */
1661 #define WACS_S7     NCURSES_WACS('r') /* scan line 7 */
1662 #define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */
1663 #define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */
1664 #define WACS_PI     NCURSES_WACS('{') /* Pi */
1665 #define WACS_NEQUAL NCURSES_WACS('|') /* not equal */
1666 #define WACS_STERLING   NCURSES_WACS('}') /* UK pound sign */
1667 
1668     /* double lines */
1669 #define WACS_BDDB   NCURSES_WACS('C')
1670 #define WACS_DDBB   NCURSES_WACS('D')
1671 #define WACS_BBDD   NCURSES_WACS('B')
1672 #define WACS_DBBD   NCURSES_WACS('A')
1673 #define WACS_DBDD   NCURSES_WACS('G')
1674 #define WACS_DDDB   NCURSES_WACS('F')
1675 #define WACS_DDBD   NCURSES_WACS('H')
1676 #define WACS_BDDD   NCURSES_WACS('I')
1677 #define WACS_BDBD   NCURSES_WACS('R')
1678 #define WACS_DBDB   NCURSES_WACS('Y')
1679 #define WACS_DDDD   NCURSES_WACS('E')
1680 
1681 #define WACS_D_ULCORNER WACS_BDDB
1682 #define WACS_D_LLCORNER WACS_DDBB
1683 #define WACS_D_URCORNER WACS_BBDD
1684 #define WACS_D_LRCORNER WACS_DBBD
1685 #define WACS_D_RTEE WACS_DBDD
1686 #define WACS_D_LTEE WACS_DDDB
1687 #define WACS_D_BTEE WACS_DDBD
1688 #define WACS_D_TTEE WACS_BDDD
1689 #define WACS_D_HLINE    WACS_BDBD
1690 #define WACS_D_VLINE    WACS_DBDB
1691 #define WACS_D_PLUS WACS_DDDD
1692 
1693     /* thick lines */
1694 #define WACS_BTTB   NCURSES_WACS('L')
1695 #define WACS_TTBB   NCURSES_WACS('M')
1696 #define WACS_BBTT   NCURSES_WACS('K')
1697 #define WACS_TBBT   NCURSES_WACS('J')
1698 #define WACS_TBTT   NCURSES_WACS('U')
1699 #define WACS_TTTB   NCURSES_WACS('T')
1700 #define WACS_TTBT   NCURSES_WACS('V')
1701 #define WACS_BTTT   NCURSES_WACS('W')
1702 #define WACS_BTBT   NCURSES_WACS('Q')
1703 #define WACS_TBTB   NCURSES_WACS('X')
1704 #define WACS_TTTT   NCURSES_WACS('N')
1705 
1706 #define WACS_T_ULCORNER WACS_BTTB
1707 #define WACS_T_LLCORNER WACS_TTBB
1708 #define WACS_T_URCORNER WACS_BBTT
1709 #define WACS_T_LRCORNER WACS_TBBT
1710 #define WACS_T_RTEE WACS_TBTT
1711 #define WACS_T_LTEE WACS_TTTB
1712 #define WACS_T_BTEE WACS_TTBT
1713 #define WACS_T_TTEE WACS_BTTT
1714 #define WACS_T_HLINE    WACS_BTBT
1715 #define WACS_T_VLINE    WACS_TBTB
1716 #define WACS_T_PLUS WACS_TTTT
1717 
1718 /*
1719  * Function prototypes for wide-character operations.
1720  *
1721  * "generated" comments should include ":WIDEC" to make the corresponding
1722  * functions ifdef'd in lib_gen.c
1723  *
1724  * "implemented" comments do not need this marker.
1725  */
1726 
1727 extern NCURSES_EXPORT(int) add_wch (const cchar_t *);           /* generated:WIDEC */
1728 extern NCURSES_EXPORT(int) add_wchnstr (const cchar_t *, int);      /* generated:WIDEC */
1729 extern NCURSES_EXPORT(int) add_wchstr (const cchar_t *);        /* generated:WIDEC */
1730 extern NCURSES_EXPORT(int) addnwstr (const wchar_t *, int);     /* generated:WIDEC */
1731 extern NCURSES_EXPORT(int) addwstr (const wchar_t *);           /* generated:WIDEC */
1732 extern NCURSES_EXPORT(int) bkgrnd (const cchar_t *);            /* generated:WIDEC */
1733 extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *);        /* generated:WIDEC */
1734 extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */
1735 extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *);    /* generated:WIDEC */
1736 extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *);        /* generated:WIDEC */
1737 extern NCURSES_EXPORT(int) erasewchar (wchar_t*);           /* implemented */
1738 extern NCURSES_EXPORT(int) get_wch (wint_t *);              /* generated:WIDEC */
1739 extern NCURSES_EXPORT(int) get_wstr (wint_t *);             /* generated:WIDEC */
1740 extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *);           /* generated:WIDEC */
1741 extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, NCURSES_PAIRS_T*, void*);  /* implemented */
1742 extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int);           /* generated:WIDEC */
1743 extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int);        /* generated:WIDEC */
1744 extern NCURSES_EXPORT(int) in_wch (cchar_t *);              /* generated:WIDEC */
1745 extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int);         /* generated:WIDEC */
1746 extern NCURSES_EXPORT(int) in_wchstr (cchar_t *);           /* generated:WIDEC */
1747 extern NCURSES_EXPORT(int) innwstr (wchar_t *, int);            /* generated:WIDEC */
1748 extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int);        /* generated:WIDEC */
1749 extern NCURSES_EXPORT(int) ins_wch (const cchar_t *);           /* generated:WIDEC */
1750 extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *);          /* generated:WIDEC */
1751 extern NCURSES_EXPORT(int) inwstr (wchar_t *);              /* generated:WIDEC */
1752 extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t);      /* implemented */
1753 extern NCURSES_EXPORT(int) killwchar (wchar_t *);           /* implemented */
1754 extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *);   /* generated:WIDEC */
1755 extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */
1756 extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *);    /* generated:WIDEC */
1757 extern NCURSES_EXPORT(int) mvaddnwstr (int, int, const wchar_t *, int); /* generated:WIDEC */
1758 extern NCURSES_EXPORT(int) mvaddwstr (int, int, const wchar_t *);   /* generated:WIDEC */
1759 extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *);      /* generated:WIDEC */
1760 extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *);     /* generated:WIDEC */
1761 extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int);   /* generated:WIDEC */
1762 extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int);    /* generated:WIDEC */
1763 extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *);      /* generated:WIDEC */
1764 extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */
1765 extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *);       /* generated:WIDEC */
1766 extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int);    /* generated:WIDEC */
1767 extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int);    /* generated:WIDEC */
1768 extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *);   /* generated:WIDEC */
1769 extern NCURSES_EXPORT(int) mvins_wstr (int, int, const wchar_t *);  /* generated:WIDEC */
1770 extern NCURSES_EXPORT(int) mvinwstr (int, int, wchar_t *);      /* generated:WIDEC */
1771 extern NCURSES_EXPORT(int) mvvline_set (int, int, const cchar_t *, int);    /* generated:WIDEC */
1772 extern NCURSES_EXPORT(int) mvwadd_wch (WINDOW *, int, int, const cchar_t *);    /* generated:WIDEC */
1773 extern NCURSES_EXPORT(int) mvwadd_wchnstr (WINDOW *, int, int, const cchar_t *, int); /* generated:WIDEC */
1774 extern NCURSES_EXPORT(int) mvwadd_wchstr (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */
1775 extern NCURSES_EXPORT(int) mvwaddnwstr (WINDOW *, int, int, const wchar_t *, int);/* generated:WIDEC */
1776 extern NCURSES_EXPORT(int) mvwaddwstr (WINDOW *, int, int, const wchar_t *);    /* generated:WIDEC */
1777 extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *);   /* generated:WIDEC */
1778 extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *);  /* generated:WIDEC */
1779 extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */
1780 extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */
1781 extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *);   /* generated:WIDEC */
1782 extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int);    /* generated:WIDEC */
1783 extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *);    /* generated:WIDEC */
1784 extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */
1785 extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */
1786 extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *);    /* generated:WIDEC */
1787 extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *);   /* generated:WIDEC */
1788 extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *);       /* generated:WIDEC */
1789 extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */
1790 extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */
1791 extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, NCURSES_PAIRS_T, const void *);  /* implemented */
1792 extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int);    /* implemented */
1793 extern NCURSES_EXPORT(attr_t) term_attrs (void);            /* implemented */
1794 extern NCURSES_EXPORT(int) unget_wch (const wchar_t);           /* implemented */
1795 extern NCURSES_EXPORT(int) vid_attr (attr_t, NCURSES_PAIRS_T, void *);      /* implemented */
1796 extern NCURSES_EXPORT(int) vid_puts (attr_t, NCURSES_PAIRS_T, void *, NCURSES_OUTC); /* implemented */
1797 extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int);        /* generated:WIDEC */
1798 extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *);     /* implemented */
1799 extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */
1800 extern NCURSES_EXPORT(int) wadd_wchstr (WINDOW *,const cchar_t *);  /* generated:WIDEC */
1801 extern NCURSES_EXPORT(int) waddnwstr (WINDOW *,const wchar_t *,int);    /* implemented */
1802 extern NCURSES_EXPORT(int) waddwstr (WINDOW *,const wchar_t *);     /* generated:WIDEC */
1803 extern NCURSES_EXPORT(int) wbkgrnd (WINDOW *,const cchar_t *);      /* implemented */
1804 extern NCURSES_EXPORT(void) wbkgrndset (WINDOW *,const cchar_t *);  /* implemented */
1805 extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*);  /* implemented */
1806 extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */
1807 extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *);       /* implemented */
1808 extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *);      /* generated:WIDEC */
1809 extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *);        /* generated:WIDEC */
1810 extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *, wint_t *, int);    /* implemented */
1811 extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */
1812 extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *);       /* implemented */
1813 extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int);  /* implemented */
1814 extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *);        /* generated:WIDEC */
1815 extern NCURSES_EXPORT(int) winnwstr (WINDOW *, wchar_t *, int);     /* implemented */
1816 extern NCURSES_EXPORT(int) wins_nwstr (WINDOW *, const wchar_t *, int); /* implemented */
1817 extern NCURSES_EXPORT(int) wins_wch (WINDOW *, const cchar_t *);    /* implemented */
1818 extern NCURSES_EXPORT(int) wins_wstr (WINDOW *, const wchar_t *);   /* generated:WIDEC */
1819 extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *);       /* implemented */
1820 extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *);            /* implemented */
1821 extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */
1822 
1823 #if NCURSES_SP_FUNCS
1824 extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(term_attrs) (SCREEN*);        /* implemented:SP_FUNC */
1825 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(erasewchar) (SCREEN*, wchar_t *);    /* implemented:SP_FUNC */
1826 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(killwchar) (SCREEN*, wchar_t *); /* implemented:SP_FUNC */
1827 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(unget_wch) (SCREEN*, const wchar_t); /* implemented:SP_FUNC */
1828 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_attr) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *);    /* implemented:SP_FUNC */
1829 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *, NCURSES_SP_OUTC);   /* implemented:SP_FUNC */
1830 extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *);  /* implemented:SP_FUNC */
1831 #endif
1832 
1833 #ifndef NCURSES_NOMACROS
1834 
1835 /*
1836  * XSI curses macros for XPG4 conformance.
1837  */
1838 #define add_wch(c)          wadd_wch(stdscr,(c))
1839 #define add_wchnstr(str,n)      wadd_wchnstr(stdscr,(str),(n))
1840 #define add_wchstr(str)         wadd_wchstr(stdscr,(str))
1841 #define addnwstr(wstr,n)        waddnwstr(stdscr,(wstr),(n))
1842 #define addwstr(wstr)           waddwstr(stdscr,(wstr))
1843 #define bkgrnd(c)           wbkgrnd(stdscr,(c))
1844 #define bkgrndset(c)            wbkgrndset(stdscr,(c))
1845 #define border_set(l,r,t,b,tl,tr,bl,br) wborder_set(stdscr,(l),(r),(t),(b),tl,tr,bl,br)
1846 #define box_set(w,v,h)          wborder_set((w),(v),(v),(h),(h),0,0,0,0)
1847 #define echo_wchar(c)           wecho_wchar(stdscr,(c))
1848 #define get_wch(c)          wget_wch(stdscr,(c))
1849 #define get_wstr(t)         wget_wstr(stdscr,(t))
1850 #define getbkgrnd(wch)          wgetbkgrnd(stdscr,(wch))
1851 #define getn_wstr(t,n)          wgetn_wstr(stdscr,(t),(n))
1852 #define hline_set(c,n)          whline_set(stdscr,(c),(n))
1853 #define in_wch(c)           win_wch(stdscr,(c))
1854 #define in_wchnstr(c,n)         win_wchnstr(stdscr,(c),(n))
1855 #define in_wchstr(c)            win_wchstr(stdscr,(c))
1856 #define innwstr(c,n)            winnwstr(stdscr,(c),(n))
1857 #define ins_nwstr(t,n)          wins_nwstr(stdscr,(t),(n))
1858 #define ins_wch(c)          wins_wch(stdscr,(c))
1859 #define ins_wstr(t)         wins_wstr(stdscr,(t))
1860 #define inwstr(c)           winwstr(stdscr,(c))
1861 #define vline_set(c,n)          wvline_set(stdscr,(c),(n))
1862 #define wadd_wchstr(win,str)        wadd_wchnstr((win),(str),-1)
1863 #define waddwstr(win,wstr)      waddnwstr((win),(wstr),-1)
1864 #define wget_wstr(w,t)          wgetn_wstr((w),(t),-1)
1865 #define win_wchstr(w,c)         win_wchnstr((w),(c),-1)
1866 #define wins_wstr(w,t)          wins_nwstr((w),(t),-1)
1867 
1868 #if !NCURSES_OPAQUE
1869 #define wgetbkgrnd(win,wch)     (NCURSES_OK_ADDR(wch) ? ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK) : ERR)
1870 #endif
1871 
1872 #define mvadd_wch(y,x,c)        mvwadd_wch(stdscr,(y),(x),(c))
1873 #define mvadd_wchnstr(y,x,s,n)      mvwadd_wchnstr(stdscr,(y),(x),(s),(n))
1874 #define mvadd_wchstr(y,x,s)     mvwadd_wchstr(stdscr,(y),(x),(s))
1875 #define mvaddnwstr(y,x,wstr,n)      mvwaddnwstr(stdscr,(y),(x),(wstr),(n))
1876 #define mvaddwstr(y,x,wstr)     mvwaddwstr(stdscr,(y),(x),(wstr))
1877 #define mvget_wch(y,x,c)        mvwget_wch(stdscr,(y),(x),(c))
1878 #define mvget_wstr(y,x,t)       mvwget_wstr(stdscr,(y),(x),(t))
1879 #define mvgetn_wstr(y,x,t,n)        mvwgetn_wstr(stdscr,(y),(x),(t),(n))
1880 #define mvhline_set(y,x,c,n)        mvwhline_set(stdscr,(y),(x),(c),(n))
1881 #define mvin_wch(y,x,c)         mvwin_wch(stdscr,(y),(x),(c))
1882 #define mvin_wchnstr(y,x,c,n)       mvwin_wchnstr(stdscr,(y),(x),(c),(n))
1883 #define mvin_wchstr(y,x,c)      mvwin_wchstr(stdscr,(y),(x),(c))
1884 #define mvinnwstr(y,x,c,n)      mvwinnwstr(stdscr,(y),(x),(c),(n))
1885 #define mvins_nwstr(y,x,t,n)        mvwins_nwstr(stdscr,(y),(x),(t),(n))
1886 #define mvins_wch(y,x,c)        mvwins_wch(stdscr,(y),(x),(c))
1887 #define mvins_wstr(y,x,t)       mvwins_wstr(stdscr,(y),(x),(t))
1888 #define mvinwstr(y,x,c)         mvwinwstr(stdscr,(y),(x),(c))
1889 #define mvvline_set(y,x,c,n)        mvwvline_set(stdscr,(y),(x),(c),(n))
1890 
1891 #define mvwadd_wch(win,y,x,c)       (wmove(win,(y),(x)) == ERR ? ERR : wadd_wch((win),(c)))
1892 #define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchnstr((win),(s),(n)))
1893 #define mvwadd_wchstr(win,y,x,s)    (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchstr((win),(s)))
1894 #define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,(y),(x)) == ERR ? ERR : waddnwstr((win),(wstr),(n)))
1895 #define mvwaddwstr(win,y,x,wstr)    (wmove(win,(y),(x)) == ERR ? ERR : waddwstr((win),(wstr)))
1896 #define mvwget_wch(win,y,x,c)       (wmove(win,(y),(x)) == ERR ? ERR : wget_wch((win),(c)))
1897 #define mvwget_wstr(win,y,x,t)      (wmove(win,(y),(x)) == ERR ? ERR : wget_wstr((win),(t)))
1898 #define mvwgetn_wstr(win,y,x,t,n)   (wmove(win,(y),(x)) == ERR ? ERR : wgetn_wstr((win),(t),(n)))
1899 #define mvwhline_set(win,y,x,c,n)   (wmove(win,(y),(x)) == ERR ? ERR : whline_set((win),(c),(n)))
1900 #define mvwin_wch(win,y,x,c)        (wmove(win,(y),(x)) == ERR ? ERR : win_wch((win),(c)))
1901 #define mvwin_wchnstr(win,y,x,c,n)  (wmove(win,(y),(x)) == ERR ? ERR : win_wchnstr((win),(c),(n)))
1902 #define mvwin_wchstr(win,y,x,c)     (wmove(win,(y),(x)) == ERR ? ERR : win_wchstr((win),(c)))
1903 #define mvwinnwstr(win,y,x,c,n)     (wmove(win,(y),(x)) == ERR ? ERR : winnwstr((win),(c),(n)))
1904 #define mvwins_nwstr(win,y,x,t,n)   (wmove(win,(y),(x)) == ERR ? ERR : wins_nwstr((win),(t),(n)))
1905 #define mvwins_wch(win,y,x,c)       (wmove(win,(y),(x)) == ERR ? ERR : wins_wch((win),(c)))
1906 #define mvwins_wstr(win,y,x,t)      (wmove(win,(y),(x)) == ERR ? ERR : wins_wstr((win),(t)))
1907 #define mvwinwstr(win,y,x,c)        (wmove(win,(y),(x)) == ERR ? ERR : winwstr((win),(c)))
1908 #define mvwvline_set(win,y,x,c,n)   (wmove(win,(y),(x)) == ERR ? ERR : wvline_set((win),(c),(n)))
1909 
1910 #endif /* NCURSES_NOMACROS */
1911 
1912 #if defined(TRACE) || defined(NCURSES_TEST)
1913 extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
1914 extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *);
1915 #endif
1916 
1917 #endif /* NCURSES_WIDECHAR */
1918 /* $Id: curses.tail,v 1.26 2021/03/20 15:49:25 tom Exp $ */
1919 /*
1920  * vile:cmode:
1921  * This file is part of ncurses, designed to be appended after curses.h.in
1922  * (see that file for the relevant copyright).
1923  */
1924 
1925 /* mouse interface */
1926 
1927 #if NCURSES_MOUSE_VERSION > 1
1928 #define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5))
1929 #else
1930 #define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6))
1931 #endif
1932 
1933 #define NCURSES_BUTTON_RELEASED 001L
1934 #define NCURSES_BUTTON_PRESSED  002L
1935 #define NCURSES_BUTTON_CLICKED  004L
1936 #define NCURSES_DOUBLE_CLICKED  010L
1937 #define NCURSES_TRIPLE_CLICKED  020L
1938 #define NCURSES_RESERVED_EVENT  040L
1939 
1940 /* event masks */
1941 #define BUTTON1_RELEASED    NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
1942 #define BUTTON1_PRESSED     NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)
1943 #define BUTTON1_CLICKED     NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED)
1944 #define BUTTON1_DOUBLE_CLICKED  NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)
1945 #define BUTTON1_TRIPLE_CLICKED  NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)
1946 
1947 #define BUTTON2_RELEASED    NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED)
1948 #define BUTTON2_PRESSED     NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED)
1949 #define BUTTON2_CLICKED     NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED)
1950 #define BUTTON2_DOUBLE_CLICKED  NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED)
1951 #define BUTTON2_TRIPLE_CLICKED  NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED)
1952 
1953 #define BUTTON3_RELEASED    NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED)
1954 #define BUTTON3_PRESSED     NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED)
1955 #define BUTTON3_CLICKED     NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED)
1956 #define BUTTON3_DOUBLE_CLICKED  NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED)
1957 #define BUTTON3_TRIPLE_CLICKED  NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED)
1958 
1959 #define BUTTON4_RELEASED    NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED)
1960 #define BUTTON4_PRESSED     NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED)
1961 #define BUTTON4_CLICKED     NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED)
1962 #define BUTTON4_DOUBLE_CLICKED  NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED)
1963 #define BUTTON4_TRIPLE_CLICKED  NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED)
1964 
1965 /*
1966  * In 32 bits the version-1 scheme does not provide enough space for a 5th
1967  * button, unless we choose to change the ABI by omitting the reserved-events.
1968  */
1969 #if NCURSES_MOUSE_VERSION > 1
1970 
1971 #define BUTTON5_RELEASED    NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
1972 #define BUTTON5_PRESSED     NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
1973 #define BUTTON5_CLICKED     NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
1974 #define BUTTON5_DOUBLE_CLICKED  NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
1975 #define BUTTON5_TRIPLE_CLICKED  NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
1976 
1977 #define BUTTON_CTRL     NCURSES_MOUSE_MASK(6, 0001L)
1978 #define BUTTON_SHIFT        NCURSES_MOUSE_MASK(6, 0002L)
1979 #define BUTTON_ALT      NCURSES_MOUSE_MASK(6, 0004L)
1980 #define REPORT_MOUSE_POSITION   NCURSES_MOUSE_MASK(6, 0010L)
1981 
1982 #else
1983 
1984 #define BUTTON1_RESERVED_EVENT  NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT)
1985 #define BUTTON2_RESERVED_EVENT  NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT)
1986 #define BUTTON3_RESERVED_EVENT  NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT)
1987 #define BUTTON4_RESERVED_EVENT  NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT)
1988 
1989 #define BUTTON_CTRL     NCURSES_MOUSE_MASK(5, 0001L)
1990 #define BUTTON_SHIFT        NCURSES_MOUSE_MASK(5, 0002L)
1991 #define BUTTON_ALT      NCURSES_MOUSE_MASK(5, 0004L)
1992 #define REPORT_MOUSE_POSITION   NCURSES_MOUSE_MASK(5, 0010L)
1993 
1994 #endif
1995 
1996 #define ALL_MOUSE_EVENTS    (REPORT_MOUSE_POSITION - 1)
1997 
1998 /* macros to extract single event-bits from masks */
1999 #define BUTTON_RELEASE(e, x)        ((e) & NCURSES_MOUSE_MASK(x, 001))
2000 #define BUTTON_PRESS(e, x)      ((e) & NCURSES_MOUSE_MASK(x, 002))
2001 #define BUTTON_CLICK(e, x)      ((e) & NCURSES_MOUSE_MASK(x, 004))
2002 #define BUTTON_DOUBLE_CLICK(e, x)   ((e) & NCURSES_MOUSE_MASK(x, 010))
2003 #define BUTTON_TRIPLE_CLICK(e, x)   ((e) & NCURSES_MOUSE_MASK(x, 020))
2004 #define BUTTON_RESERVED_EVENT(e, x) ((e) & NCURSES_MOUSE_MASK(x, 040))
2005 
2006 typedef struct
2007 {
2008     short id;       /* ID to distinguish multiple devices */
2009     int x, y, z;    /* event coordinates (character-cell) */
2010     mmask_t bstate; /* button state bits */
2011 }
2012 MEVENT;
2013 
2014 extern NCURSES_EXPORT(bool)    has_mouse(void);
2015 extern NCURSES_EXPORT(int)     getmouse (MEVENT *);
2016 extern NCURSES_EXPORT(int)     ungetmouse (MEVENT *);
2017 extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *);
2018 extern NCURSES_EXPORT(bool)    wenclose (const WINDOW *, int, int);
2019 extern NCURSES_EXPORT(int)     mouseinterval (int);
2020 extern NCURSES_EXPORT(bool)    wmouse_trafo (const WINDOW*, int*, int*, bool);
2021 extern NCURSES_EXPORT(bool)    mouse_trafo (int*, int*, bool);              /* generated */
2022 
2023 #if NCURSES_SP_FUNCS
2024 extern NCURSES_EXPORT(bool)    NCURSES_SP_NAME(has_mouse) (SCREEN*);
2025 extern NCURSES_EXPORT(int)     NCURSES_SP_NAME(getmouse) (SCREEN*, MEVENT *);
2026 extern NCURSES_EXPORT(int)     NCURSES_SP_NAME(ungetmouse) (SCREEN*,MEVENT *);
2027 extern NCURSES_EXPORT(mmask_t) NCURSES_SP_NAME(mousemask) (SCREEN*, mmask_t, mmask_t *);
2028 extern NCURSES_EXPORT(int)     NCURSES_SP_NAME(mouseinterval) (SCREEN*, int);
2029 #endif
2030 
2031 #ifndef NCURSES_NOMACROS
2032 #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
2033 #endif
2034 
2035 /* other non-XSI functions */
2036 
2037 extern NCURSES_EXPORT(int) mcprint (char *, int);   /* direct data to printer */
2038 extern NCURSES_EXPORT(int) has_key (int);       /* do we have given key? */
2039 
2040 #if NCURSES_SP_FUNCS
2041 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(has_key) (SCREEN*, int);    /* do we have given key? */
2042 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mcprint) (SCREEN*, char *, int); /* direct data to printer */
2043 #endif
2044 
2045 /* Debugging : use with libncurses_g.a */
2046 
2047 extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2);
2048 extern NCURSES_EXPORT(char *) _traceattr (attr_t);
2049 extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype);
2050 extern NCURSES_EXPORT(char *) _tracechar (int);
2051 extern NCURSES_EXPORT(char *) _tracechtype (chtype);
2052 extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype);
2053 #if NCURSES_WIDECHAR
2054 #define _tracech_t      _tracecchar_t
2055 extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *);
2056 #define _tracech_t2     _tracecchar_t2
2057 extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *);
2058 #else
2059 #define _tracech_t      _tracechtype
2060 #define _tracech_t2     _tracechtype2
2061 #endif
2062 extern NCURSES_EXPORT(void) trace (const unsigned) GCC_DEPRECATED("use curses_trace");
2063 extern NCURSES_EXPORT(unsigned) curses_trace (const unsigned);
2064 
2065 /* trace masks */
2066 #define TRACE_DISABLE   0x0000  /* turn off tracing */
2067 #define TRACE_TIMES 0x0001  /* trace user and system times of updates */
2068 #define TRACE_TPUTS 0x0002  /* trace tputs calls */
2069 #define TRACE_UPDATE    0x0004  /* trace update actions, old & new screens */
2070 #define TRACE_MOVE  0x0008  /* trace cursor moves and scrolls */
2071 #define TRACE_CHARPUT   0x0010  /* trace all character outputs */
2072 #define TRACE_ORDINARY  0x001F  /* trace all update actions */
2073 #define TRACE_CALLS 0x0020  /* trace all curses calls */
2074 #define TRACE_VIRTPUT   0x0040  /* trace virtual character puts */
2075 #define TRACE_IEVENT    0x0080  /* trace low-level input processing */
2076 #define TRACE_BITS  0x0100  /* trace state of TTY control bits */
2077 #define TRACE_ICALLS    0x0200  /* trace internal/nested calls */
2078 #define TRACE_CCALLS    0x0400  /* trace per-character calls */
2079 #define TRACE_DATABASE  0x0800  /* trace read/write of terminfo/termcap data */
2080 #define TRACE_ATTRS 0x1000  /* trace attribute updates */
2081 
2082 #define TRACE_SHIFT 13  /* number of bits in the trace masks */
2083 #define TRACE_MAXIMUM   ((1 << TRACE_SHIFT) - 1) /* maximum trace level */
2084 
2085 #if defined(TRACE) || defined(NCURSES_TEST)
2086 extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable;     /* enable optimizations */
2087 extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
2088 #define OPTIMIZE_MVCUR      0x01    /* cursor movement optimization */
2089 #define OPTIMIZE_HASHMAP    0x02    /* diff hashing to detect scrolls */
2090 #define OPTIMIZE_SCROLL     0x04    /* scroll optimization */
2091 #define OPTIMIZE_ALL        0xff    /* enable all optimizations (dflt) */
2092 #endif
2093 
2094 extern GCC_NORETURN NCURSES_EXPORT(void) exit_curses (int);
2095 
2096 #include <ncursesw/unctrl.h>
2097 
2098 #ifdef __cplusplus
2099 
2100 #ifndef NCURSES_NOMACROS
2101 
2102 /* these names conflict with STL */
2103 #undef box
2104 #undef clear
2105 #undef erase
2106 #undef move
2107 #undef refresh
2108 
2109 #endif /* NCURSES_NOMACROS */
2110 
2111 }
2112 #endif
2113 
2114 #endif /* __NCURSES_H */