1999-08-23 21:06:48 -04:00
/****************************************************************************
2020-02-19 11:58:06 -05:00
* Copyright 2018 - 2019 , 2020 Thomas E . Dickey *
* Copyright 1998 - 2016 , 2017 Free Software Foundation , Inc . *
1999-08-23 21:06:48 -04:00
* *
* Permission is hereby granted , free of charge , to any person obtaining a *
* copy of this software and associated documentation files ( the *
* " Software " ) , to deal in the Software without restriction , including *
* without limitation the rights to use , copy , modify , merge , publish , *
* distribute , distribute with modifications , sublicense , and / or sell *
* copies of the Software , and to permit persons to whom the Software is *
* furnished to do so , subject to the following conditions : *
* *
* The above copyright notice and this permission notice shall be included *
* in all copies or substantial portions of the Software . *
* *
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS *
* OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
* MERCHANTABILITY , FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . *
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , *
* DAMAGES OR OTHER LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR *
* OTHERWISE , ARISING FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
* THE USE OR OTHER DEALINGS IN THE SOFTWARE . *
* *
* Except as contained in this notice , the name ( s ) of the above copyright *
* holders shall not be used in advertising or otherwise to promote the *
* sale , use or other dealings in this Software without prior written *
* authorization . *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/****************************************************************************
* Author : Zeyd M . Ben - Halim < zmbenhal @ netcom . com > 1992 , 1995 *
* and : Eric S . Raymond < esr @ snark . thyrsus . com > *
2007-01-20 02:32:02 -05:00
* and : Thomas E . Dickey 1996 - on *
1999-08-23 21:06:48 -04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2020-02-19 11:58:06 -05:00
/* $Id: curses.h.in,v 1.266 2020/02/08 10:51:53 tom Exp $ */
1999-08-23 21:06:48 -04:00
# ifndef __NCURSES_H
# define __NCURSES_H
# define CURSES 1
# define CURSES_H 1
/* These are defined only in curses.h, and are used for conditional compiles */
# define NCURSES_VERSION_MAJOR @NCURSES_MAJOR@
# define NCURSES_VERSION_MINOR @NCURSES_MINOR@
# define NCURSES_VERSION_PATCH @NCURSES_PATCH@
/* This is defined in more than one ncurses header, for identification */
# undef NCURSES_VERSION
# define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@"
2007-01-20 02:32:02 -05:00
/*
* Identify the mouse encoding version .
*/
# define NCURSES_MOUSE_VERSION @NCURSES_MOUSE_VERSION@
/*
* Definitions to facilitate DLL ' s .
*/
2001-05-17 04:21:06 -04:00
# include <ncurses_dll.h>
2020-02-07 03:36:41 -05:00
# if @HAVE_STDINT_H@
# include <stdint.h>
# endif
2007-01-20 02:32:02 -05:00
/*
* User - definable tweak to disable the include of < stdbool . h > .
*/
# ifndef NCURSES_ENABLE_STDBOOL_H
# define NCURSES_ENABLE_STDBOOL_H @cf_cv_header_stdbool_h@
# endif
/*
* NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
* configured using - - disable - macros .
*/
1999-08-23 21:06:48 -04:00
# ifndef NCURSES_ATTR_T
# define NCURSES_ATTR_T int
# endif
2007-01-20 02:32:02 -05:00
/*
* Expands to ' const ' if ncurses is configured using - - enable - const . Note that
* doing so makes it incompatible with other implementations of X / Open Curses .
*/
1999-08-23 21:06:48 -04:00
# undef NCURSES_CONST
# define NCURSES_CONST @NCURSES_CONST@
2007-01-20 02:32:02 -05:00
# undef NCURSES_INLINE
# define NCURSES_INLINE @NCURSES_INLINE@
/*
2020-02-07 03:36:41 -05:00
* The standard type used for color values , and for color - pairs . The latter
2014-02-28 19:40:26 -05:00
* allows the curses library to enumerate the combinations of foreground and
* background colors used by an application , and is normally the product of the
* total foreground and background colors .
*
* X / Open uses " short " for both of these types , ultimately because they are
2020-02-07 03:36:41 -05:00
* numbers from the SVr4 terminal database , which uses 16 - bit signed values .
2007-01-20 02:32:02 -05:00
*/
2000-07-03 05:24:12 -04:00
# undef NCURSES_COLOR_T
# define NCURSES_COLOR_T short
2014-02-28 19:40:26 -05:00
# undef NCURSES_PAIRS_T
# define NCURSES_PAIRS_T short
2007-12-30 06:08:14 -05:00
/*
2020-02-07 03:36:41 -05:00
* Definitions used to make WINDOW and similar structs opaque .
2007-12-30 06:08:14 -05:00
*/
2020-02-07 03:36:41 -05:00
# ifndef NCURSES_INTERNALS
# define NCURSES_OPAQUE @NCURSES_OPAQUE@
# define NCURSES_OPAQUE_FORM @NCURSES_OPAQUE_FORM@
# define NCURSES_OPAQUE_MENU @NCURSES_OPAQUE_MENU@
# define NCURSES_OPAQUE_PANEL @NCURSES_OPAQUE_PANEL@
# endif
/*
* Definition used to optionally suppress wattr * macros to help with the
* transition from ncurses5 to ncurses6 by allowing the header files to
* be shared across development packages for ncursesw in both ABIs .
*/
# ifndef NCURSES_WATTR_MACROS
# define NCURSES_WATTR_MACROS @NCURSES_WATTR_MACROS@
2007-12-30 06:08:14 -05:00
# endif
2014-02-28 14:18:07 -05:00
/*
* The reentrant code relies on the opaque setting , but adds features .
*/
# ifndef NCURSES_REENTRANT
# define NCURSES_REENTRANT @cf_cv_enable_reentrant@
# endif
2020-02-19 11:58:06 -05:00
/*
* In certain environments , we must work around linker problems for data
*/
# undef NCURSES_BROKEN_LINKER
# if @BROKEN_LINKER@
# define NCURSES_BROKEN_LINKER 1
# endif
2014-02-28 14:18:07 -05:00
/*
* Control whether bindings for interop support are added .
*/
# undef NCURSES_INTEROP_FUNCS
# define NCURSES_INTEROP_FUNCS @NCURSES_INTEROP_FUNCS@
2007-01-20 02:32:02 -05:00
/*
* The internal type used for window dimensions .
*/
2000-07-03 05:24:12 -04:00
# undef NCURSES_SIZE_T
2007-12-30 06:08:14 -05:00
# define NCURSES_SIZE_T @NCURSES_SIZE_T@
2000-07-03 05:24:12 -04:00
2007-01-20 02:32:02 -05:00
/*
* Control whether tparm ( ) supports varargs or fixed - parameter list .
*/
# undef NCURSES_TPARM_VARARGS
# define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@
2014-02-28 19:40:26 -05:00
/*
* Control type used for tparm ' s arguments . While X / Open equates long and
* char * values , this is not always workable for 64 - bit platforms .
*/
# undef NCURSES_TPARM_ARG
# define NCURSES_TPARM_ARG @NCURSES_TPARM_ARG@
2020-02-07 03:36:41 -05:00
/*
* Control whether ncurses uses wcwidth ( ) for checking width of line - drawing
* characters .
*/
# undef NCURSES_WCWIDTH_GRAPHICS
# define NCURSES_WCWIDTH_GRAPHICS @NCURSES_WCWIDTH_GRAPHICS@
2007-01-20 02:32:02 -05:00
/*
* NCURSES_CH_T is used in building the library , but not used otherwise in
* this header file , since that would make the normal / wide - character versions
* of the header incompatible .
*/
2002-05-21 01:30:25 -04:00
# undef NCURSES_CH_T
# define NCURSES_CH_T @NCURSES_CH_T@
2007-01-20 02:32:02 -05:00
# if @cf_cv_enable_lp64@ && defined(_LP64)
typedef unsigned chtype ;
typedef unsigned mmask_t ;
# else
2020-02-07 03:36:41 -05:00
typedef @ cf_cv_typeof_chtype @ chtype ;
typedef @ cf_cv_typeof_mmask_t @ mmask_t ;
2007-01-20 02:32:02 -05:00
# endif
1999-08-23 21:06:48 -04:00
2014-02-28 14:18:07 -05:00
/*
* We need FILE , etc . Include this before checking any feature symbols .
*/
1999-08-23 21:06:48 -04:00
# include <stdio.h>
2014-02-28 14:18:07 -05:00
/*
* With XPG4 , you must define _XOPEN_SOURCE_EXTENDED , it is redundant ( or
2014-02-28 19:40:26 -05:00
* conflicting ) when _XOPEN_SOURCE is 500 or greater . If NCURSES_WIDECHAR is
* not already defined , e . g . , if the platform relies upon nonstandard feature
* test macros , define it at this point if the standard feature test macros
* indicate that it should be defined .
2014-02-28 14:18:07 -05:00
*/
2014-02-28 19:40:26 -05:00
# ifndef NCURSES_WIDECHAR
# if defined(_XOPEN_SOURCE_EXTENDED) || (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500))
# define NCURSES_WIDECHAR 1
# else
# define NCURSES_WIDECHAR 0
2014-02-28 14:18:07 -05:00
# endif
2014-02-28 19:40:26 -05:00
# endif /* NCURSES_WIDECHAR */
2014-02-28 14:18:07 -05:00
1999-08-23 21:06:48 -04:00
# include <stdarg.h> /* we need va_list */
2014-02-28 19:40:26 -05:00
# if NCURSES_WIDECHAR
1999-08-23 21:06:48 -04:00
# include <stddef.h> /* we want wchar_t */
2014-02-28 14:18:07 -05:00
# endif
1999-08-23 21:06:48 -04:00
2007-12-30 06:08:14 -05:00
/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also
1999-08-23 21:06:48 -04:00
* implement it . If so , we must use the C + + compiler ' s type to avoid conflict
* with other interfaces .
2002-05-21 01:30:25 -04:00
*
* A further complication is that < stdbool . h > may declare ' bool ' to be a
* different type , such as an enum which is not necessarily compatible with
* C + + . If we have < stdbool . h > , make ' bool ' a macro , so users may # undef it .
* Otherwise , let it remain a typedef to avoid conflicts with other # define ' s .
* In either case , make a typedef for NCURSES_BOOL which can be used if needed
* from either C or C + + .
1999-08-23 21:06:48 -04:00
*/
# undef TRUE
# define TRUE 1
# undef FALSE
# define FALSE 0
2002-05-21 01:30:25 -04:00
typedef @ cf_cv_type_of_bool @ NCURSES_BOOL ;
2007-01-20 02:32:02 -05:00
# if @USE_CXX_BOOL@ /* __cplusplus, etc. */
2002-05-21 01:30:25 -04:00
2007-01-20 02:32:02 -05:00
/* use the C++ compiler's bool type */
# define NCURSES_BOOL bool
2002-05-21 01:30:25 -04:00
2007-01-20 02:32:02 -05:00
# else /* c89, c99, etc. */
2002-05-21 01:30:25 -04:00
2007-01-20 02:32:02 -05:00
# if NCURSES_ENABLE_STDBOOL_H
# include <stdbool.h>
/* use whatever the C compiler decides bool really is */
# define NCURSES_BOOL bool
2002-05-21 01:30:25 -04:00
# else
2007-01-20 02:32:02 -05:00
/* there is no predefined bool - use our own */
# undef bool
# define bool NCURSES_BOOL
1999-08-23 21:06:48 -04:00
# endif
2002-05-21 01:30:25 -04:00
# endif /* !__cplusplus, etc. */
1999-08-23 21:06:48 -04:00
# ifdef __cplusplus
extern " C " {
2007-01-20 02:32:02 -05:00
# define NCURSES_CAST(type,value) static_cast<type>(value)
# else
# define NCURSES_CAST(type,value) (type)(value)
1999-08-23 21:06:48 -04:00
# endif
2020-02-07 03:36:41 -05:00
# define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p)))
1999-08-23 21:06:48 -04:00
/*
2007-12-30 06:08:14 -05:00
* X / Open attributes . In the ncurses implementation , they are identical to the
1999-08-23 21:06:48 -04:00
* A_ attributes .
*/
# define WA_ATTRIBUTES A_ATTRIBUTES
# define WA_NORMAL A_NORMAL
# define WA_STANDOUT A_STANDOUT
# define WA_UNDERLINE A_UNDERLINE
# define WA_REVERSE A_REVERSE
# define WA_BLINK A_BLINK
# define WA_DIM A_DIM
# define WA_BOLD A_BOLD
# define WA_ALTCHARSET A_ALTCHARSET
# define WA_INVIS A_INVIS
# define WA_PROTECT A_PROTECT
# define WA_HORIZONTAL A_HORIZONTAL
# define WA_LEFT A_LEFT
# define WA_LOW A_LOW
# define WA_RIGHT A_RIGHT
# define WA_TOP A_TOP
# define WA_VERTICAL A_VERTICAL
2014-02-28 19:40:26 -05:00
# if @NCURSES_EXT_FUNCS@
# define WA_ITALIC A_ITALIC /* ncurses extension */
# endif
1999-08-23 21:06:48 -04:00
/* colors */
# define COLOR_BLACK 0
# define COLOR_RED 1
# define COLOR_GREEN 2
# define COLOR_YELLOW 3
# define COLOR_BLUE 4
# define COLOR_MAGENTA 5
# define COLOR_CYAN 6
# define COLOR_WHITE 7
/* line graphics */
2014-02-28 14:18:07 -05:00
# if @BROKEN_LINKER@ || NCURSES_REENTRANT
2007-12-30 06:08:14 -05:00
NCURSES_WRAPPED_VAR ( chtype * , acs_map ) ;
2014-02-28 14:18:07 -05:00
# define acs_map NCURSES_PUBLIC_VAR(acs_map())
2002-05-21 01:30:25 -04:00
# else
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT_VAR ( chtype ) acs_map [ ] ;
2002-05-21 01:30:25 -04:00
# endif
1999-08-23 21:06:48 -04:00
2014-02-28 19:40:26 -05:00
# define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,(c))])
2007-01-20 02:32:02 -05:00
1999-08-23 21:06:48 -04:00
/* VT100 symbols begin here */
2007-01-20 02:32:02 -05:00
# define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */
# define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */
# define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */
# define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */
# define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */
# define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */
# define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */
# define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */
# define ACS_HLINE NCURSES_ACS('q') /* horizontal line */
# define ACS_VLINE NCURSES_ACS('x') /* vertical line */
# define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */
# define ACS_S1 NCURSES_ACS('o') /* scan line 1 */
# define ACS_S9 NCURSES_ACS('s') /* scan line 9 */
# define ACS_DIAMOND NCURSES_ACS('`') /* diamond */
# define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */
# define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */
# define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */
# define ACS_BULLET NCURSES_ACS('~') /* bullet */
1999-08-23 21:06:48 -04:00
/* Teletype 5410v1 symbols begin here */
2007-01-20 02:32:02 -05:00
# define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */
# define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */
# define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */
# define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */
# define ACS_BOARD NCURSES_ACS('h') /* board of squares */
# define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */
# define ACS_BLOCK NCURSES_ACS('0') /* solid square block */
1999-08-23 21:06:48 -04:00
/*
* These aren ' t documented , but a lot of System Vs have them anyway
* ( you can spot pprryyzz { { | | } } in a lot of AT & T terminfo strings ) .
* The ACS_names may not match AT & T ' s , our source didn ' t know them .
*/
2007-01-20 02:32:02 -05:00
# define ACS_S3 NCURSES_ACS('p') /* scan line 3 */
# define ACS_S7 NCURSES_ACS('r') /* scan line 7 */
# define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */
# define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */
# define ACS_PI NCURSES_ACS('{') /* Pi */
# define ACS_NEQUAL NCURSES_ACS('|') /* not equal */
# define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */
1999-08-23 21:06:48 -04:00
/*
* Line drawing ACS names are of the form ACS_trbl , where t is the top , r
* is the right , b is the bottom , and l is the left . t , r , b , and l might
* be B ( blank ) , S ( single ) , D ( double ) , or T ( thick ) . The subset defined
* here only uses B and S .
*/
# define ACS_BSSB ACS_ULCORNER
# define ACS_SSBB ACS_LLCORNER
# define ACS_BBSS ACS_URCORNER
# define ACS_SBBS ACS_LRCORNER
# define ACS_SBSS ACS_RTEE
# define ACS_SSSB ACS_LTEE
# define ACS_SSBS ACS_BTEE
# define ACS_BSSS ACS_TTEE
# define ACS_BSBS ACS_HLINE
# define ACS_SBSB ACS_VLINE
# define ACS_SSSS ACS_PLUS
2002-05-21 01:30:25 -04:00
# undef ERR
1999-08-23 21:06:48 -04:00
# define ERR (-1)
2002-05-21 01:30:25 -04:00
# undef OK
1999-08-23 21:06:48 -04:00
# define OK (0)
/* values for the _flags member */
# define _SUBWIN 0x01 /* is this a sub-window? */
# define _ENDLINE 0x02 /* is the window flush right? */
# define _FULLWIN 0x04 /* is the window full-screen? */
# define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */
# define _ISPAD 0x10 /* is this window a pad? */
# define _HASMOVED 0x20 /* has cursor moved since last refresh? */
# define _WRAPPED 0x40 /* cursor was just wrappped */
/*
* this value is used in the firstchar and lastchar fields to mark
* unchanged lines
*/
# define _NOCHANGE -1
/*
* this value is used in the oldindex field to mark lines created by insertions
* and scrolls .
*/
# define _NEWINDEX -1
typedef struct screen SCREEN ;
typedef struct _win_st WINDOW ;
typedef chtype attr_t ; /* ...must be at least as wide as chtype */
2014-02-28 19:40:26 -05:00
# if NCURSES_WIDECHAR
2002-05-21 01:30:25 -04:00
# if @NCURSES_LIBUTF8@
# ifdef mblen /* libutf8.h defines it w/o undefining first */
# undef mblen
# endif
# include <libutf8.h>
# endif
2007-01-20 02:32:02 -05:00
# if @NEED_WCHAR_H@
2002-05-21 01:30:25 -04:00
# include <wchar.h> /* ...to get mbstate_t, etc. */
# endif
2007-01-20 02:32:02 -05:00
# if @NCURSES_WCHAR_T@
typedef unsigned short wchar_t @ NCURSES_OK_WCHAR_T @ ;
# endif
# if @NCURSES_WINT_T@
typedef unsigned int wint_t @ NCURSES_OK_WCHAR_T @ ;
# endif
1999-08-23 21:06:48 -04:00
2014-02-28 14:18:07 -05:00
/*
* cchar_t stores an array of CCHARW_MAX wide characters . The first is
* normally a spacing character . The others are non - spacing . If those
2014-02-28 19:40:26 -05:00
* ( spacing and nonspacing ) do not fill the array , a null L ' \0 ' follows .
2014-02-28 14:18:07 -05:00
* Otherwise , a null is assumed to follow when extracting via getcchar ( ) .
*/
# define CCHARW_MAX @NCURSES_CCHARW_MAX@
1999-08-23 21:06:48 -04:00
typedef struct
{
attr_t attr ;
wchar_t chars [ CCHARW_MAX ] ;
2007-01-20 02:32:02 -05:00
# if @NCURSES_EXT_COLORS@
2007-12-30 06:08:14 -05:00
# undef NCURSES_EXT_COLORS
# define NCURSES_EXT_COLORS @NCURSES_PATCH@
2007-01-20 02:32:02 -05:00
int ext_color ; /* color pair, must be more than 16-bits */
# endif
1999-08-23 21:06:48 -04:00
}
cchar_t ;
2002-05-21 01:30:25 -04:00
2014-02-28 14:18:07 -05:00
# endif /* NCURSES_WIDECHAR */
1999-08-23 21:06:48 -04:00
2007-12-30 06:08:14 -05:00
# if !NCURSES_OPAQUE
2002-05-21 01:30:25 -04:00
struct ldat ;
1999-08-23 21:06:48 -04:00
struct _win_st
{
2000-07-03 05:24:12 -04:00
NCURSES_SIZE_T _cury , _curx ; /* current cursor position */
1999-08-23 21:06:48 -04:00
/* window location and size */
2000-07-03 05:24:12 -04:00
NCURSES_SIZE_T _maxy , _maxx ; /* maximums of x and y, NOT window size */
NCURSES_SIZE_T _begy , _begx ; /* screen coords of upper-left-hand corner */
1999-08-23 21:06:48 -04:00
short _flags ; /* window state flags */
/* attribute tracking */
attr_t _attrs ; /* current attribute for non-space character */
chtype _bkgd ; /* current background char/attribute pair */
/* option values set by user */
bool _notimeout ; /* no time out on function-key entry? */
2002-05-21 01:30:25 -04:00
bool _clear ; /* consider all data in the window invalid? */
bool _leaveok ; /* OK to not reset cursor on exit? */
bool _scroll ; /* OK to scroll this window? */
bool _idlok ; /* OK to use insert/delete line? */
bool _idcok ; /* OK to use insert/delete char? */
1999-08-23 21:06:48 -04:00
bool _immed ; /* window in immed mode? (not yet used) */
bool _sync ; /* window in sync mode? */
2002-05-21 01:30:25 -04:00
bool _use_keypad ; /* process function keys into KEY_ symbols? */
1999-08-23 21:06:48 -04:00
int _delay ; /* 0 = nodelay, <0 = blocking, >0 = delay */
struct ldat * _line ; /* the actual line data */
/* global screen state */
2000-07-03 05:24:12 -04:00
NCURSES_SIZE_T _regtop ; /* top line of scrolling region */
NCURSES_SIZE_T _regbottom ; /* bottom line of scrolling region */
1999-08-23 21:06:48 -04:00
/* these are used only if this is a sub-window */
int _parx ; /* x coordinate of this window in parent */
int _pary ; /* y coordinate of this window in parent */
WINDOW * _parent ; /* pointer to parent if a sub-window */
/* these are used only if this is a pad */
struct pdat
{
2000-07-03 05:24:12 -04:00
NCURSES_SIZE_T _pad_y , _pad_x ;
NCURSES_SIZE_T _pad_top , _pad_left ;
NCURSES_SIZE_T _pad_bottom , _pad_right ;
1999-08-23 21:06:48 -04:00
} _pad ;
2000-07-03 05:24:12 -04:00
NCURSES_SIZE_T _yoffset ; /* real begy is _begy + _yoffset */
2002-05-21 01:30:25 -04:00
2014-02-28 19:40:26 -05:00
# if NCURSES_WIDECHAR
2002-05-21 01:30:25 -04:00
cchar_t _bkgrnd ; /* current background char/attribute pair */
2007-01-20 02:32:02 -05:00
# if @NCURSES_EXT_COLORS@
int _color ; /* current color-pair for non-space character */
# endif
2002-05-21 01:30:25 -04:00
# endif
1999-08-23 21:06:48 -04:00
} ;
2007-12-30 06:08:14 -05:00
# endif /* NCURSES_OPAQUE */
1999-08-23 21:06:48 -04:00
2007-01-20 02:32:02 -05:00
/*
* This is an extension to support events . . .
*/
# if @NCURSES_EXT_FUNCS@
# ifdef NCURSES_WGETCH_EVENTS
2008-11-09 09:08:54 -05:00
# if !defined(__BEOS__) || defined(__HAIKU__)
/* Fix _nc_timed_wait() on BEOS... */
2007-01-20 02:32:02 -05:00
# define NCURSES_EVENT_VERSION 1
# endif /* !defined(__BEOS__) */
/*
* Bits to set in _nc_event . data . flags
*/
# define _NC_EVENT_TIMEOUT_MSEC 1
# define _NC_EVENT_FILE 2
# define _NC_EVENT_FILE_READABLE 2
# if 0 /* Not supported yet... */
# define _NC_EVENT_FILE_WRITABLE 4
# define _NC_EVENT_FILE_EXCEPTION 8
# endif
typedef struct
{
int type ;
union
{
long timeout_msec ; /* _NC_EVENT_TIMEOUT_MSEC */
struct
{
unsigned int flags ;
int fd ;
unsigned int result ;
} fev ; /* _NC_EVENT_FILE */
} data ;
} _nc_event ;
typedef struct
{
int count ;
int result_flags ; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
_nc_event * events [ 1 ] ;
} _nc_eventlist ;
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) wgetch_events ( WINDOW * , _nc_eventlist * ) ; /* experimental */
extern NCURSES_EXPORT ( int ) wgetnstr_events ( WINDOW * , char * , int , _nc_eventlist * ) ; /* experimental */
2007-01-20 02:32:02 -05:00
# endif /* NCURSES_WGETCH_EVENTS */
# endif /* NCURSES_EXT_FUNCS */
1999-08-23 21:06:48 -04:00
/*
* GCC ( and some other compilers ) define ' __attribute__ ' ; we ' re using this
* macro to alert the compiler to flag inconsistencies in printf / scanf - like
* function calls . Just in case ' __attribute__ ' isn ' t defined , make a dummy .
2007-01-20 02:32:02 -05:00
* Old versions of G + + do not accept it anyway , at least not consistently with
* GCC .
1999-08-23 21:06:48 -04:00
*/
2007-01-20 02:32:02 -05:00
# if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
1999-08-23 21:06:48 -04:00
# define __attribute__(p) /* nothing */
# endif
/*
* We cannot define these in ncurses_cfg . h , since they require parameters to be
2007-01-20 02:32:02 -05:00
* passed ( that is non - portable ) . If you happen to be using gcc with warnings
* enabled , define
* GCC_PRINTF
* GCC_SCANF
* to improve checking of calls to printw ( ) , etc .
1999-08-23 21:06:48 -04:00
*/
2002-05-21 01:30:25 -04:00
# ifndef GCC_PRINTFLIKE
# if defined(GCC_PRINTF) && !defined(printf)
1999-08-23 21:06:48 -04:00
# define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
# else
# define GCC_PRINTFLIKE(fmt,var) /*nothing*/
# endif
2002-05-21 01:30:25 -04:00
# endif
1999-08-23 21:06:48 -04:00
2002-05-21 01:30:25 -04:00
# ifndef GCC_SCANFLIKE
# if defined(GCC_SCANF) && !defined(scanf)
1999-08-23 21:06:48 -04:00
# define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
# else
# define GCC_SCANFLIKE(fmt,var) /*nothing*/
# endif
2002-05-21 01:30:25 -04:00
# endif
1999-08-23 21:06:48 -04:00
# ifndef GCC_NORETURN
# define GCC_NORETURN /* nothing */
# endif
# ifndef GCC_UNUSED
# define GCC_UNUSED /* nothing */
# endif
2020-02-07 03:36:41 -05:00
# undef GCC_DEPRECATED
# if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2))
# define GCC_DEPRECATED(msg) __attribute__((deprecated))
# else
# define GCC_DEPRECATED(msg) /* nothing */
# endif
2014-02-28 14:18:07 -05:00
/*
* Curses uses a helper function . Define our type for this to simplify
* extending it for the sp - funcs feature .
*/
typedef int ( * NCURSES_OUTC ) ( int ) ;
1999-08-23 21:06:48 -04:00
/*
2007-12-30 06:08:14 -05:00
* Function prototypes . This is the complete X / Open Curses list of required
1999-08-23 21:06:48 -04:00
* functions . Those marked ` generated ' will have sources generated from the
* macro definitions later in this file , in order to satisfy XPG4 .2
* requirements .
*/
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) addch ( const chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) addchnstr ( const chtype * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) addchstr ( const chtype * ) ; /* generated */
extern NCURSES_EXPORT ( int ) addnstr ( const char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) addstr ( const char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) attroff ( NCURSES_ATTR_T ) ; /* generated */
extern NCURSES_EXPORT ( int ) attron ( NCURSES_ATTR_T ) ; /* generated */
extern NCURSES_EXPORT ( int ) attrset ( NCURSES_ATTR_T ) ; /* generated */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) attr_get ( attr_t * , NCURSES_PAIRS_T * , void * ) ; /* generated */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) attr_off ( attr_t , void * ) ; /* generated */
extern NCURSES_EXPORT ( int ) attr_on ( attr_t , void * ) ; /* generated */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) attr_set ( attr_t , NCURSES_PAIRS_T , void * ) ; /* generated */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) baudrate ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) beep ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) bkgd ( chtype ) ; /* generated */
extern NCURSES_EXPORT ( void ) bkgdset ( chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) border ( chtype , chtype , chtype , chtype , chtype , chtype , chtype , chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) box ( WINDOW * , chtype , chtype ) ; /* generated */
extern NCURSES_EXPORT ( bool ) can_change_color ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) cbreak ( void ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) chgat ( int , attr_t , NCURSES_PAIRS_T , const void * ) ; /* generated */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) clear ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) clearok ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( int ) clrtobot ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) clrtoeol ( void ) ; /* generated */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) color_content ( NCURSES_COLOR_T , NCURSES_COLOR_T * , NCURSES_COLOR_T * , NCURSES_COLOR_T * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) color_set ( NCURSES_PAIRS_T , void * ) ; /* generated */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) COLOR_PAIR ( int ) ; /* generated */
extern NCURSES_EXPORT ( int ) copywin ( const WINDOW * , WINDOW * , int , int , int , int , int , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) curs_set ( int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) def_prog_mode ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) def_shell_mode ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) delay_output ( int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) delch ( void ) ; /* generated */
extern NCURSES_EXPORT ( void ) delscreen ( SCREEN * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) delwin ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) deleteln ( void ) ; /* generated */
extern NCURSES_EXPORT ( WINDOW * ) derwin ( WINDOW * , int , int , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) doupdate ( void ) ; /* implemented */
extern NCURSES_EXPORT ( WINDOW * ) dupwin ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) echo ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) echochar ( const chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) erase ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) endwin ( void ) ; /* implemented */
extern NCURSES_EXPORT ( char ) erasechar ( void ) ; /* implemented */
extern NCURSES_EXPORT ( void ) filter ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) flash ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) flushinp ( void ) ; /* implemented */
extern NCURSES_EXPORT ( chtype ) getbkgd ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getch ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) getnstr ( char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) getstr ( char * ) ; /* generated */
extern NCURSES_EXPORT ( WINDOW * ) getwin ( FILE * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) halfdelay ( int ) ; /* implemented */
extern NCURSES_EXPORT ( bool ) has_colors ( void ) ; /* implemented */
extern NCURSES_EXPORT ( bool ) has_ic ( void ) ; /* implemented */
extern NCURSES_EXPORT ( bool ) has_il ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) hline ( chtype , int ) ; /* generated */
extern NCURSES_EXPORT ( void ) idcok ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( int ) idlok ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( void ) immedok ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( chtype ) inch ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) inchnstr ( chtype * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) inchstr ( chtype * ) ; /* generated */
extern NCURSES_EXPORT ( WINDOW * ) initscr ( void ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) init_color ( NCURSES_COLOR_T , NCURSES_COLOR_T , NCURSES_COLOR_T , NCURSES_COLOR_T ) ; /* implemented */
extern NCURSES_EXPORT ( int ) init_pair ( NCURSES_PAIRS_T , NCURSES_COLOR_T , NCURSES_COLOR_T ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) innstr ( char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) insch ( chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) insdelln ( int ) ; /* generated */
extern NCURSES_EXPORT ( int ) insertln ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) insnstr ( const char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) insstr ( const char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) instr ( char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) intrflush ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( bool ) isendwin ( void ) ; /* implemented */
extern NCURSES_EXPORT ( bool ) is_linetouched ( WINDOW * , int ) ; /* implemented */
extern NCURSES_EXPORT ( bool ) is_wintouched ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( NCURSES_CONST char * ) keyname ( int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) keypad ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( char ) killchar ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) leaveok ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( char * ) longname ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) meta ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( int ) move ( int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvaddch ( int , int , const chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvaddchnstr ( int , int , const chtype * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvaddchstr ( int , int , const chtype * ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvaddnstr ( int , int , const char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvaddstr ( int , int , const char * ) ; /* generated */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) mvchgat ( int , int , int , attr_t , NCURSES_PAIRS_T , const void * ) ; /* generated */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) mvcur ( int , int , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) mvdelch ( int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvderwin ( WINDOW * , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) mvgetch ( int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvgetnstr ( int , int , char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvgetstr ( int , int , char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvhline ( int , int , chtype , int ) ; /* generated */
extern NCURSES_EXPORT ( chtype ) mvinch ( int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvinchnstr ( int , int , chtype * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvinchstr ( int , int , chtype * ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvinnstr ( int , int , char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvinsch ( int , int , chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvinsnstr ( int , int , const char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvinsstr ( int , int , const char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvinstr ( int , int , char * ) ; /* generated */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) mvprintw ( int , int , const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_PRINTFLIKE ( 3 , 4 ) ;
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) mvscanw ( int , int , const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_SCANFLIKE ( 3 , 4 ) ;
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) mvvline ( int , int , chtype , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwaddch ( WINDOW * , int , int , const chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwaddchnstr ( WINDOW * , int , int , const chtype * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwaddchstr ( WINDOW * , int , int , const chtype * ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwaddnstr ( WINDOW * , int , int , const char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwaddstr ( WINDOW * , int , int , const char * ) ; /* generated */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) mvwchgat ( WINDOW * , int , int , int , attr_t , NCURSES_PAIRS_T , const void * ) ; /* generated */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) mvwdelch ( WINDOW * , int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwgetch ( WINDOW * , int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwgetnstr ( WINDOW * , int , int , char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwgetstr ( WINDOW * , int , int , char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwhline ( WINDOW * , int , int , chtype , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwin ( WINDOW * , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( chtype ) mvwinch ( WINDOW * , int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwinchnstr ( WINDOW * , int , int , chtype * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwinchstr ( WINDOW * , int , int , chtype * ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwinnstr ( WINDOW * , int , int , char * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwinsch ( WINDOW * , int , int , chtype ) ; /* generated */
extern NCURSES_EXPORT ( int ) mvwinsnstr ( WINDOW * , int , int , const char * , int ) ; /* generated */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) mvwinsstr ( WINDOW * , int , int , const char * ) ; /* generated */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) mvwinstr ( WINDOW * , int , int , char * ) ; /* generated */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) mvwprintw ( WINDOW * , int , int , const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_PRINTFLIKE ( 4 , 5 ) ;
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) mvwscanw ( WINDOW * , int , int , const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_SCANFLIKE ( 4 , 5 ) ;
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) mvwvline ( WINDOW * , int , int , chtype , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) napms ( int ) ; /* implemented */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( WINDOW * ) newpad ( int , int ) ; /* implemented */
extern NCURSES_EXPORT ( SCREEN * ) newterm ( const char * , FILE * , FILE * ) ; /* implemented */
extern NCURSES_EXPORT ( WINDOW * ) newwin ( int , int , int , int ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) nl ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) nocbreak ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) nodelay ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( int ) noecho ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) nonl ( void ) ; /* implemented */
extern NCURSES_EXPORT ( void ) noqiflush ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) noraw ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) notimeout ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( int ) overlay ( const WINDOW * , WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) overwrite ( const WINDOW * , WINDOW * ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) pair_content ( NCURSES_PAIRS_T , NCURSES_COLOR_T * , NCURSES_COLOR_T * ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) PAIR_NUMBER ( int ) ; /* generated */
extern NCURSES_EXPORT ( int ) pechochar ( WINDOW * , const chtype ) ; /* implemented */
extern NCURSES_EXPORT ( int ) pnoutrefresh ( WINDOW * , int , int , int , int , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) prefresh ( WINDOW * , int , int , int , int , int , int ) ; /* implemented */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) printw ( const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_PRINTFLIKE ( 1 , 2 ) ;
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) putwin ( WINDOW * , FILE * ) ; /* implemented */
extern NCURSES_EXPORT ( void ) qiflush ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) raw ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) redrawwin ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) refresh ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) resetty ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) reset_prog_mode ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) reset_shell_mode ( void ) ; /* implemented */
2002-05-21 01:30:25 -04:00
extern NCURSES_EXPORT ( int ) ripoffline ( int , int ( * ) ( WINDOW * , int ) ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) savetty ( void ) ; /* implemented */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) scanw ( const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_SCANFLIKE ( 1 , 2 ) ;
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) scr_dump ( const char * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) scr_init ( const char * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) scrl ( int ) ; /* generated */
extern NCURSES_EXPORT ( int ) scroll ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) scrollok ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( int ) scr_restore ( const char * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) scr_set ( const char * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) setscrreg ( int , int ) ; /* generated */
extern NCURSES_EXPORT ( SCREEN * ) set_term ( SCREEN * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) slk_attroff ( const chtype ) ; /* implemented */
extern NCURSES_EXPORT ( int ) slk_attr_off ( const attr_t , void * ) ; /* generated:WIDEC */
extern NCURSES_EXPORT ( int ) slk_attron ( const chtype ) ; /* implemented */
extern NCURSES_EXPORT ( int ) slk_attr_on ( attr_t , void * ) ; /* generated:WIDEC */
extern NCURSES_EXPORT ( int ) slk_attrset ( const chtype ) ; /* implemented */
extern NCURSES_EXPORT ( attr_t ) slk_attr ( void ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) slk_attr_set ( const attr_t , NCURSES_PAIRS_T , void * ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) slk_clear ( void ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) slk_color ( NCURSES_PAIRS_T ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) slk_init ( int ) ; /* implemented */
extern NCURSES_EXPORT ( char * ) slk_label ( int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) slk_noutrefresh ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) slk_refresh ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) slk_restore ( void ) ; /* implemented */
extern NCURSES_EXPORT ( int ) slk_set ( int , const char * , int ) ; /* implemented */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) slk_touch ( void ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) standout ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) standend ( void ) ; /* generated */
extern NCURSES_EXPORT ( int ) start_color ( void ) ; /* implemented */
extern NCURSES_EXPORT ( WINDOW * ) subpad ( WINDOW * , int , int , int , int ) ; /* implemented */
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( WINDOW * ) subwin ( WINDOW * , int , int , int , int ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) syncok ( WINDOW * , bool ) ; /* implemented */
extern NCURSES_EXPORT ( chtype ) termattrs ( void ) ; /* implemented */
extern NCURSES_EXPORT ( char * ) termname ( void ) ; /* implemented */
extern NCURSES_EXPORT ( void ) timeout ( int ) ; /* generated */
extern NCURSES_EXPORT ( int ) touchline ( WINDOW * , int , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) touchwin ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) typeahead ( int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) ungetch ( int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) untouchwin ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( void ) use_env ( bool ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( void ) use_tioctl ( bool ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) vidattr ( chtype ) ; /* implemented */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) vidputs ( chtype , NCURSES_OUTC ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) vline ( chtype , int ) ; /* generated */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) vwprintw ( WINDOW * , const char * , va_list ) GCC_DEPRECATED ( use vw_printw ) ; /* implemented */
extern NCURSES_EXPORT ( int ) vw_printw ( WINDOW * , const char * , va_list ) ; /* implemented */
extern NCURSES_EXPORT ( int ) vwscanw ( WINDOW * , const char * , va_list ) GCC_DEPRECATED ( use vw_scanw ) ; /* implemented */
extern NCURSES_EXPORT ( int ) vw_scanw ( WINDOW * , const char * , va_list ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) waddch ( WINDOW * , const chtype ) ; /* implemented */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) waddchnstr ( WINDOW * , const chtype * , int ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) waddchstr ( WINDOW * , const chtype * ) ; /* generated */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) waddnstr ( WINDOW * , const char * , int ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) waddstr ( WINDOW * , const char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) wattron ( WINDOW * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) wattroff ( WINDOW * , int ) ; /* generated */
extern NCURSES_EXPORT ( int ) wattrset ( WINDOW * , int ) ; /* generated */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) wattr_get ( WINDOW * , attr_t * , NCURSES_PAIRS_T * , void * ) ; /* generated */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) wattr_on ( WINDOW * , attr_t , void * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wattr_off ( WINDOW * , attr_t , void * ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) wattr_set ( WINDOW * , attr_t , NCURSES_PAIRS_T , void * ) ; /* generated */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) wbkgd ( WINDOW * , chtype ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( void ) wbkgdset ( WINDOW * , chtype ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wborder ( WINDOW * , chtype , chtype , chtype , chtype , chtype , chtype , chtype , chtype ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) wchgat ( WINDOW * , int , attr_t , NCURSES_PAIRS_T , const void * ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) wclear ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wclrtobot ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wclrtoeol ( WINDOW * ) ; /* implemented */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) wcolor_set ( WINDOW * , NCURSES_PAIRS_T , void * ) ; /* implemented */
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( void ) wcursyncup ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wdelch ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wdeleteln ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) wechochar ( WINDOW * , const chtype ) ; /* implemented */
extern NCURSES_EXPORT ( int ) werase ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wgetch ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wgetnstr ( WINDOW * , char * , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wgetstr ( WINDOW * , char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) whline ( WINDOW * , chtype , int ) ; /* implemented */
extern NCURSES_EXPORT ( chtype ) winch ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) winchnstr ( WINDOW * , chtype * , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) winchstr ( WINDOW * , chtype * ) ; /* generated */
extern NCURSES_EXPORT ( int ) winnstr ( WINDOW * , char * , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) winsch ( WINDOW * , chtype ) ; /* implemented */
extern NCURSES_EXPORT ( int ) winsdelln ( WINDOW * , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) winsertln ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) winsnstr ( WINDOW * , const char * , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) winsstr ( WINDOW * , const char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) winstr ( WINDOW * , char * ) ; /* generated */
extern NCURSES_EXPORT ( int ) wmove ( WINDOW * , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wnoutrefresh ( WINDOW * ) ; /* implemented */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) wprintw ( WINDOW * , const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_PRINTFLIKE ( 2 , 3 ) ;
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) wredrawln ( WINDOW * , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wrefresh ( WINDOW * ) ; /* implemented */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) wscanw ( WINDOW * , const char * , . . . ) /* implemented */
1999-08-23 21:06:48 -04:00
GCC_SCANFLIKE ( 2 , 3 ) ;
2001-05-17 04:21:06 -04:00
extern NCURSES_EXPORT ( int ) wscrl ( WINDOW * , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wsetscrreg ( WINDOW * , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wstandout ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) wstandend ( WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( void ) wsyncdown ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( void ) wsyncup ( WINDOW * ) ; /* implemented */
extern NCURSES_EXPORT ( void ) wtimeout ( WINDOW * , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wtouchln ( WINDOW * , int , int , int ) ; /* implemented */
extern NCURSES_EXPORT ( int ) wvline ( WINDOW * , chtype , int ) ; /* implemented */
1999-08-23 21:06:48 -04:00
2002-05-21 01:30:25 -04:00
/*
2007-01-20 02:32:02 -05:00
* These are also declared in < term . h > :
*/
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) tigetflag ( const char * ) ; /* implemented */
extern NCURSES_EXPORT ( int ) tigetnum ( const char * ) ; /* implemented */
extern NCURSES_EXPORT ( char * ) tigetstr ( const char * ) ; /* implemented */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) putp ( const char * ) ; /* implemented */
# if NCURSES_TPARM_VARARGS
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( char * ) tparm ( const char * , . . . ) ; /* special */
2007-01-20 02:32:02 -05:00
# else
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( char * ) tparm ( const char * , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG , NCURSES_TPARM_ARG ) ; /* special */
extern NCURSES_EXPORT ( char * ) tparm_varargs ( const char * , . . . ) ; /* special */
2007-01-20 02:32:02 -05:00
# endif
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( char * ) tiparm ( const char * , . . . ) ; /* special */
2007-01-20 02:32:02 -05:00
/*
* These functions are not in X / Open , but we use them in macro definitions :
*/
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( int ) getattrs ( const WINDOW * ) ; /* generated */
2007-01-20 02:32:02 -05:00
extern NCURSES_EXPORT ( int ) getcurx ( const WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getcury ( const WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getbegx ( const WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getbegy ( const WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getmaxx ( const WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getmaxy ( const WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getparx ( const WINDOW * ) ; /* generated */
extern NCURSES_EXPORT ( int ) getpary ( const WINDOW * ) ; /* generated */
/*
2007-12-30 06:08:14 -05:00
* vid_attr ( ) was implemented originally based on a draft of X / Open curses .
2002-05-21 01:30:25 -04:00
*/
2014-02-28 19:40:26 -05:00
# if !NCURSES_WIDECHAR
2002-05-21 01:30:25 -04:00
# define vid_attr(a,pair,opts) vidattr(a)
# endif
1999-08-23 21:06:48 -04:00
2007-12-30 06:08:14 -05:00
/*
* These functions are extensions - not in X / Open Curses .
*/
# if @NCURSES_EXT_FUNCS@
# undef NCURSES_EXT_FUNCS
# define NCURSES_EXT_FUNCS @NCURSES_PATCH@
2008-05-08 22:28:12 -04:00
typedef int ( * NCURSES_WINDOW_CB ) ( WINDOW * , void * ) ;
typedef int ( * NCURSES_SCREEN_CB ) ( SCREEN * , void * ) ;
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( bool ) is_term_resized ( int , int ) ;
extern NCURSES_EXPORT ( char * ) keybound ( int , int ) ;
extern NCURSES_EXPORT ( const char * ) curses_version ( void ) ;
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) alloc_pair ( int , int ) ;
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( int ) assume_default_colors ( int , int ) ;
extern NCURSES_EXPORT ( int ) define_key ( const char * , int ) ;
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) extended_color_content ( int , int * , int * , int * ) ;
extern NCURSES_EXPORT ( int ) extended_pair_content ( int , int * , int * ) ;
extern NCURSES_EXPORT ( int ) extended_slk_color ( int ) ;
extern NCURSES_EXPORT ( int ) find_pair ( int , int ) ;
extern NCURSES_EXPORT ( int ) free_pair ( int ) ;
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) get_escdelay ( void ) ;
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) init_extended_color ( int , int , int , int ) ;
extern NCURSES_EXPORT ( int ) init_extended_pair ( int , int , int ) ;
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( int ) key_defined ( const char * ) ;
extern NCURSES_EXPORT ( int ) keyok ( int , bool ) ;
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( void ) reset_color_pairs ( void ) ;
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( int ) resize_term ( int , int ) ;
extern NCURSES_EXPORT ( int ) resizeterm ( int , int ) ;
2008-02-11 08:37:14 -05:00
extern NCURSES_EXPORT ( int ) set_escdelay ( int ) ;
extern NCURSES_EXPORT ( int ) set_tabsize ( int ) ;
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( int ) use_default_colors ( void ) ;
extern NCURSES_EXPORT ( int ) use_extended_names ( bool ) ;
extern NCURSES_EXPORT ( int ) use_legacy_coding ( int ) ;
2008-05-08 22:28:12 -04:00
extern NCURSES_EXPORT ( int ) use_screen ( SCREEN * , NCURSES_SCREEN_CB , void * ) ;
extern NCURSES_EXPORT ( int ) use_window ( WINDOW * , NCURSES_WINDOW_CB , void * ) ;
2007-12-30 06:08:14 -05:00
extern NCURSES_EXPORT ( int ) wresize ( WINDOW * , int , int ) ;
extern NCURSES_EXPORT ( void ) nofilter ( void ) ;
/*
* These extensions provide access to information stored in the WINDOW even
* when NCURSES_OPAQUE is set :
*/
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( WINDOW * ) wgetparent ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_cleared ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_idcok ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_idlok ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_immedok ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_keypad ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_leaveok ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_nodelay ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_notimeout ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_pad ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_scrollok ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_subwin ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT ( bool ) is_syncok ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) wgetdelay ( const WINDOW * ) ; /* @GENERATED_EXT_FUNCS@ */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) wgetscrreg ( const WINDOW * , int * , int * ) ; /* @GENERATED_EXT_FUNCS@ */
2007-12-30 06:08:14 -05:00
# else
# define curses_version() NCURSES_VERSION
# endif
2014-02-28 14:18:07 -05:00
/*
* Extra extension - functions , which pass a SCREEN pointer rather than using
* a global variable SP .
*/
# if @NCURSES_SP_FUNCS@
# undef NCURSES_SP_FUNCS
# define NCURSES_SP_FUNCS @NCURSES_PATCH@
# define NCURSES_SP_NAME(name) name##_sp
/* Define the sp-funcs helper function */
# define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC)
typedef int ( * NCURSES_SP_OUTC ) ( SCREEN * , int ) ;
extern NCURSES_EXPORT ( SCREEN * ) new_prescr ( void ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( baudrate ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( beep ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( bool ) NCURSES_SP_NAME ( can_change_color ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( cbreak ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( curs_set ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( color_content ) ( SCREEN * , NCURSES_PAIRS_T , NCURSES_COLOR_T * , NCURSES_COLOR_T * , NCURSES_COLOR_T * ) ; /* implemented:SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( def_prog_mode ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( def_shell_mode ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( delay_output ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( doupdate ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( echo ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( endwin ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( char ) NCURSES_SP_NAME ( erasechar ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( void ) NCURSES_SP_NAME ( filter ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( flash ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( flushinp ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( WINDOW * ) NCURSES_SP_NAME ( getwin ) ( SCREEN * , FILE * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( halfdelay ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( bool ) NCURSES_SP_NAME ( has_colors ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( bool ) NCURSES_SP_NAME ( has_ic ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( bool ) NCURSES_SP_NAME ( has_il ) ( SCREEN * ) ; /* implemented:SP_FUNC */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( init_color ) ( SCREEN * , NCURSES_COLOR_T , NCURSES_COLOR_T , NCURSES_COLOR_T , NCURSES_COLOR_T ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( init_pair ) ( SCREEN * , NCURSES_PAIRS_T , NCURSES_COLOR_T , NCURSES_COLOR_T ) ; /* implemented:SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( intrflush ) ( SCREEN * , WINDOW * , bool ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( bool ) NCURSES_SP_NAME ( isendwin ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( NCURSES_CONST char * ) NCURSES_SP_NAME ( keyname ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( char ) NCURSES_SP_NAME ( killchar ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( char * ) NCURSES_SP_NAME ( longname ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( mvcur ) ( SCREEN * , int , int , int , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( napms ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( WINDOW * ) NCURSES_SP_NAME ( newpad ) ( SCREEN * , int , int ) ; /* implemented:SP_FUNC */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( SCREEN * ) NCURSES_SP_NAME ( newterm ) ( SCREEN * , const char * , FILE * , FILE * ) ; /* implemented:SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( WINDOW * ) NCURSES_SP_NAME ( newwin ) ( SCREEN * , int , int , int , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( nl ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( nocbreak ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( noecho ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( nonl ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( void ) NCURSES_SP_NAME ( noqiflush ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( noraw ) ( SCREEN * ) ; /* implemented:SP_FUNC */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( pair_content ) ( SCREEN * , NCURSES_PAIRS_T , NCURSES_COLOR_T * , NCURSES_COLOR_T * ) ; /* implemented:SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( void ) NCURSES_SP_NAME ( qiflush ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( raw ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( reset_prog_mode ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( reset_shell_mode ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( resetty ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( ripoffline ) ( SCREEN * , int , int ( * ) ( WINDOW * , int ) ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( savetty ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( scr_init ) ( SCREEN * , const char * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( scr_restore ) ( SCREEN * , const char * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( scr_set ) ( SCREEN * , const char * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_attroff ) ( SCREEN * , const chtype ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_attron ) ( SCREEN * , const chtype ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_attrset ) ( SCREEN * , const chtype ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( attr_t ) NCURSES_SP_NAME ( slk_attr ) ( SCREEN * ) ; /* implemented:SP_FUNC */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_attr_set ) ( SCREEN * , const attr_t , NCURSES_PAIRS_T , void * ) ; /* implemented:SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_clear ) ( SCREEN * ) ; /* implemented:SP_FUNC */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_color ) ( SCREEN * , NCURSES_PAIRS_T ) ; /* implemented:SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_init ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( char * ) NCURSES_SP_NAME ( slk_label ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_noutrefresh ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_refresh ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_restore ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_set ) ( SCREEN * , int , const char * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( slk_touch ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( start_color ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( chtype ) NCURSES_SP_NAME ( termattrs ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( char * ) NCURSES_SP_NAME ( termname ) ( SCREEN * ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( typeahead ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( ungetch ) ( SCREEN * , int ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( void ) NCURSES_SP_NAME ( use_env ) ( SCREEN * , bool ) ; /* implemented:SP_FUNC */
2014-02-28 19:40:26 -05:00
extern NCURSES_EXPORT ( void ) NCURSES_SP_NAME ( use_tioctl ) ( SCREEN * , bool ) ; /* implemented:SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( vidattr ) ( SCREEN * , chtype ) ; /* implemented:SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( vidputs ) ( SCREEN * , chtype , NCURSES_SP_OUTC ) ; /* implemented:SP_FUNC */
# if @NCURSES_EXT_FUNCS@
extern NCURSES_EXPORT ( char * ) NCURSES_SP_NAME ( keybound ) ( SCREEN * , int , int ) ; /* implemented:EXT_SP_FUNC */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( alloc_pair ) ( SCREEN * , int , int ) ; /* implemented:EXT_SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( assume_default_colors ) ( SCREEN * , int , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( define_key ) ( SCREEN * , const char * , int ) ; /* implemented:EXT_SP_FUNC */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( extended_color_content ) ( SCREEN * , int , int * , int * , int * ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( extended_pair_content ) ( SCREEN * , int , int * , int * ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( extended_slk_color ) ( SCREEN * , int ) ; /* implemented:EXT_SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( get_escdelay ) ( SCREEN * ) ; /* implemented:EXT_SP_FUNC */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( find_pair ) ( SCREEN * , int , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( free_pair ) ( SCREEN * , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( init_extended_color ) ( SCREEN * , int , int , int , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( init_extended_pair ) ( SCREEN * , int , int , int ) ; /* implemented:EXT_SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( bool ) NCURSES_SP_NAME ( is_term_resized ) ( SCREEN * , int , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( key_defined ) ( SCREEN * , const char * ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( keyok ) ( SCREEN * , int , bool ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( void ) NCURSES_SP_NAME ( nofilter ) ( SCREEN * ) ; /* implemented */ /* implemented:EXT_SP_FUNC */
2020-02-07 03:36:41 -05:00
extern NCURSES_EXPORT ( void ) NCURSES_SP_NAME ( reset_color_pairs ) ( SCREEN * ) ; /* implemented:EXT_SP_FUNC */
2014-02-28 14:18:07 -05:00
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( resize_term ) ( SCREEN * , int , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( resizeterm ) ( SCREEN * , int , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( set_escdelay ) ( SCREEN * , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( set_tabsize ) ( SCREEN * , int ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( use_default_colors ) ( SCREEN * ) ; /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT ( int ) NCURSES_SP_NAME ( use_legacy_coding ) ( SCREEN * , int ) ; /* implemented:EXT_SP_FUNC */
# endif
# else
# undef NCURSES_SP_FUNCS
# define NCURSES_SP_FUNCS 0
# define NCURSES_SP_NAME(name) name
# define NCURSES_SP_OUTC NCURSES_OUTC
# endif
1999-08-23 21:06:48 -04:00
/* attributes */
2002-05-21 01:30:25 -04:00
# define NCURSES_ATTR_SHIFT 8
2014-02-28 19:40:26 -05:00
# define NCURSES_BITS(mask,shift) (NCURSES_CAST(chtype,(mask)) << ((shift) + NCURSES_ATTR_SHIFT))
1999-08-23 21:06:48 -04:00
2007-01-20 02:32:02 -05:00
# define A_NORMAL (@cf_cv_1UL@ - @cf_cv_1UL@)
1999-08-23 21:06:48 -04:00
# define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0)
# define A_CHARTEXT (NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@)
# define A_COLOR NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0)
# define A_STANDOUT NCURSES_BITS(@cf_cv_1UL@,8)
# define A_UNDERLINE NCURSES_BITS(@cf_cv_1UL@,9)
# define A_REVERSE NCURSES_BITS(@cf_cv_1UL@,10)
# define A_BLINK NCURSES_BITS(@cf_cv_1UL@,11)
# define A_DIM NCURSES_BITS(@cf_cv_1UL@,12)
# define A_BOLD NCURSES_BITS(@cf_cv_1UL@,13)
# define A_ALTCHARSET NCURSES_BITS(@cf_cv_1UL@,14)
# define A_INVIS NCURSES_BITS(@cf_cv_1UL@,15)
# define A_PROTECT NCURSES_BITS(@cf_cv_1UL@,16)
# define A_HORIZONTAL NCURSES_BITS(@cf_cv_1UL@,17)
# define A_LEFT NCURSES_BITS(@cf_cv_1UL@,18)
# define A_LOW NCURSES_BITS(@cf_cv_1UL@,19)
# define A_RIGHT NCURSES_BITS(@cf_cv_1UL@,20)
# define A_TOP NCURSES_BITS(@cf_cv_1UL@,21)
# define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22)
2014-02-28 19:40:26 -05:00
# if @NCURSES_EXT_FUNCS@
# define A_ITALIC NCURSES_BITS(@cf_cv_1UL@,23) /* ncurses extension */
# endif
2007-01-20 02:32:02 -05:00
/*
* Most of the pseudo functions are macros that either provide compatibility
* with older versions of curses , or provide inline functionality to improve
* performance .
*/
1999-08-23 21:06:48 -04:00
/*
2007-01-20 02:32:02 -05:00
* These pseudo functions are always implemented as macros :
1999-08-23 21:06:48 -04:00
*/
2007-01-20 02:32:02 -05:00
2020-02-07 03:36:41 -05:00
# define getyx(win,y,x) (y = getcury(win), x = getcurx(win))
2007-01-20 02:32:02 -05:00
# define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win))
# define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win))
# define getparyx(win,y,x) (y = getpary(win), x = getparx(win))
2008-05-08 22:28:12 -04:00
# define getsyx(y,x) do { if (newscr) { \
if ( is_leaveok ( newscr ) ) \
( y ) = ( x ) = - 1 ; \
else \
getyx ( newscr , ( y ) , ( x ) ) ; \
} \
2007-01-20 02:32:02 -05:00
} while ( 0 )
2007-12-30 06:08:14 -05:00
2008-05-08 22:28:12 -04:00
# define setsyx(y,x) do { if (newscr) { \
if ( ( y ) = = - 1 & & ( x ) = = - 1 ) \
leaveok ( newscr , TRUE ) ; \
else { \
leaveok ( newscr , FALSE ) ; \
wmove ( newscr , ( y ) , ( x ) ) ; \
} \
2007-12-30 06:08:14 -05:00
} \
2007-01-20 02:32:02 -05:00
} while ( 0 )
# ifndef NCURSES_NOMACROS
/*
* These miscellaneous pseudo functions are provided for compatibility :
*/
1999-08-23 21:06:48 -04:00
# define wgetstr(w, s) wgetnstr(w, s, -1)
2014-02-28 19:40:26 -05:00
# define getnstr(s, n) wgetnstr(stdscr, s, (n))
1999-08-23 21:06:48 -04:00
# define setterm(term) setupterm(term, 1, (int *)0)
# define fixterm() reset_prog_mode()
# define resetterm() reset_shell_mode()
# define saveterm() def_prog_mode()
# define crmode() cbreak()
# define nocrmode() nocbreak()
# define gettmode()
/* It seems older SYSV curses versions define these */
2007-12-30 06:08:14 -05:00
# if !NCURSES_OPAQUE
2020-02-07 03:36:41 -05:00
# define getattrs(win) NCURSES_CAST(int, NCURSES_OK_ADDR(win) ? (win)->_attrs : A_NORMAL)
# define getcurx(win) (NCURSES_OK_ADDR(win) ? (win)->_curx : ERR)
# define getcury(win) (NCURSES_OK_ADDR(win) ? (win)->_cury : ERR)
# define getbegx(win) (NCURSES_OK_ADDR(win) ? (win)->_begx : ERR)
# define getbegy(win) (NCURSES_OK_ADDR(win) ? (win)->_begy : ERR)
# define getmaxx(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxx + 1) : ERR)
# define getmaxy(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxy + 1) : ERR)
# define getparx(win) (NCURSES_OK_ADDR(win) ? (win)->_parx : ERR)
# define getpary(win) (NCURSES_OK_ADDR(win) ? (win)->_pary : ERR)
2007-12-30 06:08:14 -05:00
# endif /* NCURSES_OPAQUE */
1999-08-23 21:06:48 -04:00
2020-02-07 03:36:41 -05:00
# define wstandout(win) (wattrset(win,A_STANDOUT))
# define wstandend(win) (wattrset(win,A_NORMAL))
1999-08-23 21:06:48 -04:00
2007-01-20 02:32:02 -05:00
# define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
# define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
2007-12-30 06:08:14 -05:00
# if !NCURSES_OPAQUE
2020-02-07 03:36:41 -05:00
# if NCURSES_WATTR_MACROS
2014-02-28 19:40:26 -05:00
# if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
2020-02-07 03:36:41 -05:00
# define wattrset(win,at) \
( NCURSES_OK_ADDR ( win ) \
? ( ( win ) - > _color = NCURSES_CAST ( int , PAIR_NUMBER ( at ) ) , \
( win ) - > _attrs = NCURSES_CAST ( attr_t , at ) , \
OK ) \
: ERR )
2007-01-20 02:32:02 -05:00
# else
2020-02-07 03:36:41 -05:00
# define wattrset(win,at) \
( NCURSES_OK_ADDR ( win ) \
? ( ( win ) - > _attrs = NCURSES_CAST ( attr_t , at ) , \
OK ) \
: ERR )
2007-01-20 02:32:02 -05:00
# endif
2020-02-07 03:36:41 -05:00
# endif /* NCURSES_WATTR_MACROS */
2007-12-30 06:08:14 -05:00
# endif /* NCURSES_OPAQUE */
1999-08-23 21:06:48 -04:00
# define scroll(win) wscrl(win,1)
# define touchwin(win) wtouchln((win), 0, getmaxy(win), 1)
# define touchline(win, s, c) wtouchln((win), s, c, 1)
# define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0)
# define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0)
# define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
2014-02-28 19:40:26 -05:00
# define hline(ch, n) whline(stdscr, ch, (n))
# define vline(ch, n) wvline(stdscr, ch, (n))
1999-08-23 21:06:48 -04:00
# define winstr(w, s) winnstr(w, s, -1)
# define winchstr(w, s) winchnstr(w, s, -1)
# define winsstr(w, s) winsnstr(w, s, -1)
2007-12-30 06:08:14 -05:00
# if !NCURSES_OPAQUE
2020-02-07 03:36:41 -05:00
# define redrawwin(win) wredrawln(win, 0, (NCURSES_OK_ADDR(win) ? (win)->_maxy+1 : -1))
2007-12-30 06:08:14 -05:00
# endif /* NCURSES_OPAQUE */
1999-08-23 21:06:48 -04:00
# define waddstr(win,str) waddnstr(win,str,-1)
# define waddchstr(win,str) waddchnstr(win,str,-1)
2007-01-20 02:32:02 -05:00
/*
* These apply to the first 256 color pairs .
*/
2020-02-07 03:36:41 -05:00
# define COLOR_PAIR(n) (NCURSES_BITS((n), 0) & A_COLOR)
2014-02-28 19:40:26 -05:00
# define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
2007-01-20 02:32:02 -05:00
1999-08-23 21:06:48 -04:00
/*
* pseudo functions for standard screen
*/
2014-02-28 19:40:26 -05:00
# define addch(ch) waddch(stdscr,(ch))
# define addchnstr(str,n) waddchnstr(stdscr,(str),(n))
# define addchstr(str) waddchstr(stdscr,(str))
# define addnstr(str,n) waddnstr(stdscr,(str),(n))
# define addstr(str) waddnstr(stdscr,(str),-1)
# define attr_get(ap,cp,o) wattr_get(stdscr,(ap),(cp),(o))
# define attr_off(a,o) wattr_off(stdscr,(a),(o))
# define attr_on(a,o) wattr_on(stdscr,(a),(o))
# define attr_set(a,c,o) wattr_set(stdscr,(a),(c),(o))
2020-02-07 03:36:41 -05:00
# define attroff(at) wattroff(stdscr,(at))
# define attron(at) wattron(stdscr,(at))
# define attrset(at) wattrset(stdscr,(at))
2014-02-28 19:40:26 -05:00
# define bkgd(ch) wbkgd(stdscr,(ch))
# define bkgdset(ch) wbkgdset(stdscr,(ch))
# define chgat(n,a,c,o) wchgat(stdscr,(n),(a),(c),(o))
2002-05-21 01:30:25 -04:00
# define clear() wclear(stdscr)
# define clrtobot() wclrtobot(stdscr)
# define clrtoeol() wclrtoeol(stdscr)
2014-02-28 19:40:26 -05:00
# define color_set(c,o) wcolor_set(stdscr,(c),(o))
2002-05-21 01:30:25 -04:00
# define delch() wdelch(stdscr)
# define deleteln() winsdelln(stdscr,-1)
2014-02-28 19:40:26 -05:00
# define echochar(c) wechochar(stdscr,(c))
2002-05-21 01:30:25 -04:00
# define erase() werase(stdscr)
# define getch() wgetch(stdscr)
2014-02-28 19:40:26 -05:00
# define getstr(str) wgetstr(stdscr,(str))
2002-05-21 01:30:25 -04:00
# define inch() winch(stdscr)
2014-02-28 19:40:26 -05:00
# define inchnstr(s,n) winchnstr(stdscr,(s),(n))
# define inchstr(s) winchstr(stdscr,(s))
# define innstr(s,n) winnstr(stdscr,(s),(n))
# define insch(c) winsch(stdscr,(c))
# define insdelln(n) winsdelln(stdscr,(n))
2002-05-21 01:30:25 -04:00
# define insertln() winsdelln(stdscr,1)
2014-02-28 19:40:26 -05:00
# define insnstr(s,n) winsnstr(stdscr,(s),(n))
# define insstr(s) winsstr(stdscr,(s))
# define instr(s) winstr(stdscr,(s))
# define move(y,x) wmove(stdscr,(y),(x))
2002-05-21 01:30:25 -04:00
# define refresh() wrefresh(stdscr)
2014-02-28 19:40:26 -05:00
# define scrl(n) wscrl(stdscr,(n))
# define setscrreg(t,b) wsetscrreg(stdscr,(t),(b))
2002-05-21 01:30:25 -04:00
# define standend() wstandend(stdscr)
# define standout() wstandout(stdscr)
2014-02-28 19:40:26 -05:00
# define timeout(delay) wtimeout(stdscr,(delay))
2002-05-21 01:30:25 -04:00
# define wdeleteln(win) winsdelln(win,-1)
# define winsertln(win) winsdelln(win,1)
1999-08-23 21:06:48 -04:00
/*
* mv functions
*/
2014-02-28 19:40:26 -05:00
# define mvwaddch(win,y,x,ch) (wmove((win),(y),(x)) == ERR ? ERR : waddch((win),(ch)))
# define mvwaddchnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),(n)))
# define mvwaddchstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1))
# define mvwaddnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n)))
# define mvwaddstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1))
# define mvwchgat(win,y,x,n,a,c,o) (wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o)))
2020-02-07 03:36:41 -05:00
# define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
2014-02-28 19:40:26 -05:00
# define mvwgetch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wgetch(win))
# define mvwgetnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n)))
# define mvwgetstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str)))
# define mvwhline(win,y,x,c,n) (wmove((win),(y),(x)) == ERR ? ERR : whline((win),(c),(n)))
# define mvwinch(win,y,x) (wmove((win),(y),(x)) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
# define mvwinchnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winchnstr((win),(s),(n)))
# define mvwinchstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winchstr((win),(s)))
# define mvwinnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winnstr((win),(s),(n)))
# define mvwinsch(win,y,x,c) (wmove((win),(y),(x)) == ERR ? ERR : winsch((win),(c)))
# define mvwinsnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winsnstr((win),(s),(n)))
# define mvwinsstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winsstr((win),(s)))
# define mvwinstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winstr((win),(s)))
# define mvwvline(win,y,x,c,n) (wmove((win),(y),(x)) == ERR ? ERR : wvline((win),(c),(n)))
# define mvaddch(y,x,ch) mvwaddch(stdscr,(y),(x),(ch))
# define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,(y),(x),(str),(n))
# define mvaddchstr(y,x,str) mvwaddchstr(stdscr,(y),(x),(str))
# define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,(y),(x),(str),(n))
# define mvaddstr(y,x,str) mvwaddstr(stdscr,(y),(x),(str))
# define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,(y),(x),(n),(a),(c),(o))
# define mvdelch(y,x) mvwdelch(stdscr,(y),(x))
# define mvgetch(y,x) mvwgetch(stdscr,(y),(x))
# define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,(y),(x),(str),(n))
# define mvgetstr(y,x,str) mvwgetstr(stdscr,(y),(x),(str))
# define mvhline(y,x,c,n) mvwhline(stdscr,(y),(x),(c),(n))
# define mvinch(y,x) mvwinch(stdscr,(y),(x))
# define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,(y),(x),(s),(n))
# define mvinchstr(y,x,s) mvwinchstr(stdscr,(y),(x),(s))
# define mvinnstr(y,x,s,n) mvwinnstr(stdscr,(y),(x),(s),(n))
# define mvinsch(y,x,c) mvwinsch(stdscr,(y),(x),(c))
# define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,(y),(x),(s),(n))
# define mvinsstr(y,x,s) mvwinsstr(stdscr,(y),(x),(s))
# define mvinstr(y,x,s) mvwinstr(stdscr,(y),(x),(s))
# define mvvline(y,x,c,n) mvwvline(stdscr,(y),(x),(c),(n))
1999-08-23 21:06:48 -04:00
/*
2007-01-20 02:32:02 -05:00
* Some wide - character functions can be implemented without the extensions .
1999-08-23 21:06:48 -04:00
*/
2007-12-30 06:08:14 -05:00
# if !NCURSES_OPAQUE
2020-02-07 03:36:41 -05:00
# define getbkgd(win) (NCURSES_OK_ADDR(win) ? ((win)->_bkgd) : 0)
2007-12-30 06:08:14 -05:00
# endif /* NCURSES_OPAQUE */
1999-08-23 21:06:48 -04:00
# define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a))
# define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a))
2007-12-30 06:08:14 -05:00
# if !NCURSES_OPAQUE
2020-02-07 03:36:41 -05:00
# if NCURSES_WATTR_MACROS
2014-02-28 19:40:26 -05:00
# if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
2020-02-07 03:36:41 -05:00
# define wattr_set(win,a,p,opts) \
( NCURSES_OK_ADDR ( win ) \
? ( ( void ) ( ( win ) - > _attrs = ( ( a ) & ~ A_COLOR ) , \
( win ) - > _color = ( opts ) ? * ( int * ) ( opts ) : ( p ) ) , \
OK ) \
: ERR )
# define wattr_get(win,a,p,opts) \
( NCURSES_OK_ADDR ( win ) \
? ( ( void ) ( NCURSES_OK_ADDR ( a ) \
? ( * ( a ) = ( win ) - > _attrs ) \
: OK ) , \
( void ) ( NCURSES_OK_ADDR ( p ) \
? ( * ( p ) = ( NCURSES_PAIRS_T ) ( win ) - > _color ) \
: OK ) , \
( void ) ( NCURSES_OK_ADDR ( opts ) \
? ( * ( int * ) ( opts ) = ( win ) - > _color ) \
: OK ) , \
OK ) \
: ERR )
# else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
# define wattr_set(win,a,p,opts) \
( NCURSES_OK_ADDR ( win ) \
? ( ( void ) ( ( win ) - > _attrs = ( ( ( a ) & ~ A_COLOR ) | \
( attr_t ) COLOR_PAIR ( p ) ) ) , \
OK ) \
: ERR )
# define wattr_get(win,a,p,opts) \
( NCURSES_OK_ADDR ( win ) \
? ( ( void ) ( NCURSES_OK_ADDR ( a ) \
? ( * ( a ) = ( win ) - > _attrs ) \
: OK ) , \
( void ) ( NCURSES_OK_ADDR ( p ) \
? ( * ( p ) = ( NCURSES_PAIRS_T ) PAIR_NUMBER ( ( win ) - > _attrs ) ) \
: OK ) , \
OK ) \
: ERR )
# endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
# endif /* NCURSES_WATTR_MACROS */
2007-12-30 06:08:14 -05:00
# endif /* NCURSES_OPAQUE */
1999-08-23 21:06:48 -04:00
/*
2007-12-30 06:08:14 -05:00
* X / Open curses deprecates SVr4 vwprintw / vwscanw , which are supposed to use
1999-08-23 21:06:48 -04:00
* varargs . h . It adds new calls vw_printw / vw_scanw , which are supposed to
* use POSIX stdarg . h . The ncurses versions of vwprintw / vwscanw already
* use stdarg . h , so . . .
*/
2020-02-07 03:36:41 -05:00
/* define vw_printw vwprintw */
/* define vw_scanw vwscanw */
1999-08-23 21:06:48 -04:00
2002-05-21 01:30:25 -04:00
/*
* Export fallback function for use in C + + binding .
*/
# if !@HAVE_VSSCANF@
# define vsscanf(a,b,c) _nc_vsscanf(a,b,c)
NCURSES_EXPORT ( int ) vsscanf ( const char * , const char * , va_list ) ;
# endif
2007-12-30 06:08:14 -05:00
/*
* These macros are extensions - not in X / Open Curses .
*/
# if @NCURSES_EXT_FUNCS@
# if !NCURSES_OPAQUE
2020-02-07 03:36:41 -05:00
# define is_cleared(win) (NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE)
# define is_idcok(win) (NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE)
# define is_idlok(win) (NCURSES_OK_ADDR(win) ? (win)->_idlok : FALSE)
# define is_immedok(win) (NCURSES_OK_ADDR(win) ? (win)->_immed : FALSE)
# define is_keypad(win) (NCURSES_OK_ADDR(win) ? (win)->_use_keypad : FALSE)
# define is_leaveok(win) (NCURSES_OK_ADDR(win) ? (win)->_leaveok : FALSE)
# define is_nodelay(win) (NCURSES_OK_ADDR(win) ? ((win)->_delay == 0) : FALSE)
# define is_notimeout(win) (NCURSES_OK_ADDR(win) ? (win)->_notimeout : FALSE)
# define is_pad(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
# define is_scrollok(win) (NCURSES_OK_ADDR(win) ? (win)->_scroll : FALSE)
# define is_subwin(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
# define is_syncok(win) (NCURSES_OK_ADDR(win) ? (win)->_sync : FALSE)
# define wgetdelay(win) (NCURSES_OK_ADDR(win) ? (win)->_delay : 0)
# define wgetparent(win) (NCURSES_OK_ADDR(win) ? (win)->_parent : 0)
# define wgetscrreg(win,t,b) (NCURSES_OK_ADDR(win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
2007-12-30 06:08:14 -05:00
# endif
# endif
2020-02-07 03:36:41 -05:00
/*
* X / Open says this returns a bool ; SVr4 also checked for out - of - range line .
* The macro provides compatibility :
*/
# define is_linetouched(w,l) ((!(w) || ((l) > getmaxy(w)) || ((l) < 0)) ? ERR : (is_linetouched)((w),(l)))
2007-01-20 02:32:02 -05:00
# endif /* NCURSES_NOMACROS */
2007-12-30 06:08:14 -05:00
/*
* Public variables .
*
* Notes :
* a . ESCDELAY was an undocumented feature under AIX curses .
* It gives the ESC expire time in milliseconds .
* b . ttytype is needed for backward compatibility
*/
2014-02-28 14:18:07 -05:00
# if NCURSES_REENTRANT
2007-12-30 06:08:14 -05:00
NCURSES_WRAPPED_VAR ( WINDOW * , curscr ) ;
NCURSES_WRAPPED_VAR ( WINDOW * , newscr ) ;
NCURSES_WRAPPED_VAR ( WINDOW * , stdscr ) ;
NCURSES_WRAPPED_VAR ( char * , ttytype ) ;
NCURSES_WRAPPED_VAR ( int , COLORS ) ;
NCURSES_WRAPPED_VAR ( int , COLOR_PAIRS ) ;
NCURSES_WRAPPED_VAR ( int , COLS ) ;
NCURSES_WRAPPED_VAR ( int , ESCDELAY ) ;
NCURSES_WRAPPED_VAR ( int , LINES ) ;
NCURSES_WRAPPED_VAR ( int , TABSIZE ) ;
# define curscr NCURSES_PUBLIC_VAR(curscr())
# define newscr NCURSES_PUBLIC_VAR(newscr())
# define stdscr NCURSES_PUBLIC_VAR(stdscr())
# define ttytype NCURSES_PUBLIC_VAR(ttytype())
# define COLORS NCURSES_PUBLIC_VAR(COLORS())
# define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS())
# define COLS NCURSES_PUBLIC_VAR(COLS())
# define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY())
# define LINES NCURSES_PUBLIC_VAR(LINES())
# define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE())
# else
extern NCURSES_EXPORT_VAR ( WINDOW * ) curscr ;
extern NCURSES_EXPORT_VAR ( WINDOW * ) newscr ;
extern NCURSES_EXPORT_VAR ( WINDOW * ) stdscr ;
extern NCURSES_EXPORT_VAR ( char ) ttytype [ ] ;
extern NCURSES_EXPORT_VAR ( int ) COLORS ;
extern NCURSES_EXPORT_VAR ( int ) COLOR_PAIRS ;
extern NCURSES_EXPORT_VAR ( int ) COLS ;
extern NCURSES_EXPORT_VAR ( int ) ESCDELAY ;
extern NCURSES_EXPORT_VAR ( int ) LINES ;
extern NCURSES_EXPORT_VAR ( int ) TABSIZE ;
# endif
1999-08-23 21:06:48 -04:00
/*
* Pseudo - character tokens outside ASCII range . The curses wgetch ( ) function
* will return any given one of these only if the corresponding k - capability
* is defined in your terminal ' s terminfo entry .
2002-05-21 01:30:25 -04:00
*
* Some keys ( KEY_A1 , etc ) are arranged like this :
* a1 up a3
* left b2 right
* c1 down c3
*
* A few key codes do not depend upon the terminfo entry .
1999-08-23 21:06:48 -04:00
*/
# define KEY_CODE_YES 0400 /* A wchar_t contains a key code */
# define KEY_MIN 0401 /* Minimum curses key */
2002-05-21 01:30:25 -04:00
# define KEY_BREAK 0401 /* Break key (unreliable) */
# define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */
# define KEY_RESET 0531 /* Reset or hard reset (unreliable) */