xref: /freebsd/contrib/ncurses/include/curses.h.in (revision 21817992b3314c908ab50f0bb88d2ee750b9c4ac)
10e3d5408SPeter Wemm/****************************************************************************
2*21817992SBaptiste Daroussin * Copyright 2018-2023,2024 Thomas E. Dickey                                *
3e1865124SBaptiste Daroussin * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
40e3d5408SPeter Wemm *                                                                          *
50e3d5408SPeter Wemm * Permission is hereby granted, free of charge, to any person obtaining a  *
60e3d5408SPeter Wemm * copy of this software and associated documentation files (the            *
70e3d5408SPeter Wemm * "Software"), to deal in the Software without restriction, including      *
80e3d5408SPeter Wemm * without limitation the rights to use, copy, modify, merge, publish,      *
90e3d5408SPeter Wemm * distribute, distribute with modifications, sublicense, and/or sell       *
100e3d5408SPeter Wemm * copies of the Software, and to permit persons to whom the Software is    *
110e3d5408SPeter Wemm * furnished to do so, subject to the following conditions:                 *
120e3d5408SPeter Wemm *                                                                          *
130e3d5408SPeter Wemm * The above copyright notice and this permission notice shall be included  *
140e3d5408SPeter Wemm * in all copies or substantial portions of the Software.                   *
150e3d5408SPeter Wemm *                                                                          *
160e3d5408SPeter Wemm * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
170e3d5408SPeter Wemm * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
180e3d5408SPeter Wemm * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
190e3d5408SPeter Wemm * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
200e3d5408SPeter Wemm * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
210e3d5408SPeter Wemm * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
220e3d5408SPeter Wemm * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
230e3d5408SPeter Wemm *                                                                          *
240e3d5408SPeter Wemm * Except as contained in this notice, the name(s) of the above copyright   *
250e3d5408SPeter Wemm * holders shall not be used in advertising or otherwise to promote the     *
260e3d5408SPeter Wemm * sale, use or other dealings in this Software without prior written       *
270e3d5408SPeter Wemm * authorization.                                                           *
280e3d5408SPeter Wemm ****************************************************************************/
290e3d5408SPeter Wemm
300e3d5408SPeter Wemm/****************************************************************************
310e3d5408SPeter Wemm *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
320e3d5408SPeter Wemm *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
33b82face1SPeter Wemm *     and: Thomas E. Dickey                        1996-on                 *
340e3d5408SPeter Wemm ****************************************************************************/
350e3d5408SPeter Wemm
36*21817992SBaptiste Daroussin/* $Id: curses.h.in,v 1.282 2024/01/19 11:50:07 tom Exp $ */
370e3d5408SPeter Wemm
380e3d5408SPeter Wemm#ifndef __NCURSES_H
390e3d5408SPeter Wemm#define __NCURSES_H
400e3d5408SPeter Wemm
41*21817992SBaptiste Daroussin/*
42*21817992SBaptiste Daroussin The symbols beginning NCURSES_ or USE_ are configuration choices.
43*21817992SBaptiste Daroussin A few of the former can be overridden by applications at compile-time.
44*21817992SBaptiste Daroussin Most of the others correspond to configure-script options (or checks
45*21817992SBaptiste Daroussin by the configure-script for features of the system on which it is built).
46*21817992SBaptiste Daroussin
47*21817992SBaptiste Daroussin These symbols can be overridden by applications at compile-time:
48*21817992SBaptiste Daroussin NCURSES_NOMACROS suppresses macro definitions in favor of functions
49*21817992SBaptiste Daroussin NCURSES_WATTR_MACROS suppresses wattr_* macro definitions
50*21817992SBaptiste Daroussin NCURSES_WIDECHAR is an alternative for declaring wide-character functions.
51*21817992SBaptiste Daroussin
52*21817992SBaptiste Daroussin These symbols are used only when building ncurses:
53*21817992SBaptiste Daroussin NCURSES_ATTR_T
54*21817992SBaptiste Daroussin NCURSES_FIELD_INTERNALS
55*21817992SBaptiste Daroussin NCURSES_INTERNALS
56*21817992SBaptiste Daroussin
57*21817992SBaptiste Daroussin These symbols are set by the configure script:
58*21817992SBaptiste Daroussin NCURSES_ENABLE_STDBOOL_H
59*21817992SBaptiste Daroussin NCURSES_EXPANDED
60*21817992SBaptiste Daroussin NCURSES_EXT_COLORS
61*21817992SBaptiste Daroussin NCURSES_EXT_FUNCS
62*21817992SBaptiste Daroussin NCURSES_EXT_PUTWIN
63*21817992SBaptiste Daroussin NCURSES_NO_PADDING
64*21817992SBaptiste Daroussin NCURSES_OSPEED_COMPAT
65*21817992SBaptiste Daroussin NCURSES_PATHSEP
66*21817992SBaptiste Daroussin NCURSES_REENTRANT
67*21817992SBaptiste Daroussin NCURSES_SIGWINCH
68*21817992SBaptiste Daroussin */
69*21817992SBaptiste Daroussin
700e3d5408SPeter Wemm#define CURSES 1
710e3d5408SPeter Wemm#define CURSES_H 1
720e3d5408SPeter Wemm
730e3d5408SPeter Wemm/* These are defined only in curses.h, and are used for conditional compiles */
740e3d5408SPeter Wemm#define NCURSES_VERSION_MAJOR @NCURSES_MAJOR@
750e3d5408SPeter Wemm#define NCURSES_VERSION_MINOR @NCURSES_MINOR@
760e3d5408SPeter Wemm#define NCURSES_VERSION_PATCH @NCURSES_PATCH@
770e3d5408SPeter Wemm
780e3d5408SPeter Wemm/* This is defined in more than one ncurses header, for identification */
790e3d5408SPeter Wemm#undef  NCURSES_VERSION
800e3d5408SPeter Wemm#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@"
810e3d5408SPeter Wemm
824a1a9510SRong-En Fan/*
834a1a9510SRong-En Fan * Identify the mouse encoding version.
844a1a9510SRong-En Fan */
854a1a9510SRong-En Fan#define NCURSES_MOUSE_VERSION @NCURSES_MOUSE_VERSION@
864a1a9510SRong-En Fan
874a1a9510SRong-En Fan/*
884a1a9510SRong-En Fan * Definitions to facilitate DLL's.
894a1a9510SRong-En Fan */
907a69bbfbSPeter Wemm#include <ncurses_dll.h>
917a69bbfbSPeter Wemm
92*21817992SBaptiste Daroussin/*
93*21817992SBaptiste Daroussin * Extra headers.
94*21817992SBaptiste Daroussin */
95aae38d10SBaptiste Daroussin#if @HAVE_STDINT_H@
96aae38d10SBaptiste Daroussin#include <stdint.h>
97aae38d10SBaptiste Daroussin#endif
98aae38d10SBaptiste Daroussin
99*21817992SBaptiste Daroussin#ifdef __cplusplus
100*21817992SBaptiste Daroussin#else
101*21817992SBaptiste Daroussin#if @HAVE_STDNORETURN_H@
102*21817992SBaptiste Daroussin#include <stdnoreturn.h>
103*21817992SBaptiste Daroussin#undef GCC_NORETURN
104*21817992SBaptiste Daroussin#define GCC_NORETURN _Noreturn
105*21817992SBaptiste Daroussin#endif
106*21817992SBaptiste Daroussin#endif
107*21817992SBaptiste Daroussin
1084a1a9510SRong-En Fan/*
1094a1a9510SRong-En Fan * User-definable tweak to disable the include of <stdbool.h>.
1104a1a9510SRong-En Fan */
1114a1a9510SRong-En Fan#ifndef NCURSES_ENABLE_STDBOOL_H
1124a1a9510SRong-En Fan#define NCURSES_ENABLE_STDBOOL_H @cf_cv_header_stdbool_h@
1134a1a9510SRong-En Fan#endif
1144a1a9510SRong-En Fan
1154a1a9510SRong-En Fan/*
1164a1a9510SRong-En Fan * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
1174a1a9510SRong-En Fan * configured using --disable-macros.
1184a1a9510SRong-En Fan */
1190e3d5408SPeter Wemm#ifndef NCURSES_ATTR_T
1200e3d5408SPeter Wemm#define NCURSES_ATTR_T int
1210e3d5408SPeter Wemm#endif
1220e3d5408SPeter Wemm
1234a1a9510SRong-En Fan/*
1244a1a9510SRong-En Fan * Expands to 'const' if ncurses is configured using --enable-const.  Note that
1254a1a9510SRong-En Fan * doing so makes it incompatible with other implementations of X/Open Curses.
1264a1a9510SRong-En Fan */
1270e3d5408SPeter Wemm#undef  NCURSES_CONST
1280e3d5408SPeter Wemm#define NCURSES_CONST @NCURSES_CONST@
1290e3d5408SPeter Wemm
1304a1a9510SRong-En Fan#undef NCURSES_INLINE
1314a1a9510SRong-En Fan#define NCURSES_INLINE @NCURSES_INLINE@
1324a1a9510SRong-En Fan
1334a1a9510SRong-En Fan/*
134aae38d10SBaptiste Daroussin * The standard type used for color values, and for color-pairs.  The latter
13573f0a83dSXin LI * allows the curses library to enumerate the combinations of foreground and
13673f0a83dSXin LI * background colors used by an application, and is normally the product of the
13773f0a83dSXin LI * total foreground and background colors.
13873f0a83dSXin LI *
13973f0a83dSXin LI * X/Open uses "short" for both of these types, ultimately because they are
140aae38d10SBaptiste Daroussin * numbers from the SVr4 terminal database, which uses 16-bit signed values.
1414a1a9510SRong-En Fan */
14215589c42SPeter Wemm#undef	NCURSES_COLOR_T
14315589c42SPeter Wemm#define	NCURSES_COLOR_T short
14415589c42SPeter Wemm
14573f0a83dSXin LI#undef	NCURSES_PAIRS_T
14673f0a83dSXin LI#define	NCURSES_PAIRS_T short
14773f0a83dSXin LI
1484a1a9510SRong-En Fan/*
149aae38d10SBaptiste Daroussin * Definitions used to make WINDOW and similar structs opaque.
1505ca44d1cSRong-En Fan */
151aae38d10SBaptiste Daroussin#ifndef NCURSES_INTERNALS
1525ca44d1cSRong-En Fan#define NCURSES_OPAQUE       @NCURSES_OPAQUE@
153aae38d10SBaptiste Daroussin#define NCURSES_OPAQUE_FORM  @NCURSES_OPAQUE_FORM@
154aae38d10SBaptiste Daroussin#define NCURSES_OPAQUE_MENU  @NCURSES_OPAQUE_MENU@
155aae38d10SBaptiste Daroussin#define NCURSES_OPAQUE_PANEL @NCURSES_OPAQUE_PANEL@
156aae38d10SBaptiste Daroussin#endif
157aae38d10SBaptiste Daroussin
158aae38d10SBaptiste Daroussin/*
159aae38d10SBaptiste Daroussin * Definition used to optionally suppress wattr* macros to help with the
160aae38d10SBaptiste Daroussin * transition from ncurses5 to ncurses6 by allowing the header files to
161aae38d10SBaptiste Daroussin * be shared across development packages for ncursesw in both ABIs.
162aae38d10SBaptiste Daroussin */
163aae38d10SBaptiste Daroussin#ifndef NCURSES_WATTR_MACROS
164aae38d10SBaptiste Daroussin#define NCURSES_WATTR_MACROS @NCURSES_WATTR_MACROS@
1655ca44d1cSRong-En Fan#endif
1665ca44d1cSRong-En Fan
1675ca44d1cSRong-En Fan/*
16806bfebdeSXin LI * The reentrant code relies on the opaque setting, but adds features.
16906bfebdeSXin LI */
17006bfebdeSXin LI#ifndef NCURSES_REENTRANT
17106bfebdeSXin LI#define NCURSES_REENTRANT @cf_cv_enable_reentrant@
17206bfebdeSXin LI#endif
17306bfebdeSXin LI
17406bfebdeSXin LI/*
175*21817992SBaptiste Daroussin * KEY_RESIZE is an extended feature that relies upon the SIGWINCH handler
176*21817992SBaptiste Daroussin * in ncurses.
177*21817992SBaptiste Daroussin */
178*21817992SBaptiste Daroussin#if @NCURSES_EXT_FUNCS@
179*21817992SBaptiste Daroussin#ifndef NCURSES_SIGWINCH
180*21817992SBaptiste Daroussin#define NCURSES_SIGWINCH @cf_cv_enable_sigwinch@
181*21817992SBaptiste Daroussin#endif
182*21817992SBaptiste Daroussin#else
183*21817992SBaptiste Daroussin#undef NCURSES_SIGWINCH
184*21817992SBaptiste Daroussin#define NCURSES_SIGWINCH 0
185*21817992SBaptiste Daroussin#endif
186*21817992SBaptiste Daroussin
187*21817992SBaptiste Daroussin/*
188e1865124SBaptiste Daroussin * In certain environments, we must work around linker problems for data
189e1865124SBaptiste Daroussin */
190e1865124SBaptiste Daroussin#undef NCURSES_BROKEN_LINKER
191e1865124SBaptiste Daroussin#if @BROKEN_LINKER@
192e1865124SBaptiste Daroussin#define NCURSES_BROKEN_LINKER 1
193e1865124SBaptiste Daroussin#endif
194e1865124SBaptiste Daroussin
195e1865124SBaptiste Daroussin/*
19606bfebdeSXin LI * Control whether bindings for interop support are added.
19706bfebdeSXin LI */
19806bfebdeSXin LI#undef	NCURSES_INTEROP_FUNCS
19906bfebdeSXin LI#define	NCURSES_INTEROP_FUNCS @NCURSES_INTEROP_FUNCS@
20006bfebdeSXin LI
20106bfebdeSXin LI/*
2024a1a9510SRong-En Fan * The internal type used for window dimensions.
2034a1a9510SRong-En Fan */
20415589c42SPeter Wemm#undef	NCURSES_SIZE_T
2055ca44d1cSRong-En Fan#define	NCURSES_SIZE_T @NCURSES_SIZE_T@
20615589c42SPeter Wemm
2074a1a9510SRong-En Fan/*
2084a1a9510SRong-En Fan * Control whether tparm() supports varargs or fixed-parameter list.
2094a1a9510SRong-En Fan */
2104a1a9510SRong-En Fan#undef NCURSES_TPARM_VARARGS
2114a1a9510SRong-En Fan#define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@
2124a1a9510SRong-En Fan
2134a1a9510SRong-En Fan/*
21473f0a83dSXin LI * Control type used for tparm's arguments.  While X/Open equates long and
21573f0a83dSXin LI * char* values, this is not always workable for 64-bit platforms.
21673f0a83dSXin LI */
21773f0a83dSXin LI#undef NCURSES_TPARM_ARG
21873f0a83dSXin LI#define NCURSES_TPARM_ARG @NCURSES_TPARM_ARG@
21973f0a83dSXin LI
22073f0a83dSXin LI/*
221aae38d10SBaptiste Daroussin * Control whether ncurses uses wcwidth() for checking width of line-drawing
222aae38d10SBaptiste Daroussin * characters.
223aae38d10SBaptiste Daroussin */
224aae38d10SBaptiste Daroussin#undef NCURSES_WCWIDTH_GRAPHICS
225aae38d10SBaptiste Daroussin#define NCURSES_WCWIDTH_GRAPHICS @NCURSES_WCWIDTH_GRAPHICS@
226aae38d10SBaptiste Daroussin
227aae38d10SBaptiste Daroussin/*
2284a1a9510SRong-En Fan * NCURSES_CH_T is used in building the library, but not used otherwise in
2294a1a9510SRong-En Fan * this header file, since that would make the normal/wide-character versions
2304a1a9510SRong-En Fan * of the header incompatible.
2314a1a9510SRong-En Fan */
23239f2269fSPeter Wemm#undef	NCURSES_CH_T
23339f2269fSPeter Wemm#define NCURSES_CH_T @NCURSES_CH_T@
23439f2269fSPeter Wemm
2354a1a9510SRong-En Fan#if @cf_cv_enable_lp64@ && defined(_LP64)
2364a1a9510SRong-En Fantypedef unsigned chtype;
2374a1a9510SRong-En Fantypedef unsigned mmask_t;
2384a1a9510SRong-En Fan#else
239aae38d10SBaptiste Daroussintypedef @cf_cv_typeof_chtype@ chtype;
240aae38d10SBaptiste Daroussintypedef @cf_cv_typeof_mmask_t@ mmask_t;
2414a1a9510SRong-En Fan#endif
2420e3d5408SPeter Wemm
24306bfebdeSXin LI/*
24406bfebdeSXin LI * We need FILE, etc.  Include this before checking any feature symbols.
24506bfebdeSXin LI */
2460e3d5408SPeter Wemm#include <stdio.h>
24706bfebdeSXin LI
24806bfebdeSXin LI/*
24906bfebdeSXin LI * With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or
25073f0a83dSXin LI * conflicting) when _XOPEN_SOURCE is 500 or greater.  If NCURSES_WIDECHAR is
25173f0a83dSXin LI * not already defined, e.g., if the platform relies upon nonstandard feature
25273f0a83dSXin LI * test macros, define it at this point if the standard feature test macros
25373f0a83dSXin LI * indicate that it should be defined.
25406bfebdeSXin LI */
25573f0a83dSXin LI#ifndef NCURSES_WIDECHAR
25673f0a83dSXin LI#if defined(_XOPEN_SOURCE_EXTENDED) || (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500))
25773f0a83dSXin LI#define NCURSES_WIDECHAR 1
25873f0a83dSXin LI#else
25973f0a83dSXin LI#define NCURSES_WIDECHAR 0
26006bfebdeSXin LI#endif
26173f0a83dSXin LI#endif /* NCURSES_WIDECHAR */
26206bfebdeSXin LI
2630e3d5408SPeter Wemm#include <stdarg.h>	/* we need va_list */
26473f0a83dSXin LI#if NCURSES_WIDECHAR
2650e3d5408SPeter Wemm#include <stddef.h>	/* we want wchar_t */
26606bfebdeSXin LI#endif
2670e3d5408SPeter Wemm
2685ca44d1cSRong-En Fan/* X/Open and SVr4 specify that curses implements 'bool'.  However, C++ may also
2690e3d5408SPeter Wemm * implement it.  If so, we must use the C++ compiler's type to avoid conflict
2700e3d5408SPeter Wemm * with other interfaces.
27139f2269fSPeter Wemm *
27239f2269fSPeter Wemm * A further complication is that <stdbool.h> may declare 'bool' to be a
27339f2269fSPeter Wemm * different type, such as an enum which is not necessarily compatible with
27439f2269fSPeter Wemm * C++.  If we have <stdbool.h>, make 'bool' a macro, so users may #undef it.
27539f2269fSPeter Wemm * Otherwise, let it remain a typedef to avoid conflicts with other #define's.
27639f2269fSPeter Wemm * In either case, make a typedef for NCURSES_BOOL which can be used if needed
27739f2269fSPeter Wemm * from either C or C++.
2780e3d5408SPeter Wemm */
2790e3d5408SPeter Wemm
2800e3d5408SPeter Wemm#undef TRUE
2810e3d5408SPeter Wemm#define TRUE    1
2820e3d5408SPeter Wemm
2830e3d5408SPeter Wemm#undef FALSE
2840e3d5408SPeter Wemm#define FALSE   0
2850e3d5408SPeter Wemm
28639f2269fSPeter Wemmtypedef @cf_cv_type_of_bool@ NCURSES_BOOL;
28739f2269fSPeter Wemm
2884a1a9510SRong-En Fan#if @USE_CXX_BOOL@	/* __cplusplus, etc. */
28939f2269fSPeter Wemm
2904a1a9510SRong-En Fan/* use the C++ compiler's bool type */
2914a1a9510SRong-En Fan#define NCURSES_BOOL bool
2924a1a9510SRong-En Fan
2934a1a9510SRong-En Fan#else			/* c89, c99, etc. */
2944a1a9510SRong-En Fan
2954a1a9510SRong-En Fan#if NCURSES_ENABLE_STDBOOL_H
29639f2269fSPeter Wemm#include <stdbool.h>
2974a1a9510SRong-En Fan/* use whatever the C compiler decides bool really is */
2984a1a9510SRong-En Fan#define NCURSES_BOOL bool
29939f2269fSPeter Wemm#else
3004a1a9510SRong-En Fan/* there is no predefined bool - use our own */
3014a1a9510SRong-En Fan#undef bool
3024a1a9510SRong-En Fan#define bool NCURSES_BOOL
3030e3d5408SPeter Wemm#endif
3040e3d5408SPeter Wemm
30539f2269fSPeter Wemm#endif /* !__cplusplus, etc. */
30639f2269fSPeter Wemm
3070e3d5408SPeter Wemm#ifdef __cplusplus
3080e3d5408SPeter Wemmextern "C" {
3094a1a9510SRong-En Fan#define NCURSES_CAST(type,value) static_cast<type>(value)
3104a1a9510SRong-En Fan#else
3114a1a9510SRong-En Fan#define NCURSES_CAST(type,value) (type)(value)
3120e3d5408SPeter Wemm#endif
3130e3d5408SPeter Wemm
314aae38d10SBaptiste Daroussin#define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p)))
315aae38d10SBaptiste Daroussin
3160e3d5408SPeter Wemm/*
3175ca44d1cSRong-En Fan * X/Open attributes.  In the ncurses implementation, they are identical to the
3180e3d5408SPeter Wemm * A_ attributes.
3190e3d5408SPeter Wemm */
3200e3d5408SPeter Wemm#define WA_ATTRIBUTES	A_ATTRIBUTES
3210e3d5408SPeter Wemm#define WA_NORMAL	A_NORMAL
3220e3d5408SPeter Wemm#define WA_STANDOUT	A_STANDOUT
3230e3d5408SPeter Wemm#define WA_UNDERLINE	A_UNDERLINE
3240e3d5408SPeter Wemm#define WA_REVERSE	A_REVERSE
3250e3d5408SPeter Wemm#define WA_BLINK	A_BLINK
3260e3d5408SPeter Wemm#define WA_DIM		A_DIM
3270e3d5408SPeter Wemm#define WA_BOLD		A_BOLD
3280e3d5408SPeter Wemm#define WA_ALTCHARSET	A_ALTCHARSET
3290e3d5408SPeter Wemm#define WA_INVIS	A_INVIS
3300e3d5408SPeter Wemm#define WA_PROTECT	A_PROTECT
3310e3d5408SPeter Wemm#define WA_HORIZONTAL	A_HORIZONTAL
3320e3d5408SPeter Wemm#define WA_LEFT		A_LEFT
3330e3d5408SPeter Wemm#define WA_LOW		A_LOW
3340e3d5408SPeter Wemm#define WA_RIGHT	A_RIGHT
3350e3d5408SPeter Wemm#define WA_TOP		A_TOP
3360e3d5408SPeter Wemm#define WA_VERTICAL	A_VERTICAL
3370e3d5408SPeter Wemm
33873f0a83dSXin LI#if @NCURSES_EXT_FUNCS@
33973f0a83dSXin LI#define WA_ITALIC	A_ITALIC	/* ncurses extension */
34073f0a83dSXin LI#endif
34173f0a83dSXin LI
3420e3d5408SPeter Wemm/* colors */
3430e3d5408SPeter Wemm#define COLOR_BLACK	0
3440e3d5408SPeter Wemm#define COLOR_RED	1
3450e3d5408SPeter Wemm#define COLOR_GREEN	2
3460e3d5408SPeter Wemm#define COLOR_YELLOW	3
3470e3d5408SPeter Wemm#define COLOR_BLUE	4
3480e3d5408SPeter Wemm#define COLOR_MAGENTA	5
3490e3d5408SPeter Wemm#define COLOR_CYAN	6
3500e3d5408SPeter Wemm#define COLOR_WHITE	7
3510e3d5408SPeter Wemm
3520e3d5408SPeter Wemm/* line graphics */
3530e3d5408SPeter Wemm
35406bfebdeSXin LI#if @BROKEN_LINKER@ || NCURSES_REENTRANT
3555ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(chtype*, acs_map);
35606bfebdeSXin LI#define acs_map NCURSES_PUBLIC_VAR(acs_map())
35739f2269fSPeter Wemm#else
3587a69bbfbSPeter Wemmextern NCURSES_EXPORT_VAR(chtype) acs_map[];
35939f2269fSPeter Wemm#endif
3600e3d5408SPeter Wemm
36173f0a83dSXin LI#define NCURSES_ACS(c)	(acs_map[NCURSES_CAST(unsigned char,(c))])
3624a1a9510SRong-En Fan
3630e3d5408SPeter Wemm/* VT100 symbols begin here */
3644a1a9510SRong-En Fan#define ACS_ULCORNER	NCURSES_ACS('l') /* upper left corner */
3654a1a9510SRong-En Fan#define ACS_LLCORNER	NCURSES_ACS('m') /* lower left corner */
3664a1a9510SRong-En Fan#define ACS_URCORNER	NCURSES_ACS('k') /* upper right corner */
3674a1a9510SRong-En Fan#define ACS_LRCORNER	NCURSES_ACS('j') /* lower right corner */
3684a1a9510SRong-En Fan#define ACS_LTEE	NCURSES_ACS('t') /* tee pointing right */
3694a1a9510SRong-En Fan#define ACS_RTEE	NCURSES_ACS('u') /* tee pointing left */
3704a1a9510SRong-En Fan#define ACS_BTEE	NCURSES_ACS('v') /* tee pointing up */
3714a1a9510SRong-En Fan#define ACS_TTEE	NCURSES_ACS('w') /* tee pointing down */
3724a1a9510SRong-En Fan#define ACS_HLINE	NCURSES_ACS('q') /* horizontal line */
3734a1a9510SRong-En Fan#define ACS_VLINE	NCURSES_ACS('x') /* vertical line */
3744a1a9510SRong-En Fan#define ACS_PLUS	NCURSES_ACS('n') /* large plus or crossover */
3754a1a9510SRong-En Fan#define ACS_S1		NCURSES_ACS('o') /* scan line 1 */
3764a1a9510SRong-En Fan#define ACS_S9		NCURSES_ACS('s') /* scan line 9 */
3774a1a9510SRong-En Fan#define ACS_DIAMOND	NCURSES_ACS('`') /* diamond */
3784a1a9510SRong-En Fan#define ACS_CKBOARD	NCURSES_ACS('a') /* checker board (stipple) */
3794a1a9510SRong-En Fan#define ACS_DEGREE	NCURSES_ACS('f') /* degree symbol */
3804a1a9510SRong-En Fan#define ACS_PLMINUS	NCURSES_ACS('g') /* plus/minus */
3814a1a9510SRong-En Fan#define ACS_BULLET	NCURSES_ACS('~') /* bullet */
3820e3d5408SPeter Wemm/* Teletype 5410v1 symbols begin here */
3834a1a9510SRong-En Fan#define ACS_LARROW	NCURSES_ACS(',') /* arrow pointing left */
3844a1a9510SRong-En Fan#define ACS_RARROW	NCURSES_ACS('+') /* arrow pointing right */
3854a1a9510SRong-En Fan#define ACS_DARROW	NCURSES_ACS('.') /* arrow pointing down */
3864a1a9510SRong-En Fan#define ACS_UARROW	NCURSES_ACS('-') /* arrow pointing up */
3874a1a9510SRong-En Fan#define ACS_BOARD	NCURSES_ACS('h') /* board of squares */
3884a1a9510SRong-En Fan#define ACS_LANTERN	NCURSES_ACS('i') /* lantern symbol */
3894a1a9510SRong-En Fan#define ACS_BLOCK	NCURSES_ACS('0') /* solid square block */
3900e3d5408SPeter Wemm/*
3910e3d5408SPeter Wemm * These aren't documented, but a lot of System Vs have them anyway
3920e3d5408SPeter Wemm * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
3930e3d5408SPeter Wemm * The ACS_names may not match AT&T's, our source didn't know them.
3940e3d5408SPeter Wemm */
3954a1a9510SRong-En Fan#define ACS_S3		NCURSES_ACS('p') /* scan line 3 */
3964a1a9510SRong-En Fan#define ACS_S7		NCURSES_ACS('r') /* scan line 7 */
3974a1a9510SRong-En Fan#define ACS_LEQUAL	NCURSES_ACS('y') /* less/equal */
3984a1a9510SRong-En Fan#define ACS_GEQUAL	NCURSES_ACS('z') /* greater/equal */
3994a1a9510SRong-En Fan#define ACS_PI		NCURSES_ACS('{') /* Pi */
4004a1a9510SRong-En Fan#define ACS_NEQUAL	NCURSES_ACS('|') /* not equal */
4014a1a9510SRong-En Fan#define ACS_STERLING	NCURSES_ACS('}') /* UK pound sign */
4020e3d5408SPeter Wemm
4030e3d5408SPeter Wemm/*
4040e3d5408SPeter Wemm * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
4050e3d5408SPeter Wemm * is the right, b is the bottom, and l is the left.  t, r, b, and l might
4060e3d5408SPeter Wemm * be B (blank), S (single), D (double), or T (thick).  The subset defined
4070e3d5408SPeter Wemm * here only uses B and S.
4080e3d5408SPeter Wemm */
4090e3d5408SPeter Wemm#define ACS_BSSB	ACS_ULCORNER
4100e3d5408SPeter Wemm#define ACS_SSBB	ACS_LLCORNER
4110e3d5408SPeter Wemm#define ACS_BBSS	ACS_URCORNER
4120e3d5408SPeter Wemm#define ACS_SBBS	ACS_LRCORNER
4130e3d5408SPeter Wemm#define ACS_SBSS	ACS_RTEE
4140e3d5408SPeter Wemm#define ACS_SSSB	ACS_LTEE
4150e3d5408SPeter Wemm#define ACS_SSBS	ACS_BTEE
4160e3d5408SPeter Wemm#define ACS_BSSS	ACS_TTEE
4170e3d5408SPeter Wemm#define ACS_BSBS	ACS_HLINE
4180e3d5408SPeter Wemm#define ACS_SBSB	ACS_VLINE
4190e3d5408SPeter Wemm#define ACS_SSSS	ACS_PLUS
4200e3d5408SPeter Wemm
42139f2269fSPeter Wemm#undef	ERR
4220e3d5408SPeter Wemm#define ERR     (-1)
4230e3d5408SPeter Wemm
42439f2269fSPeter Wemm#undef	OK
4250e3d5408SPeter Wemm#define OK      (0)
4260e3d5408SPeter Wemm
4270e3d5408SPeter Wemm/* values for the _flags member */
4280e3d5408SPeter Wemm#define _SUBWIN         0x01	/* is this a sub-window? */
4290e3d5408SPeter Wemm#define _ENDLINE        0x02	/* is the window flush right? */
4300e3d5408SPeter Wemm#define _FULLWIN        0x04	/* is the window full-screen? */
4310e3d5408SPeter Wemm#define _SCROLLWIN      0x08	/* bottom edge is at screen bottom? */
4320e3d5408SPeter Wemm#define _ISPAD	        0x10	/* is this window a pad? */
4330e3d5408SPeter Wemm#define _HASMOVED       0x20	/* has cursor moved since last refresh? */
4340e3d5408SPeter Wemm#define _WRAPPED        0x40	/* cursor was just wrappped */
4350e3d5408SPeter Wemm
4360e3d5408SPeter Wemm/*
4370e3d5408SPeter Wemm * this value is used in the firstchar and lastchar fields to mark
4380e3d5408SPeter Wemm * unchanged lines
4390e3d5408SPeter Wemm */
4400e3d5408SPeter Wemm#define _NOCHANGE       -1
4410e3d5408SPeter Wemm
4420e3d5408SPeter Wemm/*
4430e3d5408SPeter Wemm * this value is used in the oldindex field to mark lines created by insertions
4440e3d5408SPeter Wemm * and scrolls.
4450e3d5408SPeter Wemm */
4460e3d5408SPeter Wemm#define _NEWINDEX	-1
4470e3d5408SPeter Wemm
448*21817992SBaptiste Daroussin#ifdef NCURSES_INTERNALS
449*21817992SBaptiste Daroussin#undef SCREEN
450*21817992SBaptiste Daroussin#define SCREEN struct screen
451*21817992SBaptiste DaroussinSCREEN;
452*21817992SBaptiste Daroussin#else
4530e3d5408SPeter Wemmtypedef struct screen  SCREEN;
454*21817992SBaptiste Daroussin#endif
455*21817992SBaptiste Daroussin
4560e3d5408SPeter Wemmtypedef struct _win_st WINDOW;
4570e3d5408SPeter Wemm
4580e3d5408SPeter Wemmtypedef	chtype	attr_t;		/* ...must be at least as wide as chtype */
4590e3d5408SPeter Wemm
46073f0a83dSXin LI#if NCURSES_WIDECHAR
46139f2269fSPeter Wemm
46239f2269fSPeter Wemm#if @NCURSES_LIBUTF8@
46339f2269fSPeter Wemm#ifdef mblen			/* libutf8.h defines it w/o undefining first */
46439f2269fSPeter Wemm#undef mblen
46539f2269fSPeter Wemm#endif
46639f2269fSPeter Wemm#include <libutf8.h>
46739f2269fSPeter Wemm#endif
46839f2269fSPeter Wemm
4694a1a9510SRong-En Fan#if @NEED_WCHAR_H@
47039f2269fSPeter Wemm#include <wchar.h>		/* ...to get mbstate_t, etc. */
47139f2269fSPeter Wemm#endif
47239f2269fSPeter Wemm
4734a1a9510SRong-En Fan#if @NCURSES_WCHAR_T@
4744a1a9510SRong-En Fantypedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@;
4754a1a9510SRong-En Fan#endif
4764a1a9510SRong-En Fan
4774a1a9510SRong-En Fan#if @NCURSES_WINT_T@
4784a1a9510SRong-En Fantypedef unsigned int wint_t@NCURSES_OK_WCHAR_T@;
4794a1a9510SRong-En Fan#endif
4800e3d5408SPeter Wemm
48106bfebdeSXin LI/*
48206bfebdeSXin LI * cchar_t stores an array of CCHARW_MAX wide characters.  The first is
48306bfebdeSXin LI * normally a spacing character.  The others are non-spacing.  If those
48406bfebdeSXin LI * (spacing and nonspacing) do not fill the array, a null L'\0' follows.
48506bfebdeSXin LI * Otherwise, a null is assumed to follow when extracting via getcchar().
48606bfebdeSXin LI */
48706bfebdeSXin LI#define CCHARW_MAX	@NCURSES_CCHARW_MAX@
4880e3d5408SPeter Wemmtypedef struct
4890e3d5408SPeter Wemm{
4900e3d5408SPeter Wemm    attr_t	attr;
4910e3d5408SPeter Wemm    wchar_t	chars[CCHARW_MAX];
4924a1a9510SRong-En Fan#if @NCURSES_EXT_COLORS@
4935ca44d1cSRong-En Fan#undef NCURSES_EXT_COLORS
4945ca44d1cSRong-En Fan#define NCURSES_EXT_COLORS @NCURSES_PATCH@
4954a1a9510SRong-En Fan    int		ext_color;	/* color pair, must be more than 16-bits */
4964a1a9510SRong-En Fan#endif
4970e3d5408SPeter Wemm}
4980e3d5408SPeter Wemmcchar_t;
49939f2269fSPeter Wemm
50006bfebdeSXin LI#endif /* NCURSES_WIDECHAR */
5010e3d5408SPeter Wemm
5025ca44d1cSRong-En Fan#if !NCURSES_OPAQUE
50339f2269fSPeter Wemmstruct ldat;
5040e3d5408SPeter Wemm
5050e3d5408SPeter Wemmstruct _win_st
5060e3d5408SPeter Wemm{
50715589c42SPeter Wemm	NCURSES_SIZE_T _cury, _curx; /* current cursor position */
5080e3d5408SPeter Wemm
5090e3d5408SPeter Wemm	/* window location and size */
51015589c42SPeter Wemm	NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */
51115589c42SPeter Wemm	NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */
5120e3d5408SPeter Wemm
5130e3d5408SPeter Wemm	short   _flags;		/* window state flags */
5140e3d5408SPeter Wemm
5150e3d5408SPeter Wemm	/* attribute tracking */
5160e3d5408SPeter Wemm	attr_t  _attrs;		/* current attribute for non-space character */
5170e3d5408SPeter Wemm	chtype  _bkgd;		/* current background char/attribute pair */
5180e3d5408SPeter Wemm
5190e3d5408SPeter Wemm	/* option values set by user */
5200e3d5408SPeter Wemm	bool	_notimeout;	/* no time out on function-key entry? */
5210e3d5408SPeter Wemm	bool	_clear;		/* consider all data in the window invalid? */
5220e3d5408SPeter Wemm	bool	_leaveok;	/* OK to not reset cursor on exit? */
5230e3d5408SPeter Wemm	bool	_scroll;	/* OK to scroll this window? */
5240e3d5408SPeter Wemm	bool	_idlok;		/* OK to use insert/delete line? */
5250e3d5408SPeter Wemm	bool	_idcok;		/* OK to use insert/delete char? */
5260e3d5408SPeter Wemm	bool	_immed;		/* window in immed mode? (not yet used) */
5270e3d5408SPeter Wemm	bool	_sync;		/* window in sync mode? */
5280e3d5408SPeter Wemm	bool	_use_keypad;	/* process function keys into KEY_ symbols? */
5290e3d5408SPeter Wemm	int	_delay;		/* 0 = nodelay, <0 = blocking, >0 = delay */
5300e3d5408SPeter Wemm
5310e3d5408SPeter Wemm	struct ldat *_line;	/* the actual line data */
5320e3d5408SPeter Wemm
5330e3d5408SPeter Wemm	/* global screen state */
53415589c42SPeter Wemm	NCURSES_SIZE_T _regtop;	/* top line of scrolling region */
53515589c42SPeter Wemm	NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */
5360e3d5408SPeter Wemm
5370e3d5408SPeter Wemm	/* these are used only if this is a sub-window */
5380e3d5408SPeter Wemm	int	_parx;		/* x coordinate of this window in parent */
5390e3d5408SPeter Wemm	int	_pary;		/* y coordinate of this window in parent */
5400e3d5408SPeter Wemm	WINDOW	*_parent;	/* pointer to parent if a sub-window */
5410e3d5408SPeter Wemm
5420e3d5408SPeter Wemm	/* these are used only if this is a pad */
5430e3d5408SPeter Wemm	struct pdat
5440e3d5408SPeter Wemm	{
54515589c42SPeter Wemm	    NCURSES_SIZE_T _pad_y,      _pad_x;
54615589c42SPeter Wemm	    NCURSES_SIZE_T _pad_top,    _pad_left;
54715589c42SPeter Wemm	    NCURSES_SIZE_T _pad_bottom, _pad_right;
5480e3d5408SPeter Wemm	} _pad;
5490e3d5408SPeter Wemm
55015589c42SPeter Wemm	NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
55139f2269fSPeter Wemm
55273f0a83dSXin LI#if NCURSES_WIDECHAR
55339f2269fSPeter Wemm	cchar_t  _bkgrnd;	/* current background char/attribute pair */
5544a1a9510SRong-En Fan#if @NCURSES_EXT_COLORS@
5554a1a9510SRong-En Fan	int	_color;		/* current color-pair for non-space character */
5564a1a9510SRong-En Fan#endif
55739f2269fSPeter Wemm#endif
5580e3d5408SPeter Wemm};
5595ca44d1cSRong-En Fan#endif /* NCURSES_OPAQUE */
5600e3d5408SPeter Wemm
5610e3d5408SPeter Wemm/*
5620e3d5408SPeter Wemm * GCC (and some other compilers) define '__attribute__'; we're using this
5630e3d5408SPeter Wemm * macro to alert the compiler to flag inconsistencies in printf/scanf-like
5640e3d5408SPeter Wemm * function calls.  Just in case '__attribute__' isn't defined, make a dummy.
5654a1a9510SRong-En Fan * Old versions of G++ do not accept it anyway, at least not consistently with
5664a1a9510SRong-En Fan * GCC.
5670e3d5408SPeter Wemm */
5684a1a9510SRong-En Fan#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
5690e3d5408SPeter Wemm#define __attribute__(p) /* nothing */
5700e3d5408SPeter Wemm#endif
5710e3d5408SPeter Wemm
5720e3d5408SPeter Wemm/*
5730e3d5408SPeter Wemm * We cannot define these in ncurses_cfg.h, since they require parameters to be
574*21817992SBaptiste Daroussin * passed (that is non-portable).
5750e3d5408SPeter Wemm */
57639f2269fSPeter Wemm#ifndef GCC_PRINTFLIKE
577*21817992SBaptiste Daroussin#ifndef printf
5780e3d5408SPeter Wemm#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
5790e3d5408SPeter Wemm#else
5800e3d5408SPeter Wemm#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
5810e3d5408SPeter Wemm#endif
58239f2269fSPeter Wemm#endif
5830e3d5408SPeter Wemm
58439f2269fSPeter Wemm#ifndef GCC_SCANFLIKE
585*21817992SBaptiste Daroussin#ifndef scanf
5860e3d5408SPeter Wemm#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
5870e3d5408SPeter Wemm#else
5880e3d5408SPeter Wemm#define GCC_SCANFLIKE(fmt,var)  /*nothing*/
5890e3d5408SPeter Wemm#endif
59039f2269fSPeter Wemm#endif
5910e3d5408SPeter Wemm
5920e3d5408SPeter Wemm#ifndef	GCC_NORETURN
5930e3d5408SPeter Wemm#define	GCC_NORETURN /* nothing */
5940e3d5408SPeter Wemm#endif
5950e3d5408SPeter Wemm
5960e3d5408SPeter Wemm#ifndef	GCC_UNUSED
5970e3d5408SPeter Wemm#define	GCC_UNUSED /* nothing */
5980e3d5408SPeter Wemm#endif
5990e3d5408SPeter Wemm
600aae38d10SBaptiste Daroussin#undef  GCC_DEPRECATED
6017a656419SBaptiste Daroussin#if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2)) && !defined(NCURSES_INTERNALS)
602aae38d10SBaptiste Daroussin#define GCC_DEPRECATED(msg) __attribute__((deprecated))
603aae38d10SBaptiste Daroussin#else
604aae38d10SBaptiste Daroussin#define GCC_DEPRECATED(msg) /* nothing */
605aae38d10SBaptiste Daroussin#endif
606aae38d10SBaptiste Daroussin
6070e3d5408SPeter Wemm/*
60806bfebdeSXin LI * Curses uses a helper function.  Define our type for this to simplify
60906bfebdeSXin LI * extending it for the sp-funcs feature.
61006bfebdeSXin LI */
61106bfebdeSXin LItypedef int (*NCURSES_OUTC)(int);
61206bfebdeSXin LI
61306bfebdeSXin LI/*
6145ca44d1cSRong-En Fan * Function prototypes.  This is the complete X/Open Curses list of required
6150e3d5408SPeter Wemm * functions.  Those marked `generated' will have sources generated from the
6160e3d5408SPeter Wemm * macro definitions later in this file, in order to satisfy XPG4.2
6170e3d5408SPeter Wemm * requirements.
6180e3d5408SPeter Wemm */
6190e3d5408SPeter Wemm
6207a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) addch (const chtype);			/* generated */
6217a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) addchnstr (const chtype *, int);		/* generated */
6227a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) addchstr (const chtype *);			/* generated */
6237a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) addnstr (const char *, int);			/* generated */
6247a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) addstr (const char *);			/* generated */
6257a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T);			/* generated */
6267a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T);			/* generated */
6277a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T);			/* generated */
62873f0a83dSXin LIextern NCURSES_EXPORT(int) attr_get (attr_t *, NCURSES_PAIRS_T *, void *);	/* generated */
6297a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) attr_off (attr_t, void *);			/* generated */
6307a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) attr_on (attr_t, void *);			/* generated */
63173f0a83dSXin LIextern NCURSES_EXPORT(int) attr_set (attr_t, NCURSES_PAIRS_T, void *);		/* generated */
6327a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) baudrate (void);				/* implemented */
6337a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) beep  (void);				/* implemented */
6347a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) bkgd (chtype);				/* generated */
6357a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) bkgdset (chtype);				/* generated */
6367a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);	/* generated */
6377a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype);		/* generated */
6387a69bbfbSPeter Wemmextern NCURSES_EXPORT(bool) can_change_color (void);			/* implemented */
6397a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) cbreak (void);				/* implemented */
64073f0a83dSXin LIextern NCURSES_EXPORT(int) chgat (int, attr_t, NCURSES_PAIRS_T, const void *);	/* generated */
6417a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) clear (void);				/* generated */
6427a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) clearok (WINDOW *,bool);			/* implemented */
6437a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) clrtobot (void);				/* generated */
6447a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) clrtoeol (void);				/* generated */
64573f0a83dSXin LIextern NCURSES_EXPORT(int) color_content (NCURSES_COLOR_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*,NCURSES_COLOR_T*);	/* implemented */
64673f0a83dSXin LIextern NCURSES_EXPORT(int) color_set (NCURSES_PAIRS_T,void*);			/* generated */
6477a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) COLOR_PAIR (int);				/* generated */
6487a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int);	/* implemented */
6497a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) curs_set (int);				/* implemented */
6507a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) def_prog_mode (void);			/* implemented */
6517a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) def_shell_mode (void);			/* implemented */
6527a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) delay_output (int);				/* implemented */
6537a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) delch (void);				/* generated */
6547a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) delscreen (SCREEN *);			/* implemented */
6557a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) delwin (WINDOW *);				/* implemented */
6567a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) deleteln (void);				/* generated */
6577a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int);	/* implemented */
6587a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) doupdate (void);				/* implemented */
6597a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *);			/* implemented */
6607a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) echo (void);					/* implemented */
6617a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) echochar (const chtype);			/* generated */
6627a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) erase (void);				/* generated */
6637a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) endwin (void);				/* implemented */
6647a69bbfbSPeter Wemmextern NCURSES_EXPORT(char) erasechar (void);				/* implemented */
6657a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) filter (void);				/* implemented */
6667a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) flash (void);				/* implemented */
6677a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) flushinp (void);				/* implemented */
6687a69bbfbSPeter Wemmextern NCURSES_EXPORT(chtype) getbkgd (WINDOW *);			/* generated */
6697a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) getch (void);				/* generated */
6707a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) getnstr (char *, int);			/* generated */
6717a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) getstr (char *);				/* generated */
6727a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) getwin (FILE *);			/* implemented */
6737a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) halfdelay (int);				/* implemented */
6747a69bbfbSPeter Wemmextern NCURSES_EXPORT(bool) has_colors (void);				/* implemented */
6757a69bbfbSPeter Wemmextern NCURSES_EXPORT(bool) has_ic (void);				/* implemented */
6767a69bbfbSPeter Wemmextern NCURSES_EXPORT(bool) has_il (void);				/* implemented */
6777a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) hline (chtype, int);				/* generated */
6787a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) idcok (WINDOW *, bool);			/* implemented */
6797a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) idlok (WINDOW *, bool);			/* implemented */
6807a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) immedok (WINDOW *, bool);			/* implemented */
6817a69bbfbSPeter Wemmextern NCURSES_EXPORT(chtype) inch (void);				/* generated */
6827a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) inchnstr (chtype *, int);			/* generated */
6837a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) inchstr (chtype *);				/* generated */
6847a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) initscr (void);				/* implemented */
68573f0a83dSXin LIextern NCURSES_EXPORT(int) init_color (NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T);	/* implemented */
68673f0a83dSXin LIextern NCURSES_EXPORT(int) init_pair (NCURSES_PAIRS_T,NCURSES_COLOR_T,NCURSES_COLOR_T);		/* implemented */
6877a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) innstr (char *, int);			/* generated */
6887a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) insch (chtype);				/* generated */
6897a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) insdelln (int);				/* generated */
6907a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) insertln (void);				/* generated */
6917a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) insnstr (const char *, int);			/* generated */
6927a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) insstr (const char *);			/* generated */
6937a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) instr (char *);				/* generated */
6947a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) intrflush (WINDOW *,bool);			/* implemented */
6957a69bbfbSPeter Wemmextern NCURSES_EXPORT(bool) isendwin (void);				/* implemented */
6967a69bbfbSPeter Wemmextern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int);		/* implemented */
6977a69bbfbSPeter Wemmextern NCURSES_EXPORT(bool) is_wintouched (WINDOW *);			/* implemented */
6987a69bbfbSPeter Wemmextern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int);		/* implemented */
6997a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) keypad (WINDOW *,bool);			/* implemented */
7007a69bbfbSPeter Wemmextern NCURSES_EXPORT(char) killchar (void);				/* implemented */
7017a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) leaveok (WINDOW *,bool);			/* implemented */
7027a69bbfbSPeter Wemmextern NCURSES_EXPORT(char *) longname (void);				/* implemented */
7037a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) meta (WINDOW *,bool);			/* implemented */
7047a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) move (int, int);				/* generated */
7057a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvaddch (int, int, const chtype);		/* generated */
7067a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int);	/* generated */
7077a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *);	/* generated */
7087a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int);	/* generated */
7097a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvaddstr (int, int, const char *);		/* generated */
71073f0a83dSXin LIextern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, NCURSES_PAIRS_T, const void *);	/* generated */
7117a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvcur (int,int,int,int);			/* implemented */
7127a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvdelch (int, int);				/* generated */
7137a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int);		/* implemented */
7147a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvgetch (int, int);				/* generated */
7157a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int);		/* generated */
7167a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvgetstr (int, int, char *);			/* generated */
7177a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvhline (int, int, chtype, int);		/* generated */
7187a69bbfbSPeter Wemmextern NCURSES_EXPORT(chtype) mvinch (int, int);			/* generated */
7197a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int);	/* generated */
7207a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *);		/* generated */
7217a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int);		/* generated */
7227a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvinsch (int, int, chtype);			/* generated */
7237a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int);	/* generated */
7247a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvinsstr (int, int, const char *);		/* generated */
7257a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvinstr (int, int, char *);			/* generated */
7264a1a9510SRong-En Fanextern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...)		/* implemented */
7270e3d5408SPeter Wemm		GCC_PRINTFLIKE(3,4);
728aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) mvscanw (int,int, const char *,...)		/* implemented */
7290e3d5408SPeter Wemm		GCC_SCANFLIKE(3,4);
7307a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvvline (int, int, chtype, int);		/* generated */
7317a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype);	/* generated */
7327a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */
7337a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *);	/* generated */
7347a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int);	/* generated */
7357a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *);	/* generated */
73673f0a83dSXin LIextern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, NCURSES_PAIRS_T, const void *);/* generated */
7377a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int);		/* generated */
7387a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int);		/* generated */
7397a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int);	/* generated */
7407a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *);	/* generated */
7417a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int);	/* generated */
7427a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int);			/* implemented */
7437a69bbfbSPeter Wemmextern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int);			/* generated */
7447a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int);	/* generated */
7457a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *);		/* generated */
7467a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int);		/* generated */
7477a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype);		/* generated */
7487a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int);	/* generated */
7497a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *);	/* generated */
7507a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *);		/* generated */
7514a1a9510SRong-En Fanextern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...)	/* implemented */
7520e3d5408SPeter Wemm		GCC_PRINTFLIKE(4,5);
753aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, const char *,...)	/* implemented */
7540e3d5408SPeter Wemm		GCC_SCANFLIKE(4,5);
7557a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int);	/* generated */
7567a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) napms (int);					/* implemented */
7577a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) newpad (int,int);			/* implemented */
758aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(SCREEN *) newterm (const char *,FILE *,FILE *);	/* implemented */
7597a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int);		/* implemented */
7607a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) nl (void);					/* implemented */
7617a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) nocbreak (void);				/* implemented */
7627a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) nodelay (WINDOW *,bool);			/* implemented */
7637a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) noecho (void);				/* implemented */
7647a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) nonl (void);					/* implemented */
7657a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) noqiflush (void);				/* implemented */
7667a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) noraw (void);				/* implemented */
7677a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) notimeout (WINDOW *,bool);			/* implemented */
7687a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *);		/* implemented */
7697a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *);		/* implemented */
77073f0a83dSXin LIextern NCURSES_EXPORT(int) pair_content (NCURSES_PAIRS_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*);		/* implemented */
7717a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) PAIR_NUMBER (int);				/* generated */
7727a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype);		/* implemented */
7737a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
7747a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int);	/* implemented */
7754a1a9510SRong-En Fanextern NCURSES_EXPORT(int) printw (const char *,...)			/* implemented */
7760e3d5408SPeter Wemm		GCC_PRINTFLIKE(1,2);
7777a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *);			/* implemented */
7787a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) qiflush (void);				/* implemented */
7797a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) raw (void);					/* implemented */
7807a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) redrawwin (WINDOW *);			/* generated */
7817a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) refresh (void);				/* generated */
7827a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) resetty (void);				/* implemented */
7837a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) reset_prog_mode (void);			/* implemented */
7847a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) reset_shell_mode (void);			/* implemented */
78539f2269fSPeter Wemmextern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int));	/* implemented */
7867a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) savetty (void);				/* implemented */
787aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) scanw (const char *,...)			/* implemented */
7880e3d5408SPeter Wemm		GCC_SCANFLIKE(1,2);
7897a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) scr_dump (const char *);			/* implemented */
7907a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) scr_init (const char *);			/* implemented */
7917a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) scrl (int);					/* generated */
7927a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) scroll (WINDOW *);				/* generated */
7937a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) scrollok (WINDOW *,bool);			/* implemented */
7947a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) scr_restore (const char *);			/* implemented */
7957a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) scr_set (const char *);			/* implemented */
7967a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) setscrreg (int,int);				/* generated */
7977a69bbfbSPeter Wemmextern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *);			/* implemented */
7987a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_attroff (const chtype);			/* implemented */
7997a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *);		/* generated:WIDEC */
8007a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_attron (const chtype);			/* implemented */
8017a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*);			/* generated:WIDEC */
8027a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_attrset (const chtype);			/* implemented */
8037a69bbfbSPeter Wemmextern NCURSES_EXPORT(attr_t) slk_attr (void);				/* implemented */
80473f0a83dSXin LIextern NCURSES_EXPORT(int) slk_attr_set (const attr_t,NCURSES_PAIRS_T,void*);	/* implemented */
8057a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_clear (void);				/* implemented */
80673f0a83dSXin LIextern NCURSES_EXPORT(int) slk_color (NCURSES_PAIRS_T);				/* implemented */
8077a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_init (int);				/* implemented */
8087a69bbfbSPeter Wemmextern NCURSES_EXPORT(char *) slk_label (int);				/* implemented */
8097a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_noutrefresh (void);			/* implemented */
8107a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_refresh (void);				/* implemented */
8117a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_restore (void);				/* implemented */
8127a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_set (int,const char *,int);		/* implemented */
8137a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) slk_touch (void);				/* implemented */
8147a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) standout (void);				/* generated */
8157a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) standend (void);				/* generated */
8167a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) start_color (void);				/* implemented */
8177a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int);	/* implemented */
8187a69bbfbSPeter Wemmextern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int);	/* implemented */
8197a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) syncok (WINDOW *, bool);			/* implemented */
8207a69bbfbSPeter Wemmextern NCURSES_EXPORT(chtype) termattrs (void);				/* implemented */
8217a69bbfbSPeter Wemmextern NCURSES_EXPORT(char *) termname (void);				/* implemented */
8227a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) timeout (int);				/* generated */
8237a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) touchline (WINDOW *, int, int);		/* generated */
8247a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) touchwin (WINDOW *);				/* generated */
8257a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) typeahead (int);				/* implemented */
8267a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) ungetch (int);				/* implemented */
8277a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) untouchwin (WINDOW *);			/* generated */
8287a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) use_env (bool);				/* implemented */
82973f0a83dSXin LIextern NCURSES_EXPORT(void) use_tioctl (bool);				/* implemented */
8307a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) vidattr (chtype);				/* implemented */
83106bfebdeSXin LIextern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC);		/* implemented */
8327a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) vline (chtype, int);				/* generated */
833*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_printw)	/* implemented */
834*21817992SBaptiste Daroussin		GCC_PRINTFLIKE(2,0);
835*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *, va_list)	/* implemented */
836*21817992SBaptiste Daroussin		GCC_PRINTFLIKE(2,0);
837*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) vwscanw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_scanw)	/* implemented */
838*21817992SBaptiste Daroussin		GCC_SCANFLIKE(2,0);
839*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) vw_scanw (WINDOW *, const char *, va_list)	/* implemented */
840*21817992SBaptiste Daroussin		GCC_SCANFLIKE(2,0);
8417a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype);		/* implemented */
8424a1a9510SRong-En Fanextern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int);	/* implemented */
8437a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *);		/* generated */
8444a1a9510SRong-En Fanextern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int);	/* implemented */
8457a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *);		/* generated */
8467a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wattron (WINDOW *, int);			/* generated */
8477a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wattroff (WINDOW *, int);			/* generated */
8487a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wattrset (WINDOW *, int);			/* generated */
84973f0a83dSXin LIextern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, NCURSES_PAIRS_T *, void *);	/* generated */
8504a1a9510SRong-En Fanextern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *);		/* implemented */
8514a1a9510SRong-En Fanextern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *);	/* implemented */
85273f0a83dSXin LIextern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, NCURSES_PAIRS_T, void *);	/* generated */
8534a1a9510SRong-En Fanextern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype);			/* implemented */
8547a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype);			/* implemented */
8557a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);	/* implemented */
85673f0a83dSXin LIextern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, NCURSES_PAIRS_T, const void *);/* implemented */
8577a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wclear (WINDOW *);				/* implemented */
8587a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wclrtobot (WINDOW *);			/* implemented */
8597a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wclrtoeol (WINDOW *);			/* implemented */
86073f0a83dSXin LIextern NCURSES_EXPORT(int) wcolor_set (WINDOW*,NCURSES_PAIRS_T,void*);		/* implemented */
8617a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) wcursyncup (WINDOW *);			/* implemented */
8627a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wdelch (WINDOW *);				/* implemented */
8637a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wdeleteln (WINDOW *);			/* generated */
8647a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype);		/* implemented */
8657a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) werase (WINDOW *);				/* implemented */
8667a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wgetch (WINDOW *);				/* implemented */
8677a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int);		/* implemented */
8687a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *);			/* generated */
8697a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int);		/* implemented */
8707a69bbfbSPeter Wemmextern NCURSES_EXPORT(chtype) winch (WINDOW *);				/* implemented */
8717a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int);		/* implemented */
8727a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *);		/* generated */
8737a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int);		/* implemented */
8747a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winsch (WINDOW *, chtype);			/* implemented */
8757a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winsdelln (WINDOW *,int);			/* implemented */
8767a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winsertln (WINDOW *);			/* generated */
8777a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int);	/* implemented */
8787a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *);		/* generated */
8797a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) winstr (WINDOW *, char *);			/* generated */
8807a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wmove (WINDOW *,int,int);			/* implemented */
8817a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *);			/* implemented */
8824a1a9510SRong-En Fanextern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...)		/* implemented */
8830e3d5408SPeter Wemm		GCC_PRINTFLIKE(2,3);
8847a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int);		/* implemented */
8857a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wrefresh (WINDOW *);				/* implemented */
886aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) wscanw (WINDOW *, const char *,...)		/* implemented */
8870e3d5408SPeter Wemm		GCC_SCANFLIKE(2,3);
8887a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wscrl (WINDOW *,int);			/* implemented */
8897a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int);		/* implemented */
8907a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wstandout (WINDOW *);			/* generated */
8917a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wstandend (WINDOW *);			/* generated */
8927a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) wsyncdown (WINDOW *);			/* implemented */
8937a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) wsyncup (WINDOW *);				/* implemented */
8947a69bbfbSPeter Wemmextern NCURSES_EXPORT(void) wtimeout (WINDOW *,int);			/* implemented */
8957a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int);		/* implemented */
8967a69bbfbSPeter Wemmextern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int);		/* implemented */
8970e3d5408SPeter Wemm
89839f2269fSPeter Wemm/*
8994a1a9510SRong-En Fan * These are also declared in <term.h>:
9004a1a9510SRong-En Fan */
901aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) tigetflag (const char *);			/* implemented */
902aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) tigetnum (const char *);			/* implemented */
903aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(char *) tigetstr (const char *);			/* implemented */
9044a1a9510SRong-En Fanextern NCURSES_EXPORT(int) putp (const char *);				/* implemented */
9054a1a9510SRong-En Fan
9064a1a9510SRong-En Fan#if NCURSES_TPARM_VARARGS
907aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(char *) tparm (const char *, ...);		/* special */
9084a1a9510SRong-En Fan#else
909aae38d10SBaptiste Daroussinextern 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 */
9104a1a9510SRong-En Fan#endif
9114a1a9510SRong-En Fan
91206bfebdeSXin LIextern NCURSES_EXPORT(char *) tiparm (const char *, ...);		/* special */
913*21817992SBaptiste Daroussinextern NCURSES_EXPORT(char *) tiparm_s (int, int, const char *, ...);	/* special */
914*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) tiscan_s (int *, int *, const char *);	/* special */
91506bfebdeSXin LI
9164a1a9510SRong-En Fan/*
9174a1a9510SRong-En Fan * These functions are not in X/Open, but we use them in macro definitions:
9184a1a9510SRong-En Fan */
9195ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) getattrs (const WINDOW *);			/* generated */
9204a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getcurx (const WINDOW *);			/* generated */
9214a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getcury (const WINDOW *);			/* generated */
9224a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getbegx (const WINDOW *);			/* generated */
9234a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getbegy (const WINDOW *);			/* generated */
9244a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getmaxx (const WINDOW *);			/* generated */
9254a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getmaxy (const WINDOW *);			/* generated */
9264a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getparx (const WINDOW *);			/* generated */
9274a1a9510SRong-En Fanextern NCURSES_EXPORT(int) getpary (const WINDOW *);			/* generated */
9284a1a9510SRong-En Fan
9294a1a9510SRong-En Fan/*
9305ca44d1cSRong-En Fan * vid_attr() was implemented originally based on a draft of X/Open curses.
93139f2269fSPeter Wemm */
93273f0a83dSXin LI#if !NCURSES_WIDECHAR
93339f2269fSPeter Wemm#define vid_attr(a,pair,opts) vidattr(a)
93439f2269fSPeter Wemm#endif
9350e3d5408SPeter Wemm
9365ca44d1cSRong-En Fan/*
9375ca44d1cSRong-En Fan * These functions are extensions - not in X/Open Curses.
9385ca44d1cSRong-En Fan */
9395ca44d1cSRong-En Fan#if @NCURSES_EXT_FUNCS@
9405ca44d1cSRong-En Fan#undef  NCURSES_EXT_FUNCS
9415ca44d1cSRong-En Fan#define NCURSES_EXT_FUNCS @NCURSES_PATCH@
942aa59d4d4SRong-En Fantypedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
943aa59d4d4SRong-En Fantypedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
944aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) alloc_pair (int, int);
9455ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) assume_default_colors (int, int);
946*21817992SBaptiste Daroussinextern NCURSES_EXPORT(const char *) curses_version (void);
9475ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) define_key (const char *, int);
948aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
949aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
950aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) extended_slk_color(int);
951aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) find_pair (int, int);
952aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) free_pair (int);
95306bfebdeSXin LIextern NCURSES_EXPORT(int) get_escdelay (void);
954aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
955aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
956*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) is_cbreak(void);
957*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) is_echo(void);
958*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) is_nl(void);
959*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) is_raw(void);
960*21817992SBaptiste Daroussinextern NCURSES_EXPORT(bool) is_term_resized (int, int);
9615ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) key_defined (const char *);
962*21817992SBaptiste Daroussinextern NCURSES_EXPORT(char *) keybound (int, int);
9635ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) keyok (int, bool);
964*21817992SBaptiste Daroussinextern NCURSES_EXPORT(void) nofilter(void);
965aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(void) reset_color_pairs (void);
9665ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) resize_term (int, int);
9675ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) resizeterm (int, int);
968d8977eafSRong-En Fanextern NCURSES_EXPORT(int) set_escdelay (int);
969d8977eafSRong-En Fanextern NCURSES_EXPORT(int) set_tabsize (int);
9705ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) use_default_colors (void);
9715ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) use_legacy_coding (int);
972aa59d4d4SRong-En Fanextern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *);
973aa59d4d4SRong-En Fanextern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *);
9745ca44d1cSRong-En Fanextern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
975*21817992SBaptiste Daroussin
976*21817992SBaptiste Daroussin#if @NCURSES_XNAMES@
977*21817992SBaptiste Daroussin#undef  NCURSES_XNAMES
978*21817992SBaptiste Daroussin#define NCURSES_XNAMES @NCURSES_XNAMES@
979*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) use_extended_names (bool);
980*21817992SBaptiste Daroussin#endif
9815ca44d1cSRong-En Fan
9825ca44d1cSRong-En Fan/*
9835ca44d1cSRong-En Fan * These extensions provide access to information stored in the WINDOW even
9845ca44d1cSRong-En Fan * when NCURSES_OPAQUE is set:
9855ca44d1cSRong-En Fan */
98606bfebdeSXin LIextern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *);	/* @GENERATED_EXT_FUNCS@ */
98706bfebdeSXin LIextern NCURSES_EXPORT(bool) is_cleared (const WINDOW *);	/* @GENERATED_EXT_FUNCS@ */
98806bfebdeSXin LIextern NCURSES_EXPORT(bool) is_idcok (const WINDOW *);		/* @GENERATED_EXT_FUNCS@ */
98906bfebdeSXin LIextern NCURSES_EXPORT(bool) is_idlok (const WINDOW *);		/* @GENERATED_EXT_FUNCS@ */
99006bfebdeSXin LIextern NCURSES_EXPORT(bool) is_immedok (const WINDOW *);	/* @GENERATED_EXT_FUNCS@ */
99106bfebdeSXin LIextern NCURSES_EXPORT(bool) is_keypad (const WINDOW *);		/* @GENERATED_EXT_FUNCS@ */
99206bfebdeSXin LIextern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *);	/* @GENERATED_EXT_FUNCS@ */
99306bfebdeSXin LIextern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *);	/* @GENERATED_EXT_FUNCS@ */
99406bfebdeSXin LIextern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *);	/* @GENERATED_EXT_FUNCS@ */
99506bfebdeSXin LIextern NCURSES_EXPORT(bool) is_pad (const WINDOW *);		/* @GENERATED_EXT_FUNCS@ */
99606bfebdeSXin LIextern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *);	/* @GENERATED_EXT_FUNCS@ */
99706bfebdeSXin LIextern NCURSES_EXPORT(bool) is_subwin (const WINDOW *);		/* @GENERATED_EXT_FUNCS@ */
99806bfebdeSXin LIextern NCURSES_EXPORT(bool) is_syncok (const WINDOW *);		/* @GENERATED_EXT_FUNCS@ */
999aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) wgetdelay (const WINDOW *);		/* @GENERATED_EXT_FUNCS@ */
100006bfebdeSXin LIextern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* @GENERATED_EXT_FUNCS@ */
10015ca44d1cSRong-En Fan
10025ca44d1cSRong-En Fan#else
10035ca44d1cSRong-En Fan#define curses_version() NCURSES_VERSION
10045ca44d1cSRong-En Fan#endif
10055ca44d1cSRong-En Fan
100606bfebdeSXin LI/*
100706bfebdeSXin LI * Extra extension-functions, which pass a SCREEN pointer rather than using
100806bfebdeSXin LI * a global variable SP.
100906bfebdeSXin LI */
101006bfebdeSXin LI#if @NCURSES_SP_FUNCS@
101106bfebdeSXin LI#undef  NCURSES_SP_FUNCS
101206bfebdeSXin LI#define NCURSES_SP_FUNCS @NCURSES_PATCH@
101306bfebdeSXin LI#define NCURSES_SP_NAME(name) name##_sp
101406bfebdeSXin LI
101506bfebdeSXin LI/* Define the sp-funcs helper function */
101606bfebdeSXin LI#define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC)
101706bfebdeSXin LItypedef int (*NCURSES_SP_OUTC)(SCREEN*, int);
101806bfebdeSXin LI
101906bfebdeSXin LIextern NCURSES_EXPORT(SCREEN *) new_prescr (void); /* implemented:SP_FUNC */
102006bfebdeSXin LI
102106bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(baudrate) (SCREEN*); /* implemented:SP_FUNC */
102206bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FUNC */
102306bfebdeSXin LIextern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */
102406bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */
102506bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */
102673f0a83dSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */
102706bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
102806bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */
102906bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */
103006bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(doupdate) (SCREEN*); /* implemented:SP_FUNC */
103106bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (SCREEN*); /* implemented:SP_FUNC */
103206bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (SCREEN*); /* implemented:SP_FUNC */
103306bfebdeSXin LIextern NCURSES_EXPORT(char) NCURSES_SP_NAME(erasechar) (SCREEN*);/* implemented:SP_FUNC */
103406bfebdeSXin LIextern NCURSES_EXPORT(void) NCURSES_SP_NAME(filter) (SCREEN*); /* implemented:SP_FUNC */
103506bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(flash) (SCREEN*); /* implemented:SP_FUNC */
103606bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(flushinp) (SCREEN*); /* implemented:SP_FUNC */
103706bfebdeSXin LIextern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(getwin) (SCREEN*, FILE *);			/* implemented:SP_FUNC */
103806bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* implemented:SP_FUNC */
103906bfebdeSXin LIextern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */
104006bfebdeSXin LIextern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */
104106bfebdeSXin LIextern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */
104273f0a83dSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */
104373f0a83dSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */
104406bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool);	/* implemented:SP_FUNC */
104506bfebdeSXin LIextern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */
104606bfebdeSXin LIextern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */
104706bfebdeSXin LIextern NCURSES_EXPORT(char) NCURSES_SP_NAME(killchar) (SCREEN*); /* implemented:SP_FUNC */
104806bfebdeSXin LIextern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemented:SP_FUNC */
104906bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
105006bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */
105106bfebdeSXin LIextern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */
1052aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, const char *, FILE *, FILE *); /* implemented:SP_FUNC */
105306bfebdeSXin LIextern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
105406bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */
105506bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */
105606bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_FUNC */
105706bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */
105806bfebdeSXin LIextern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */
105906bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */
106073f0a83dSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */
106106bfebdeSXin LIextern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */
106206bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */
106306bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
106406bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_shell_mode) (SCREEN*); /* implemented:SP_FUNC */
106506bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(resetty) (SCREEN*); /* implemented:SP_FUNC */
106606bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(ripoffline) (SCREEN*, int, int (*)(WINDOW *, int));	/* implemented:SP_FUNC */
106706bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(savetty) (SCREEN*); /* implemented:SP_FUNC */
106806bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_init) (SCREEN*, const char *); /* implemented:SP_FUNC */
106906bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (SCREEN*, const char *); /* implemented:SP_FUNC */
107006bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_set) (SCREEN*, const char *); /* implemented:SP_FUNC */
107106bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype); /* implemented:SP_FUNC */
107206bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */
107306bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */
107406bfebdeSXin LIextern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */
107573f0a83dSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, NCURSES_PAIRS_T, void*); /* implemented:SP_FUNC */
107606bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */
107773f0a83dSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, NCURSES_PAIRS_T); /* implemented:SP_FUNC */
107806bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */
107906bfebdeSXin LIextern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */
108006bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */
108106bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (SCREEN*); /* implemented:SP_FUNC */
108206bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (SCREEN*); /* implemented:SP_FUNC */
108306bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (SCREEN*, int, const char *, int); /* implemented:SP_FUNC */
108406bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (SCREEN*); /* implemented:SP_FUNC */
108506bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(start_color) (SCREEN*); /* implemented:SP_FUNC */
108606bfebdeSXin LIextern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(termattrs) (SCREEN*); /* implemented:SP_FUNC */
108706bfebdeSXin LIextern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemented:SP_FUNC */
108806bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */
108906bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */
109006bfebdeSXin LIextern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (SCREEN*, bool); /* implemented:SP_FUNC */
109173f0a83dSXin LIextern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_tioctl) (SCREEN*, bool); /* implemented:SP_FUNC */
109206bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype);	/* implemented:SP_FUNC */
109306bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
109406bfebdeSXin LI#if @NCURSES_EXT_FUNCS@
1095aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
109606bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int);	/* implemented:EXT_SP_FUNC */
109706bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int);	/* implemented:EXT_SP_FUNC */
1098aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *);	/* implemented:EXT_SP_FUNC */
1099aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *);	/* implemented:EXT_SP_FUNC */
1100aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int);	/* implemented:EXT_SP_FUNC */
1101aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
1102aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
1103*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*);	/* implemented:EXT_SP_FUNC */
1104aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int);	/* implemented:EXT_SP_FUNC */
1105aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int);	/* implemented:EXT_SP_FUNC */
1106*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_cbreak) (SCREEN*);	/* implemented:EXT_SP_FUNC */
1107*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_echo) (SCREEN*);	/* implemented:EXT_SP_FUNC */
1108*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_nl) (SCREEN*);	/* implemented:EXT_SP_FUNC */
1109*21817992SBaptiste Daroussinextern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_raw) (SCREEN*);	/* implemented:EXT_SP_FUNC */
111006bfebdeSXin LIextern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int);	/* implemented:EXT_SP_FUNC */
111106bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *);	/* implemented:EXT_SP_FUNC */
1112*21817992SBaptiste Daroussinextern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int);	/* implemented:EXT_SP_FUNC */
111306bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool);	/* implemented:EXT_SP_FUNC */
111406bfebdeSXin LIextern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */	/* implemented:EXT_SP_FUNC */
1115aae38d10SBaptiste Daroussinextern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
111606bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int);	/* implemented:EXT_SP_FUNC */
111706bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int);	/* implemented:EXT_SP_FUNC */
111806bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int);	/* implemented:EXT_SP_FUNC */
111906bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_tabsize) (SCREEN*, int);	/* implemented:EXT_SP_FUNC */
112006bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_default_colors) (SCREEN*);	/* implemented:EXT_SP_FUNC */
112106bfebdeSXin LIextern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int);	/* implemented:EXT_SP_FUNC */
112206bfebdeSXin LI#endif
112306bfebdeSXin LI#else
112406bfebdeSXin LI#undef  NCURSES_SP_FUNCS
112506bfebdeSXin LI#define NCURSES_SP_FUNCS 0
112606bfebdeSXin LI#define NCURSES_SP_NAME(name) name
112706bfebdeSXin LI#define NCURSES_SP_OUTC NCURSES_OUTC
112806bfebdeSXin LI#endif
112906bfebdeSXin LI
11300e3d5408SPeter Wemm/* attributes */
11310e3d5408SPeter Wemm
113239f2269fSPeter Wemm#define NCURSES_ATTR_SHIFT       8
113373f0a83dSXin LI#define NCURSES_BITS(mask,shift) (NCURSES_CAST(chtype,(mask)) << ((shift) + NCURSES_ATTR_SHIFT))
11340e3d5408SPeter Wemm
11354a1a9510SRong-En Fan#define A_NORMAL	(@cf_cv_1UL@ - @cf_cv_1UL@)
11360e3d5408SPeter Wemm#define A_ATTRIBUTES	NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0)
11370e3d5408SPeter Wemm#define A_CHARTEXT	(NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@)
11380e3d5408SPeter Wemm#define A_COLOR		NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0)
11390e3d5408SPeter Wemm#define A_STANDOUT	NCURSES_BITS(@cf_cv_1UL@,8)
11400e3d5408SPeter Wemm#define A_UNDERLINE	NCURSES_BITS(@cf_cv_1UL@,9)
11410e3d5408SPeter Wemm#define A_REVERSE	NCURSES_BITS(@cf_cv_1UL@,10)
11420e3d5408SPeter Wemm#define A_BLINK		NCURSES_BITS(@cf_cv_1UL@,11)
11430e3d5408SPeter Wemm#define A_DIM		NCURSES_BITS(@cf_cv_1UL@,12)
11440e3d5408SPeter Wemm#define A_BOLD		NCURSES_BITS(@cf_cv_1UL@,13)
11450e3d5408SPeter Wemm#define A_ALTCHARSET	NCURSES_BITS(@cf_cv_1UL@,14)
11460e3d5408SPeter Wemm#define A_INVIS		NCURSES_BITS(@cf_cv_1UL@,15)
11470e3d5408SPeter Wemm#define A_PROTECT	NCURSES_BITS(@cf_cv_1UL@,16)
11480e3d5408SPeter Wemm#define A_HORIZONTAL	NCURSES_BITS(@cf_cv_1UL@,17)
11490e3d5408SPeter Wemm#define A_LEFT		NCURSES_BITS(@cf_cv_1UL@,18)
11500e3d5408SPeter Wemm#define A_LOW		NCURSES_BITS(@cf_cv_1UL@,19)
11510e3d5408SPeter Wemm#define A_RIGHT		NCURSES_BITS(@cf_cv_1UL@,20)
11520e3d5408SPeter Wemm#define A_TOP		NCURSES_BITS(@cf_cv_1UL@,21)
11530e3d5408SPeter Wemm#define A_VERTICAL	NCURSES_BITS(@cf_cv_1UL@,22)
11540e3d5408SPeter Wemm
115573f0a83dSXin LI#if @NCURSES_EXT_FUNCS@
115673f0a83dSXin LI#define A_ITALIC	NCURSES_BITS(@cf_cv_1UL@,23)	/* ncurses extension */
115773f0a83dSXin LI#endif
115873f0a83dSXin LI
11594a1a9510SRong-En Fan/*
11604a1a9510SRong-En Fan * Most of the pseudo functions are macros that either provide compatibility
11614a1a9510SRong-En Fan * with older versions of curses, or provide inline functionality to improve
11624a1a9510SRong-En Fan * performance.
11634a1a9510SRong-En Fan */
11640e3d5408SPeter Wemm
11650e3d5408SPeter Wemm/*
11664a1a9510SRong-En Fan * These pseudo functions are always implemented as macros:
11670e3d5408SPeter Wemm */
11684a1a9510SRong-En Fan
11694a1a9510SRong-En Fan#define getyx(win,y,x)		(y = getcury(win), x = getcurx(win))
11704a1a9510SRong-En Fan#define getbegyx(win,y,x)	(y = getbegy(win), x = getbegx(win))
11714a1a9510SRong-En Fan#define getmaxyx(win,y,x)	(y = getmaxy(win), x = getmaxx(win))
11724a1a9510SRong-En Fan#define getparyx(win,y,x)	(y = getpary(win), x = getparx(win))
11734a1a9510SRong-En Fan
1174aa59d4d4SRong-En Fan#define getsyx(y,x) do { if (newscr) { \
1175aa59d4d4SRong-En Fan			     if (is_leaveok(newscr)) \
11765ca44d1cSRong-En Fan				(y) = (x) = -1; \
11775ca44d1cSRong-En Fan			     else \
11785ca44d1cSRong-En Fan				 getyx(newscr,(y), (x)); \
1179aa59d4d4SRong-En Fan			} \
11804a1a9510SRong-En Fan		    } while(0)
11815ca44d1cSRong-En Fan
1182aa59d4d4SRong-En Fan#define setsyx(y,x) do { if (newscr) { \
1183aa59d4d4SRong-En Fan			    if ((y) == -1 && (x) == -1) \
11845ca44d1cSRong-En Fan				leaveok(newscr, TRUE); \
11855ca44d1cSRong-En Fan			    else { \
11865ca44d1cSRong-En Fan				leaveok(newscr, FALSE); \
11875ca44d1cSRong-En Fan				wmove(newscr, (y), (x)); \
11885ca44d1cSRong-En Fan			    } \
1189aa59d4d4SRong-En Fan			} \
11904a1a9510SRong-En Fan		    } while(0)
11914a1a9510SRong-En Fan
11924a1a9510SRong-En Fan#ifndef NCURSES_NOMACROS
11934a1a9510SRong-En Fan
11944a1a9510SRong-En Fan/*
11954a1a9510SRong-En Fan * These miscellaneous pseudo functions are provided for compatibility:
11964a1a9510SRong-En Fan */
11974a1a9510SRong-En Fan
11980e3d5408SPeter Wemm#define wgetstr(w, s)		wgetnstr(w, s, -1)
119973f0a83dSXin LI#define getnstr(s, n)		wgetnstr(stdscr, s, (n))
12000e3d5408SPeter Wemm
12010e3d5408SPeter Wemm#define setterm(term)		setupterm(term, 1, (int *)0)
12020e3d5408SPeter Wemm
12030e3d5408SPeter Wemm#define fixterm()		reset_prog_mode()
12040e3d5408SPeter Wemm#define resetterm()		reset_shell_mode()
12050e3d5408SPeter Wemm#define saveterm()		def_prog_mode()
12060e3d5408SPeter Wemm#define crmode()		cbreak()
12070e3d5408SPeter Wemm#define nocrmode()		nocbreak()
12080e3d5408SPeter Wemm#define gettmode()
12090e3d5408SPeter Wemm
12100e3d5408SPeter Wemm/* It seems older SYSV curses versions define these */
12115ca44d1cSRong-En Fan#if !NCURSES_OPAQUE
1212aae38d10SBaptiste Daroussin#define getattrs(win)		NCURSES_CAST(int, NCURSES_OK_ADDR(win) ? (win)->_attrs : A_NORMAL)
1213aae38d10SBaptiste Daroussin#define getcurx(win)		(NCURSES_OK_ADDR(win) ? (win)->_curx : ERR)
1214aae38d10SBaptiste Daroussin#define getcury(win)		(NCURSES_OK_ADDR(win) ? (win)->_cury : ERR)
1215aae38d10SBaptiste Daroussin#define getbegx(win)		(NCURSES_OK_ADDR(win) ? (win)->_begx : ERR)
1216aae38d10SBaptiste Daroussin#define getbegy(win)		(NCURSES_OK_ADDR(win) ? (win)->_begy : ERR)
1217aae38d10SBaptiste Daroussin#define getmaxx(win)		(NCURSES_OK_ADDR(win) ? ((win)->_maxx + 1) : ERR)
1218aae38d10SBaptiste Daroussin#define getmaxy(win)		(NCURSES_OK_ADDR(win) ? ((win)->_maxy + 1) : ERR)
1219aae38d10SBaptiste Daroussin#define getparx(win)		(NCURSES_OK_ADDR(win) ? (win)->_parx : ERR)
1220aae38d10SBaptiste Daroussin#define getpary(win)		(NCURSES_OK_ADDR(win) ? (win)->_pary : ERR)
12215ca44d1cSRong-En Fan#endif /* NCURSES_OPAQUE */
12220e3d5408SPeter Wemm
12230e3d5408SPeter Wemm#define wstandout(win)		(wattrset(win,A_STANDOUT))
12240e3d5408SPeter Wemm#define wstandend(win)		(wattrset(win,A_NORMAL))
12250e3d5408SPeter Wemm
12264a1a9510SRong-En Fan#define wattron(win,at)		wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
12274a1a9510SRong-En Fan#define wattroff(win,at)	wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
12284a1a9510SRong-En Fan
12295ca44d1cSRong-En Fan#if !NCURSES_OPAQUE
1230aae38d10SBaptiste Daroussin#if NCURSES_WATTR_MACROS
123173f0a83dSXin LI#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
1232aae38d10SBaptiste Daroussin#define wattrset(win,at) \
1233aae38d10SBaptiste Daroussin	(NCURSES_OK_ADDR(win) \
1234aae38d10SBaptiste Daroussin	  ? ((win)->_color = NCURSES_CAST(int, PAIR_NUMBER(at)), \
123506bfebdeSXin LI	     (win)->_attrs = NCURSES_CAST(attr_t, at), \
123606bfebdeSXin LI	     OK) \
123706bfebdeSXin LI	  : ERR)
12384a1a9510SRong-En Fan#else
1239aae38d10SBaptiste Daroussin#define wattrset(win,at) \
1240aae38d10SBaptiste Daroussin	(NCURSES_OK_ADDR(win) \
124106bfebdeSXin LI	  ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \
124206bfebdeSXin LI	     OK) \
124306bfebdeSXin LI	  : ERR)
12444a1a9510SRong-En Fan#endif
1245aae38d10SBaptiste Daroussin#endif /* NCURSES_WATTR_MACROS */
12465ca44d1cSRong-En Fan#endif /* NCURSES_OPAQUE */
12470e3d5408SPeter Wemm
12480e3d5408SPeter Wemm#define scroll(win)		wscrl(win,1)
12490e3d5408SPeter Wemm
12500e3d5408SPeter Wemm#define touchwin(win)		wtouchln((win), 0, getmaxy(win), 1)
12510e3d5408SPeter Wemm#define touchline(win, s, c)	wtouchln((win), s, c, 1)
12520e3d5408SPeter Wemm#define untouchwin(win)		wtouchln((win), 0, getmaxy(win), 0)
12530e3d5408SPeter Wemm
12540e3d5408SPeter Wemm#define box(win, v, h)		wborder(win, v, v, h, h, 0, 0, 0, 0)
12550e3d5408SPeter Wemm#define border(ls, rs, ts, bs, tl, tr, bl, br)	wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
125673f0a83dSXin LI#define hline(ch, n)		whline(stdscr, ch, (n))
125773f0a83dSXin LI#define vline(ch, n)		wvline(stdscr, ch, (n))
12580e3d5408SPeter Wemm
12590e3d5408SPeter Wemm#define winstr(w, s)		winnstr(w, s, -1)
12600e3d5408SPeter Wemm#define winchstr(w, s)		winchnstr(w, s, -1)
12610e3d5408SPeter Wemm#define winsstr(w, s)		winsnstr(w, s, -1)
12620e3d5408SPeter Wemm
12635ca44d1cSRong-En Fan#if !NCURSES_OPAQUE
1264aae38d10SBaptiste Daroussin#define redrawwin(win)		wredrawln(win, 0, (NCURSES_OK_ADDR(win) ? (win)->_maxy+1 : -1))
12655ca44d1cSRong-En Fan#endif /* NCURSES_OPAQUE */
12665ca44d1cSRong-En Fan
12670e3d5408SPeter Wemm#define waddstr(win,str)	waddnstr(win,str,-1)
12680e3d5408SPeter Wemm#define waddchstr(win,str)	waddchnstr(win,str,-1)
12690e3d5408SPeter Wemm
12700e3d5408SPeter Wemm/*
12714a1a9510SRong-En Fan * These apply to the first 256 color pairs.
12724a1a9510SRong-En Fan */
1273aae38d10SBaptiste Daroussin#define COLOR_PAIR(n)	(NCURSES_BITS((n), 0) & A_COLOR)
127473f0a83dSXin LI#define PAIR_NUMBER(a)	(NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
12754a1a9510SRong-En Fan
12764a1a9510SRong-En Fan/*
12770e3d5408SPeter Wemm * pseudo functions for standard screen
12780e3d5408SPeter Wemm */
12790e3d5408SPeter Wemm
128073f0a83dSXin LI#define addch(ch)		waddch(stdscr,(ch))
128173f0a83dSXin LI#define addchnstr(str,n)	waddchnstr(stdscr,(str),(n))
128273f0a83dSXin LI#define addchstr(str)		waddchstr(stdscr,(str))
128373f0a83dSXin LI#define addnstr(str,n)		waddnstr(stdscr,(str),(n))
128473f0a83dSXin LI#define addstr(str)		waddnstr(stdscr,(str),-1)
128573f0a83dSXin LI#define attr_get(ap,cp,o)	wattr_get(stdscr,(ap),(cp),(o))
128673f0a83dSXin LI#define attr_off(a,o)		wattr_off(stdscr,(a),(o))
128773f0a83dSXin LI#define attr_on(a,o)		wattr_on(stdscr,(a),(o))
128873f0a83dSXin LI#define attr_set(a,c,o)		wattr_set(stdscr,(a),(c),(o))
1289aae38d10SBaptiste Daroussin#define attroff(at)		wattroff(stdscr,(at))
1290aae38d10SBaptiste Daroussin#define attron(at)		wattron(stdscr,(at))
1291aae38d10SBaptiste Daroussin#define attrset(at)		wattrset(stdscr,(at))
129273f0a83dSXin LI#define bkgd(ch)		wbkgd(stdscr,(ch))
129373f0a83dSXin LI#define bkgdset(ch)		wbkgdset(stdscr,(ch))
129473f0a83dSXin LI#define chgat(n,a,c,o)		wchgat(stdscr,(n),(a),(c),(o))
12950e3d5408SPeter Wemm#define clear()			wclear(stdscr)
12960e3d5408SPeter Wemm#define clrtobot()		wclrtobot(stdscr)
12970e3d5408SPeter Wemm#define clrtoeol()		wclrtoeol(stdscr)
129873f0a83dSXin LI#define color_set(c,o)		wcolor_set(stdscr,(c),(o))
12990e3d5408SPeter Wemm#define delch()			wdelch(stdscr)
13000e3d5408SPeter Wemm#define deleteln()		winsdelln(stdscr,-1)
130173f0a83dSXin LI#define echochar(c)		wechochar(stdscr,(c))
13020e3d5408SPeter Wemm#define erase()			werase(stdscr)
13030e3d5408SPeter Wemm#define getch()			wgetch(stdscr)
130473f0a83dSXin LI#define getstr(str)		wgetstr(stdscr,(str))
13050e3d5408SPeter Wemm#define inch()			winch(stdscr)
130673f0a83dSXin LI#define inchnstr(s,n)		winchnstr(stdscr,(s),(n))
130773f0a83dSXin LI#define inchstr(s)		winchstr(stdscr,(s))
130873f0a83dSXin LI#define innstr(s,n)		winnstr(stdscr,(s),(n))
130973f0a83dSXin LI#define insch(c)		winsch(stdscr,(c))
131073f0a83dSXin LI#define insdelln(n)		winsdelln(stdscr,(n))
13110e3d5408SPeter Wemm#define insertln()		winsdelln(stdscr,1)
131273f0a83dSXin LI#define insnstr(s,n)		winsnstr(stdscr,(s),(n))
131373f0a83dSXin LI#define insstr(s)		winsstr(stdscr,(s))
131473f0a83dSXin LI#define instr(s)		winstr(stdscr,(s))
131573f0a83dSXin LI#define move(y,x)		wmove(stdscr,(y),(x))
13160e3d5408SPeter Wemm#define refresh()		wrefresh(stdscr)
131773f0a83dSXin LI#define scrl(n)			wscrl(stdscr,(n))
131873f0a83dSXin LI#define setscrreg(t,b)		wsetscrreg(stdscr,(t),(b))
13190e3d5408SPeter Wemm#define standend()		wstandend(stdscr)
13200e3d5408SPeter Wemm#define standout()		wstandout(stdscr)
132173f0a83dSXin LI#define timeout(delay)		wtimeout(stdscr,(delay))
13220e3d5408SPeter Wemm#define wdeleteln(win)		winsdelln(win,-1)
13230e3d5408SPeter Wemm#define winsertln(win)		winsdelln(win,1)
13240e3d5408SPeter Wemm
13250e3d5408SPeter Wemm/*
13260e3d5408SPeter Wemm * mv functions
13270e3d5408SPeter Wemm */
13280e3d5408SPeter Wemm
132973f0a83dSXin LI#define mvwaddch(win,y,x,ch)		(wmove((win),(y),(x)) == ERR ? ERR : waddch((win),(ch)))
133073f0a83dSXin LI#define mvwaddchnstr(win,y,x,str,n)	(wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),(n)))
133173f0a83dSXin LI#define mvwaddchstr(win,y,x,str)	(wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1))
133273f0a83dSXin LI#define mvwaddnstr(win,y,x,str,n)	(wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n)))
133373f0a83dSXin LI#define mvwaddstr(win,y,x,str)		(wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1))
133473f0a83dSXin LI#define mvwchgat(win,y,x,n,a,c,o)	(wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o)))
1335aae38d10SBaptiste Daroussin#define mvwdelch(win,y,x)		(wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
133673f0a83dSXin LI#define mvwgetch(win,y,x)		(wmove((win),(y),(x)) == ERR ? ERR : wgetch(win))
133773f0a83dSXin LI#define mvwgetnstr(win,y,x,str,n)	(wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n)))
133873f0a83dSXin LI#define mvwgetstr(win,y,x,str)		(wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str)))
133973f0a83dSXin LI#define mvwhline(win,y,x,c,n)		(wmove((win),(y),(x)) == ERR ? ERR : whline((win),(c),(n)))
134073f0a83dSXin LI#define mvwinch(win,y,x)		(wmove((win),(y),(x)) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
134173f0a83dSXin LI#define mvwinchnstr(win,y,x,s,n)	(wmove((win),(y),(x)) == ERR ? ERR : winchnstr((win),(s),(n)))
134273f0a83dSXin LI#define mvwinchstr(win,y,x,s)		(wmove((win),(y),(x)) == ERR ? ERR : winchstr((win),(s)))
134373f0a83dSXin LI#define mvwinnstr(win,y,x,s,n)		(wmove((win),(y),(x)) == ERR ? ERR : winnstr((win),(s),(n)))
134473f0a83dSXin LI#define mvwinsch(win,y,x,c)		(wmove((win),(y),(x)) == ERR ? ERR : winsch((win),(c)))
134573f0a83dSXin LI#define mvwinsnstr(win,y,x,s,n)		(wmove((win),(y),(x)) == ERR ? ERR : winsnstr((win),(s),(n)))
134673f0a83dSXin LI#define mvwinsstr(win,y,x,s)		(wmove((win),(y),(x)) == ERR ? ERR : winsstr((win),(s)))
134773f0a83dSXin LI#define mvwinstr(win,y,x,s)		(wmove((win),(y),(x)) == ERR ? ERR : winstr((win),(s)))
134873f0a83dSXin LI#define mvwvline(win,y,x,c,n)		(wmove((win),(y),(x)) == ERR ? ERR : wvline((win),(c),(n)))
13490e3d5408SPeter Wemm
135073f0a83dSXin LI#define mvaddch(y,x,ch)			mvwaddch(stdscr,(y),(x),(ch))
135173f0a83dSXin LI#define mvaddchnstr(y,x,str,n)		mvwaddchnstr(stdscr,(y),(x),(str),(n))
135273f0a83dSXin LI#define mvaddchstr(y,x,str)		mvwaddchstr(stdscr,(y),(x),(str))
135373f0a83dSXin LI#define mvaddnstr(y,x,str,n)		mvwaddnstr(stdscr,(y),(x),(str),(n))
135473f0a83dSXin LI#define mvaddstr(y,x,str)		mvwaddstr(stdscr,(y),(x),(str))
135573f0a83dSXin LI#define mvchgat(y,x,n,a,c,o)		mvwchgat(stdscr,(y),(x),(n),(a),(c),(o))
135673f0a83dSXin LI#define mvdelch(y,x)			mvwdelch(stdscr,(y),(x))
135773f0a83dSXin LI#define mvgetch(y,x)			mvwgetch(stdscr,(y),(x))
135873f0a83dSXin LI#define mvgetnstr(y,x,str,n)		mvwgetnstr(stdscr,(y),(x),(str),(n))
135973f0a83dSXin LI#define mvgetstr(y,x,str)		mvwgetstr(stdscr,(y),(x),(str))
136073f0a83dSXin LI#define mvhline(y,x,c,n)		mvwhline(stdscr,(y),(x),(c),(n))
136173f0a83dSXin LI#define mvinch(y,x)			mvwinch(stdscr,(y),(x))
136273f0a83dSXin LI#define mvinchnstr(y,x,s,n)		mvwinchnstr(stdscr,(y),(x),(s),(n))
136373f0a83dSXin LI#define mvinchstr(y,x,s)		mvwinchstr(stdscr,(y),(x),(s))
136473f0a83dSXin LI#define mvinnstr(y,x,s,n)		mvwinnstr(stdscr,(y),(x),(s),(n))
136573f0a83dSXin LI#define mvinsch(y,x,c)			mvwinsch(stdscr,(y),(x),(c))
136673f0a83dSXin LI#define mvinsnstr(y,x,s,n)		mvwinsnstr(stdscr,(y),(x),(s),(n))
136773f0a83dSXin LI#define mvinsstr(y,x,s)			mvwinsstr(stdscr,(y),(x),(s))
136873f0a83dSXin LI#define mvinstr(y,x,s)			mvwinstr(stdscr,(y),(x),(s))
136973f0a83dSXin LI#define mvvline(y,x,c,n)		mvwvline(stdscr,(y),(x),(c),(n))
13700e3d5408SPeter Wemm
13710e3d5408SPeter Wemm/*
13724a1a9510SRong-En Fan * Some wide-character functions can be implemented without the extensions.
13730e3d5408SPeter Wemm */
13745ca44d1cSRong-En Fan#if !NCURSES_OPAQUE
1375aae38d10SBaptiste Daroussin#define getbkgd(win)                    (NCURSES_OK_ADDR(win) ? ((win)->_bkgd) : 0)
13765ca44d1cSRong-En Fan#endif /* NCURSES_OPAQUE */
13770e3d5408SPeter Wemm
13780e3d5408SPeter Wemm#define slk_attr_off(a,v)		((v) ? ERR : slk_attroff(a))
13790e3d5408SPeter Wemm#define slk_attr_on(a,v)		((v) ? ERR : slk_attron(a))
13800e3d5408SPeter Wemm
13815ca44d1cSRong-En Fan#if !NCURSES_OPAQUE
1382aae38d10SBaptiste Daroussin#if NCURSES_WATTR_MACROS
138373f0a83dSXin LI#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
1384aae38d10SBaptiste Daroussin#define wattr_set(win,a,p,opts) \
1385aae38d10SBaptiste Daroussin	(NCURSES_OK_ADDR(win) \
1386aae38d10SBaptiste Daroussin	 ? ((void)((win)->_attrs = ((a) & ~A_COLOR), \
1387aae38d10SBaptiste Daroussin		   (win)->_color = (opts) ? *(int *)(opts) : (p)), \
1388aae38d10SBaptiste Daroussin	    OK) \
1389aae38d10SBaptiste Daroussin	 : ERR)
1390aae38d10SBaptiste Daroussin#define wattr_get(win,a,p,opts) \
1391aae38d10SBaptiste Daroussin	(NCURSES_OK_ADDR(win) \
1392aae38d10SBaptiste Daroussin	 ? ((void)(NCURSES_OK_ADDR(a) \
1393aae38d10SBaptiste Daroussin		   ? (*(a) = (win)->_attrs) \
139473f0a83dSXin LI		   : OK), \
1395aae38d10SBaptiste Daroussin	    (void)(NCURSES_OK_ADDR(p) \
1396aae38d10SBaptiste Daroussin		   ? (*(p) = (NCURSES_PAIRS_T) (win)->_color) \
139773f0a83dSXin LI		   : OK), \
1398aae38d10SBaptiste Daroussin	    (void)(NCURSES_OK_ADDR(opts) \
1399aae38d10SBaptiste Daroussin		   ? (*(int *)(opts) = (win)->_color) \
1400aae38d10SBaptiste Daroussin		   : OK), \
1401aae38d10SBaptiste Daroussin	    OK) \
1402aae38d10SBaptiste Daroussin	 : ERR)
1403aae38d10SBaptiste Daroussin#else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
1404aae38d10SBaptiste Daroussin#define wattr_set(win,a,p,opts) \
1405aae38d10SBaptiste Daroussin	 (NCURSES_OK_ADDR(win) \
1406aae38d10SBaptiste Daroussin	  ? ((void)((win)->_attrs = (((a) & ~A_COLOR) | \
1407aae38d10SBaptiste Daroussin				     (attr_t)COLOR_PAIR(p))), \
1408aae38d10SBaptiste Daroussin	     OK) \
1409aae38d10SBaptiste Daroussin	  : ERR)
1410aae38d10SBaptiste Daroussin#define wattr_get(win,a,p,opts) \
1411aae38d10SBaptiste Daroussin	(NCURSES_OK_ADDR(win) \
1412aae38d10SBaptiste Daroussin	 ? ((void)(NCURSES_OK_ADDR(a) \
1413aae38d10SBaptiste Daroussin		   ? (*(a) = (win)->_attrs) \
1414aae38d10SBaptiste Daroussin		   : OK), \
1415aae38d10SBaptiste Daroussin	    (void)(NCURSES_OK_ADDR(p) \
1416aae38d10SBaptiste Daroussin		   ? (*(p) = (NCURSES_PAIRS_T) PAIR_NUMBER((win)->_attrs)) \
1417aae38d10SBaptiste Daroussin		   : OK), \
1418aae38d10SBaptiste Daroussin	    OK) \
1419aae38d10SBaptiste Daroussin	 : ERR)
1420aae38d10SBaptiste Daroussin#endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
1421aae38d10SBaptiste Daroussin#endif /* NCURSES_WATTR_MACROS */
14225ca44d1cSRong-En Fan#endif /* NCURSES_OPAQUE */
14230e3d5408SPeter Wemm
14240e3d5408SPeter Wemm/*
14255ca44d1cSRong-En Fan * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use
14260e3d5408SPeter Wemm * varargs.h.  It adds new calls vw_printw/vw_scanw, which are supposed to
14270e3d5408SPeter Wemm * use POSIX stdarg.h.  The ncurses versions of vwprintw/vwscanw already
14280e3d5408SPeter Wemm * use stdarg.h, so...
14290e3d5408SPeter Wemm */
1430aae38d10SBaptiste Daroussin/* define vw_printw		vwprintw */
1431aae38d10SBaptiste Daroussin/* define vw_scanw		vwscanw */
14320e3d5408SPeter Wemm
14330e3d5408SPeter Wemm/*
143439f2269fSPeter Wemm * Export fallback function for use in C++ binding.
143539f2269fSPeter Wemm */
143639f2269fSPeter Wemm#if !@HAVE_VSSCANF@
143739f2269fSPeter Wemm#define vsscanf(a,b,c) _nc_vsscanf(a,b,c)
143839f2269fSPeter WemmNCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
143939f2269fSPeter Wemm#endif
144039f2269fSPeter Wemm
14415ca44d1cSRong-En Fan/*
14425ca44d1cSRong-En Fan * These macros are extensions - not in X/Open Curses.
14435ca44d1cSRong-En Fan */
14445ca44d1cSRong-En Fan#if @NCURSES_EXT_FUNCS@
14455ca44d1cSRong-En Fan#if !NCURSES_OPAQUE
1446aae38d10SBaptiste Daroussin#define is_cleared(win)		(NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE)
1447aae38d10SBaptiste Daroussin#define is_idcok(win)		(NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE)
1448aae38d10SBaptiste Daroussin#define is_idlok(win)		(NCURSES_OK_ADDR(win) ? (win)->_idlok : FALSE)
1449aae38d10SBaptiste Daroussin#define is_immedok(win)		(NCURSES_OK_ADDR(win) ? (win)->_immed : FALSE)
1450aae38d10SBaptiste Daroussin#define is_keypad(win)		(NCURSES_OK_ADDR(win) ? (win)->_use_keypad : FALSE)
1451aae38d10SBaptiste Daroussin#define is_leaveok(win)		(NCURSES_OK_ADDR(win) ? (win)->_leaveok : FALSE)
1452aae38d10SBaptiste Daroussin#define is_nodelay(win)		(NCURSES_OK_ADDR(win) ? ((win)->_delay == 0) : FALSE)
1453aae38d10SBaptiste Daroussin#define is_notimeout(win)	(NCURSES_OK_ADDR(win) ? (win)->_notimeout : FALSE)
1454aae38d10SBaptiste Daroussin#define is_pad(win)		(NCURSES_OK_ADDR(win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
1455aae38d10SBaptiste Daroussin#define is_scrollok(win)	(NCURSES_OK_ADDR(win) ? (win)->_scroll : FALSE)
1456aae38d10SBaptiste Daroussin#define is_subwin(win)		(NCURSES_OK_ADDR(win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
1457aae38d10SBaptiste Daroussin#define is_syncok(win)		(NCURSES_OK_ADDR(win) ? (win)->_sync : FALSE)
1458aae38d10SBaptiste Daroussin#define wgetdelay(win)		(NCURSES_OK_ADDR(win) ? (win)->_delay : 0)
1459aae38d10SBaptiste Daroussin#define wgetparent(win)		(NCURSES_OK_ADDR(win) ? (win)->_parent : 0)
1460aae38d10SBaptiste Daroussin#define wgetscrreg(win,t,b)	(NCURSES_OK_ADDR(win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
14615ca44d1cSRong-En Fan#endif
14625ca44d1cSRong-En Fan#endif
14635ca44d1cSRong-En Fan
1464aae38d10SBaptiste Daroussin/*
1465aae38d10SBaptiste Daroussin * X/Open says this returns a bool; SVr4 also checked for out-of-range line.
1466aae38d10SBaptiste Daroussin * The macro provides compatibility:
1467aae38d10SBaptiste Daroussin */
1468aae38d10SBaptiste Daroussin#define is_linetouched(w,l) ((!(w) || ((l) > getmaxy(w)) || ((l) < 0)) ? ERR : (is_linetouched)((w),(l)))
1469aae38d10SBaptiste Daroussin
14704a1a9510SRong-En Fan#endif /* NCURSES_NOMACROS */
14714a1a9510SRong-En Fan
147239f2269fSPeter Wemm/*
14735ca44d1cSRong-En Fan * Public variables.
14745ca44d1cSRong-En Fan *
14755ca44d1cSRong-En Fan * Notes:
14765ca44d1cSRong-En Fan *	a. ESCDELAY was an undocumented feature under AIX curses.
14775ca44d1cSRong-En Fan *	   It gives the ESC expire time in milliseconds.
14785ca44d1cSRong-En Fan *	b. ttytype is needed for backward compatibility
14795ca44d1cSRong-En Fan */
148006bfebdeSXin LI#if NCURSES_REENTRANT
14815ca44d1cSRong-En Fan
14825ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(WINDOW *, curscr);
14835ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(WINDOW *, newscr);
14845ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(WINDOW *, stdscr);
14855ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(char *, ttytype);
14865ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(int, COLORS);
14875ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(int, COLOR_PAIRS);
14885ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(int, COLS);
14895ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(int, ESCDELAY);
14905ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(int, LINES);
14915ca44d1cSRong-En FanNCURSES_WRAPPED_VAR(int, TABSIZE);
14925ca44d1cSRong-En Fan
14935ca44d1cSRong-En Fan#define curscr      NCURSES_PUBLIC_VAR(curscr())
14945ca44d1cSRong-En Fan#define newscr      NCURSES_PUBLIC_VAR(newscr())
14955ca44d1cSRong-En Fan#define stdscr      NCURSES_PUBLIC_VAR(stdscr())
14965ca44d1cSRong-En Fan#define ttytype     NCURSES_PUBLIC_VAR(ttytype())
14975ca44d1cSRong-En Fan#define COLORS      NCURSES_PUBLIC_VAR(COLORS())
14985ca44d1cSRong-En Fan#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS())
14995ca44d1cSRong-En Fan#define COLS        NCURSES_PUBLIC_VAR(COLS())
15005ca44d1cSRong-En Fan#define ESCDELAY    NCURSES_PUBLIC_VAR(ESCDELAY())
15015ca44d1cSRong-En Fan#define LINES       NCURSES_PUBLIC_VAR(LINES())
15025ca44d1cSRong-En Fan#define TABSIZE     NCURSES_PUBLIC_VAR(TABSIZE())
15035ca44d1cSRong-En Fan
15045ca44d1cSRong-En Fan#else
15055ca44d1cSRong-En Fan
15065ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(WINDOW *) curscr;
15075ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(WINDOW *) newscr;
15085ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(WINDOW *) stdscr;
15095ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(char) ttytype[];
15105ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(int) COLORS;
15115ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;
15125ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(int) COLS;
15135ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(int) ESCDELAY;
15145ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(int) LINES;
15155ca44d1cSRong-En Fanextern NCURSES_EXPORT_VAR(int) TABSIZE;
15165ca44d1cSRong-En Fan
15175ca44d1cSRong-En Fan#endif
15185ca44d1cSRong-En Fan
15195ca44d1cSRong-En Fan/*
15200e3d5408SPeter Wemm * Pseudo-character tokens outside ASCII range.  The curses wgetch() function
15210e3d5408SPeter Wemm * will return any given one of these only if the corresponding k- capability
15220e3d5408SPeter Wemm * is defined in your terminal's terminfo entry.
152339f2269fSPeter Wemm *
152439f2269fSPeter Wemm * Some keys (KEY_A1, etc) are arranged like this:
152539f2269fSPeter Wemm *	a1     up    a3
152639f2269fSPeter Wemm *	left   b2    right
152739f2269fSPeter Wemm *	c1     down  c3
152839f2269fSPeter Wemm *
152939f2269fSPeter Wemm * A few key codes do not depend upon the terminfo entry.
15300e3d5408SPeter Wemm */
15310e3d5408SPeter Wemm#define KEY_CODE_YES	0400		/* A wchar_t contains a key code */
15320e3d5408SPeter Wemm#define KEY_MIN		0401		/* Minimum curses key */
15330e3d5408SPeter Wemm#define KEY_BREAK	0401		/* Break key (unreliable) */
15340e3d5408SPeter Wemm#define KEY_SRESET	0530		/* Soft (partial) reset (unreliable) */
15350e3d5408SPeter Wemm#define KEY_RESET	0531		/* Reset or hard reset (unreliable) */
1536