150276Speter/**************************************************************************** 2176187Srafan * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * 350276Speter * * 450276Speter * Permission is hereby granted, free of charge, to any person obtaining a * 550276Speter * copy of this software and associated documentation files (the * 650276Speter * "Software"), to deal in the Software without restriction, including * 750276Speter * without limitation the rights to use, copy, modify, merge, publish, * 850276Speter * distribute, distribute with modifications, sublicense, and/or sell * 950276Speter * copies of the Software, and to permit persons to whom the Software is * 1050276Speter * furnished to do so, subject to the following conditions: * 1150276Speter * * 1250276Speter * The above copyright notice and this permission notice shall be included * 1350276Speter * in all copies or substantial portions of the Software. * 1450276Speter * * 1550276Speter * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 1650276Speter * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 1750276Speter * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 1850276Speter * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 1950276Speter * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 2050276Speter * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 2150276Speter * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 2250276Speter * * 2350276Speter * Except as contained in this notice, the name(s) of the above copyright * 2450276Speter * holders shall not be used in advertising or otherwise to promote the * 2550276Speter * sale, use or other dealings in this Software without prior written * 2650276Speter * authorization. * 2750276Speter ****************************************************************************/ 2850276Speter 2950276Speter/**************************************************************************** 3050276Speter * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * 3150276Speter * and: Eric S. Raymond <esr@snark.thyrsus.com> * 32166124Srafan * and: Thomas E. Dickey 1996-on * 3350276Speter ****************************************************************************/ 3450276Speter 35184989Srafan/* $Id: curses.h.in,v 1.187 2008/08/30 20:11:29 tom Exp $ */ 3650276Speter 3750276Speter#ifndef __NCURSES_H 3850276Speter#define __NCURSES_H 3950276Speter 4050276Speter#define CURSES 1 4150276Speter#define CURSES_H 1 4250276Speter 4350276Speter/* This should be defined for the enhanced functionality to be visible. 44166124Srafan * However, some of the wide-character (enhanced) functionality is missing. 4550276Speter * So we do not define it (yet). 4650276Speter#define _XOPEN_CURSES 1 4750276Speter */ 4850276Speter 4950276Speter/* These are defined only in curses.h, and are used for conditional compiles */ 5050276Speter#define NCURSES_VERSION_MAJOR @NCURSES_MAJOR@ 5150276Speter#define NCURSES_VERSION_MINOR @NCURSES_MINOR@ 5250276Speter#define NCURSES_VERSION_PATCH @NCURSES_PATCH@ 5350276Speter 5450276Speter/* This is defined in more than one ncurses header, for identification */ 5550276Speter#undef NCURSES_VERSION 5650276Speter#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@" 5750276Speter 58166124Srafan/* 59166124Srafan * Identify the mouse encoding version. 60166124Srafan */ 61166124Srafan#define NCURSES_MOUSE_VERSION @NCURSES_MOUSE_VERSION@ 62166124Srafan 63166124Srafan/* 64166124Srafan * Definitions to facilitate DLL's. 65166124Srafan */ 6676726Speter#include <ncurses_dll.h> 6776726Speter 68166124Srafan/* 69166124Srafan * User-definable tweak to disable the include of <stdbool.h>. 70166124Srafan */ 71166124Srafan#ifndef NCURSES_ENABLE_STDBOOL_H 72166124Srafan#define NCURSES_ENABLE_STDBOOL_H @cf_cv_header_stdbool_h@ 73166124Srafan#endif 74166124Srafan 75166124Srafan/* 76166124Srafan * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses 77166124Srafan * configured using --disable-macros. 78166124Srafan */ 7950276Speter#ifdef NCURSES_NOMACROS 80166124Srafan#ifndef NCURSES_ATTR_T 8150276Speter#define NCURSES_ATTR_T attr_t 8250276Speter#endif 83166124Srafan#endif /* NCURSES_NOMACROS */ 8450276Speter 8550276Speter#ifndef NCURSES_ATTR_T 8650276Speter#define NCURSES_ATTR_T int 8750276Speter#endif 8850276Speter 89166124Srafan/* 90166124Srafan * Expands to 'const' if ncurses is configured using --enable-const. Note that 91166124Srafan * doing so makes it incompatible with other implementations of X/Open Curses. 92166124Srafan */ 9350276Speter#undef NCURSES_CONST 9450276Speter#define NCURSES_CONST @NCURSES_CONST@ 9550276Speter 96166124Srafan#undef NCURSES_INLINE 97166124Srafan#define NCURSES_INLINE @NCURSES_INLINE@ 98166124Srafan 99166124Srafan/* 100166124Srafan * The internal type used for color values 101166124Srafan */ 10262449Speter#undef NCURSES_COLOR_T 10362449Speter#define NCURSES_COLOR_T short 10462449Speter 105166124Srafan/* 106174993Srafan * Definition used to make WINDOW and similar structs opaque. 107174993Srafan */ 108174993Srafan#ifndef @cf_cv_enable_opaque@ 109174993Srafan#define NCURSES_OPAQUE @NCURSES_OPAQUE@ 110174993Srafan#endif 111174993Srafan 112174993Srafan/* 113166124Srafan * The internal type used for window dimensions. 114166124Srafan */ 11562449Speter#undef NCURSES_SIZE_T 116174993Srafan#define NCURSES_SIZE_T @NCURSES_SIZE_T@ 11762449Speter 118166124Srafan/* 119166124Srafan * Control whether tparm() supports varargs or fixed-parameter list. 120166124Srafan */ 121166124Srafan#undef NCURSES_TPARM_VARARGS 122166124Srafan#define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@ 123166124Srafan 124166124Srafan/* 125166124Srafan * NCURSES_CH_T is used in building the library, but not used otherwise in 126166124Srafan * this header file, since that would make the normal/wide-character versions 127166124Srafan * of the header incompatible. 128166124Srafan */ 12997049Speter#undef NCURSES_CH_T 13097049Speter#define NCURSES_CH_T @NCURSES_CH_T@ 13197049Speter 132166124Srafan#if @cf_cv_enable_lp64@ && defined(_LP64) 133166124Srafantypedef unsigned chtype; 134166124Srafantypedef unsigned mmask_t; 135166124Srafan#else 13650276Spetertypedef unsigned @cf_cv_typeof_chtype@ chtype; 137166124Srafantypedef unsigned @cf_cv_typeof_mmask_t@ mmask_t; 138166124Srafan#endif 13950276Speter 14050276Speter#include <stdio.h> 14150276Speter#include <unctrl.h> 14250276Speter#include <stdarg.h> /* we need va_list */ 14350276Speter#ifdef _XOPEN_SOURCE_EXTENDED 14450276Speter#include <stddef.h> /* we want wchar_t */ 14550276Speter#endif /* _XOPEN_SOURCE_EXTENDED */ 14650276Speter 147174993Srafan/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also 14850276Speter * implement it. If so, we must use the C++ compiler's type to avoid conflict 14950276Speter * with other interfaces. 15097049Speter * 15197049Speter * A further complication is that <stdbool.h> may declare 'bool' to be a 15297049Speter * different type, such as an enum which is not necessarily compatible with 15397049Speter * C++. If we have <stdbool.h>, make 'bool' a macro, so users may #undef it. 15497049Speter * Otherwise, let it remain a typedef to avoid conflicts with other #define's. 15597049Speter * In either case, make a typedef for NCURSES_BOOL which can be used if needed 15697049Speter * from either C or C++. 15750276Speter */ 15850276Speter 15950276Speter#undef TRUE 16050276Speter#define TRUE 1 16150276Speter 16250276Speter#undef FALSE 16350276Speter#define FALSE 0 16450276Speter 16597049Spetertypedef @cf_cv_type_of_bool@ NCURSES_BOOL; 16697049Speter 167166124Srafan#if @USE_CXX_BOOL@ /* __cplusplus, etc. */ 16897049Speter 169166124Srafan/* use the C++ compiler's bool type */ 170166124Srafan#define NCURSES_BOOL bool 171166124Srafan 172166124Srafan#else /* c89, c99, etc. */ 173166124Srafan 174166124Srafan#if NCURSES_ENABLE_STDBOOL_H 17597049Speter#include <stdbool.h> 176166124Srafan/* use whatever the C compiler decides bool really is */ 177166124Srafan#define NCURSES_BOOL bool 178166124Srafan#else 179166124Srafan/* there is no predefined bool - use our own */ 18050276Speter#undef bool 18197049Speter#define bool NCURSES_BOOL 18250276Speter#endif 18350276Speter 18497049Speter#endif /* !__cplusplus, etc. */ 18597049Speter 18650276Speter#ifdef __cplusplus 18750276Speterextern "C" { 188166124Srafan#define NCURSES_CAST(type,value) static_cast<type>(value) 189166124Srafan#else 190166124Srafan#define NCURSES_CAST(type,value) (type)(value) 19150276Speter#endif 19250276Speter 19350276Speter/* 194174993Srafan * X/Open attributes. In the ncurses implementation, they are identical to the 19550276Speter * A_ attributes. 19650276Speter */ 19750276Speter#define WA_ATTRIBUTES A_ATTRIBUTES 19850276Speter#define WA_NORMAL A_NORMAL 19950276Speter#define WA_STANDOUT A_STANDOUT 20050276Speter#define WA_UNDERLINE A_UNDERLINE 20150276Speter#define WA_REVERSE A_REVERSE 20250276Speter#define WA_BLINK A_BLINK 20350276Speter#define WA_DIM A_DIM 20450276Speter#define WA_BOLD A_BOLD 20550276Speter#define WA_ALTCHARSET A_ALTCHARSET 20650276Speter#define WA_INVIS A_INVIS 20750276Speter#define WA_PROTECT A_PROTECT 20850276Speter#define WA_HORIZONTAL A_HORIZONTAL 20950276Speter#define WA_LEFT A_LEFT 21050276Speter#define WA_LOW A_LOW 21150276Speter#define WA_RIGHT A_RIGHT 21250276Speter#define WA_TOP A_TOP 21350276Speter#define WA_VERTICAL A_VERTICAL 21450276Speter 21550276Speter/* colors */ 21650276Speter#define COLOR_BLACK 0 21750276Speter#define COLOR_RED 1 21850276Speter#define COLOR_GREEN 2 21950276Speter#define COLOR_YELLOW 3 22050276Speter#define COLOR_BLUE 4 22150276Speter#define COLOR_MAGENTA 5 22250276Speter#define COLOR_CYAN 6 22350276Speter#define COLOR_WHITE 7 22450276Speter 22550276Speter/* line graphics */ 22650276Speter 227174993Srafan#if @BROKEN_LINKER@ || @cf_cv_enable_reentrant@ 228174993SrafanNCURSES_WRAPPED_VAR(chtype*, acs_map); 22997049Speter#define acs_map (_nc_acs_map()) 23097049Speter#else 23176726Speterextern NCURSES_EXPORT_VAR(chtype) acs_map[]; 23297049Speter#endif 23350276Speter 234166124Srafan#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)]) 235166124Srafan 23650276Speter/* VT100 symbols begin here */ 237166124Srafan#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */ 238166124Srafan#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */ 239166124Srafan#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */ 240166124Srafan#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */ 241166124Srafan#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */ 242166124Srafan#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */ 243166124Srafan#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */ 244166124Srafan#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */ 245166124Srafan#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */ 246166124Srafan#define ACS_VLINE NCURSES_ACS('x') /* vertical line */ 247166124Srafan#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */ 248166124Srafan#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */ 249166124Srafan#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */ 250166124Srafan#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */ 251166124Srafan#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */ 252166124Srafan#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */ 253166124Srafan#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */ 254166124Srafan#define ACS_BULLET NCURSES_ACS('~') /* bullet */ 25550276Speter/* Teletype 5410v1 symbols begin here */ 256166124Srafan#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */ 257166124Srafan#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */ 258166124Srafan#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */ 259166124Srafan#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */ 260166124Srafan#define ACS_BOARD NCURSES_ACS('h') /* board of squares */ 261166124Srafan#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */ 262166124Srafan#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */ 26350276Speter/* 26450276Speter * These aren't documented, but a lot of System Vs have them anyway 26550276Speter * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). 26650276Speter * The ACS_names may not match AT&T's, our source didn't know them. 26750276Speter */ 268166124Srafan#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */ 269166124Srafan#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */ 270166124Srafan#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */ 271166124Srafan#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */ 272166124Srafan#define ACS_PI NCURSES_ACS('{') /* Pi */ 273166124Srafan#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */ 274166124Srafan#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */ 27550276Speter 27650276Speter/* 27750276Speter * Line drawing ACS names are of the form ACS_trbl, where t is the top, r 27850276Speter * is the right, b is the bottom, and l is the left. t, r, b, and l might 27950276Speter * be B (blank), S (single), D (double), or T (thick). The subset defined 28050276Speter * here only uses B and S. 28150276Speter */ 28250276Speter#define ACS_BSSB ACS_ULCORNER 28350276Speter#define ACS_SSBB ACS_LLCORNER 28450276Speter#define ACS_BBSS ACS_URCORNER 28550276Speter#define ACS_SBBS ACS_LRCORNER 28650276Speter#define ACS_SBSS ACS_RTEE 28750276Speter#define ACS_SSSB ACS_LTEE 28850276Speter#define ACS_SSBS ACS_BTEE 28950276Speter#define ACS_BSSS ACS_TTEE 29050276Speter#define ACS_BSBS ACS_HLINE 29150276Speter#define ACS_SBSB ACS_VLINE 29250276Speter#define ACS_SSSS ACS_PLUS 29350276Speter 29497049Speter#undef ERR 29550276Speter#define ERR (-1) 29650276Speter 29797049Speter#undef OK 29850276Speter#define OK (0) 29950276Speter 30050276Speter/* values for the _flags member */ 30150276Speter#define _SUBWIN 0x01 /* is this a sub-window? */ 30250276Speter#define _ENDLINE 0x02 /* is the window flush right? */ 30350276Speter#define _FULLWIN 0x04 /* is the window full-screen? */ 30450276Speter#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ 30550276Speter#define _ISPAD 0x10 /* is this window a pad? */ 30650276Speter#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ 30750276Speter#define _WRAPPED 0x40 /* cursor was just wrappped */ 30850276Speter 30950276Speter/* 31050276Speter * this value is used in the firstchar and lastchar fields to mark 31150276Speter * unchanged lines 31250276Speter */ 31350276Speter#define _NOCHANGE -1 31450276Speter 31550276Speter/* 31650276Speter * this value is used in the oldindex field to mark lines created by insertions 31750276Speter * and scrolls. 31850276Speter */ 31950276Speter#define _NEWINDEX -1 32050276Speter 32150276Spetertypedef struct screen SCREEN; 32250276Spetertypedef struct _win_st WINDOW; 32350276Speter 32450276Spetertypedef chtype attr_t; /* ...must be at least as wide as chtype */ 32550276Speter 32650276Speter#ifdef _XOPEN_SOURCE_EXTENDED 32797049Speter 32897049Speter#if @NCURSES_LIBUTF8@ 32997049Speter#ifdef mblen /* libutf8.h defines it w/o undefining first */ 33097049Speter#undef mblen 33197049Speter#endif 33297049Speter#include <libutf8.h> 33397049Speter#endif 33497049Speter 335166124Srafan#if @NEED_WCHAR_H@ 33697049Speter#include <wchar.h> /* ...to get mbstate_t, etc. */ 33797049Speter#endif 33897049Speter 339166124Srafan#if @NCURSES_WCHAR_T@ 340166124Srafantypedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@; 341166124Srafan#endif 34250276Speter 343166124Srafan#if @NCURSES_WINT_T@ 344166124Srafantypedef unsigned int wint_t@NCURSES_OK_WCHAR_T@; 345166124Srafan#endif 346166124Srafan 34750276Speter#define CCHARW_MAX 5 34850276Spetertypedef struct 34950276Speter{ 35050276Speter attr_t attr; 35150276Speter wchar_t chars[CCHARW_MAX]; 352166124Srafan#if @NCURSES_EXT_COLORS@ 353174993Srafan#undef NCURSES_EXT_COLORS 354174993Srafan#define NCURSES_EXT_COLORS @NCURSES_PATCH@ 355166124Srafan int ext_color; /* color pair, must be more than 16-bits */ 356166124Srafan#endif 35750276Speter} 35850276Spetercchar_t; 35997049Speter 36050276Speter#endif /* _XOPEN_SOURCE_EXTENDED */ 36150276Speter 362174993Srafan#if !NCURSES_OPAQUE 36397049Speterstruct ldat; 36450276Speter 36550276Speterstruct _win_st 36650276Speter{ 36762449Speter NCURSES_SIZE_T _cury, _curx; /* current cursor position */ 36850276Speter 36950276Speter /* window location and size */ 37062449Speter NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */ 37162449Speter NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */ 37250276Speter 37350276Speter short _flags; /* window state flags */ 37450276Speter 37550276Speter /* attribute tracking */ 37650276Speter attr_t _attrs; /* current attribute for non-space character */ 37750276Speter chtype _bkgd; /* current background char/attribute pair */ 37850276Speter 37950276Speter /* option values set by user */ 38050276Speter bool _notimeout; /* no time out on function-key entry? */ 38197049Speter bool _clear; /* consider all data in the window invalid? */ 38297049Speter bool _leaveok; /* OK to not reset cursor on exit? */ 38397049Speter bool _scroll; /* OK to scroll this window? */ 38497049Speter bool _idlok; /* OK to use insert/delete line? */ 38597049Speter bool _idcok; /* OK to use insert/delete char? */ 38650276Speter bool _immed; /* window in immed mode? (not yet used) */ 38750276Speter bool _sync; /* window in sync mode? */ 38897049Speter bool _use_keypad; /* process function keys into KEY_ symbols? */ 38950276Speter int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ 39050276Speter 39150276Speter struct ldat *_line; /* the actual line data */ 39250276Speter 39350276Speter /* global screen state */ 39462449Speter NCURSES_SIZE_T _regtop; /* top line of scrolling region */ 39562449Speter NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */ 39650276Speter 39750276Speter /* these are used only if this is a sub-window */ 39850276Speter int _parx; /* x coordinate of this window in parent */ 39950276Speter int _pary; /* y coordinate of this window in parent */ 40050276Speter WINDOW *_parent; /* pointer to parent if a sub-window */ 40150276Speter 40250276Speter /* these are used only if this is a pad */ 40350276Speter struct pdat 40450276Speter { 40562449Speter NCURSES_SIZE_T _pad_y, _pad_x; 40662449Speter NCURSES_SIZE_T _pad_top, _pad_left; 40762449Speter NCURSES_SIZE_T _pad_bottom, _pad_right; 40850276Speter } _pad; 40950276Speter 41062449Speter NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ 41197049Speter 41297049Speter#ifdef _XOPEN_SOURCE_EXTENDED 41397049Speter cchar_t _bkgrnd; /* current background char/attribute pair */ 414166124Srafan#if @NCURSES_EXT_COLORS@ 415166124Srafan int _color; /* current color-pair for non-space character */ 41697049Speter#endif 417166124Srafan#endif 41850276Speter}; 419174993Srafan#endif /* NCURSES_OPAQUE */ 42050276Speter 42150276Speter/* 422166124Srafan * This is an extension to support events... 423166124Srafan */ 424166124Srafan#if @NCURSES_EXT_FUNCS@ 425166124Srafan#ifdef NCURSES_WGETCH_EVENTS 426184989Srafan#if !defined(__BEOS__) || defined(__HAIKU__) 427184989Srafan /* Fix _nc_timed_wait() on BEOS... */ 428166124Srafan# define NCURSES_EVENT_VERSION 1 429166124Srafan#endif /* !defined(__BEOS__) */ 430166124Srafan 431166124Srafan/* 432166124Srafan * Bits to set in _nc_event.data.flags 433166124Srafan */ 434166124Srafan# define _NC_EVENT_TIMEOUT_MSEC 1 435166124Srafan# define _NC_EVENT_FILE 2 436166124Srafan# define _NC_EVENT_FILE_READABLE 2 437166124Srafan# if 0 /* Not supported yet... */ 438166124Srafan# define _NC_EVENT_FILE_WRITABLE 4 439166124Srafan# define _NC_EVENT_FILE_EXCEPTION 8 440166124Srafan# endif 441166124Srafan 442166124Srafantypedef struct 443166124Srafan{ 444166124Srafan int type; 445166124Srafan union 446166124Srafan { 447166124Srafan long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */ 448166124Srafan struct 449166124Srafan { 450166124Srafan unsigned int flags; 451166124Srafan int fd; 452166124Srafan unsigned int result; 453166124Srafan } fev; /* _NC_EVENT_FILE */ 454166124Srafan } data; 455166124Srafan} _nc_event; 456166124Srafan 457166124Srafantypedef struct 458166124Srafan{ 459166124Srafan int count; 460166124Srafan int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */ 461166124Srafan _nc_event *events[1]; 462166124Srafan} _nc_eventlist; 463166124Srafan 464166124Srafanextern NCURSES_EXPORT(int) wgetch_events(WINDOW *, _nc_eventlist *); /* experimental */ 465166124Srafanextern NCURSES_EXPORT(int) wgetnstr_events(WINDOW *,char *,int,_nc_eventlist *);/* experimental */ 466166124Srafan 467166124Srafan#endif /* NCURSES_WGETCH_EVENTS */ 468166124Srafan#endif /* NCURSES_EXT_FUNCS */ 469166124Srafan 470166124Srafan/* 47150276Speter * GCC (and some other compilers) define '__attribute__'; we're using this 47250276Speter * macro to alert the compiler to flag inconsistencies in printf/scanf-like 47350276Speter * function calls. Just in case '__attribute__' isn't defined, make a dummy. 474166124Srafan * Old versions of G++ do not accept it anyway, at least not consistently with 475166124Srafan * GCC. 47650276Speter */ 477166124Srafan#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__)) 47850276Speter#define __attribute__(p) /* nothing */ 47950276Speter#endif 48050276Speter 48150276Speter/* 48250276Speter * We cannot define these in ncurses_cfg.h, since they require parameters to be 483166124Srafan * passed (that is non-portable). If you happen to be using gcc with warnings 484166124Srafan * enabled, define 485166124Srafan * GCC_PRINTF 486166124Srafan * GCC_SCANF 487166124Srafan * to improve checking of calls to printw(), etc. 48850276Speter */ 48997049Speter#ifndef GCC_PRINTFLIKE 49097049Speter#if defined(GCC_PRINTF) && !defined(printf) 49150276Speter#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) 49250276Speter#else 49350276Speter#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ 49450276Speter#endif 49597049Speter#endif 49650276Speter 49797049Speter#ifndef GCC_SCANFLIKE 49897049Speter#if defined(GCC_SCANF) && !defined(scanf) 49950276Speter#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) 50050276Speter#else 50150276Speter#define GCC_SCANFLIKE(fmt,var) /*nothing*/ 50250276Speter#endif 50397049Speter#endif 50450276Speter 50550276Speter#ifndef GCC_NORETURN 50650276Speter#define GCC_NORETURN /* nothing */ 50750276Speter#endif 50850276Speter 50950276Speter#ifndef GCC_UNUSED 51050276Speter#define GCC_UNUSED /* nothing */ 51150276Speter#endif 51250276Speter 51350276Speter/* 514174993Srafan * Function prototypes. This is the complete X/Open Curses list of required 51550276Speter * functions. Those marked `generated' will have sources generated from the 51650276Speter * macro definitions later in this file, in order to satisfy XPG4.2 51750276Speter * requirements. 51850276Speter */ 51950276Speter 52076726Speterextern NCURSES_EXPORT(int) addch (const chtype); /* generated */ 52176726Speterextern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */ 52276726Speterextern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */ 52376726Speterextern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */ 52476726Speterextern NCURSES_EXPORT(int) addstr (const char *); /* generated */ 52576726Speterextern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */ 52676726Speterextern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */ 52776726Speterextern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */ 52876726Speterextern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *); /* generated */ 52976726Speterextern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */ 53076726Speterextern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */ 53176726Speterextern NCURSES_EXPORT(int) attr_set (attr_t, short, void *); /* generated */ 53276726Speterextern NCURSES_EXPORT(int) baudrate (void); /* implemented */ 53376726Speterextern NCURSES_EXPORT(int) beep (void); /* implemented */ 53476726Speterextern NCURSES_EXPORT(int) bkgd (chtype); /* generated */ 53576726Speterextern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */ 53676726Speterextern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ 53776726Speterextern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */ 53876726Speterextern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */ 53976726Speterextern NCURSES_EXPORT(int) cbreak (void); /* implemented */ 54076726Speterextern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *); /* generated */ 54176726Speterextern NCURSES_EXPORT(int) clear (void); /* generated */ 54276726Speterextern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */ 54376726Speterextern NCURSES_EXPORT(int) clrtobot (void); /* generated */ 54476726Speterextern NCURSES_EXPORT(int) clrtoeol (void); /* generated */ 54576726Speterextern NCURSES_EXPORT(int) color_content (short,short*,short*,short*); /* implemented */ 54676726Speterextern NCURSES_EXPORT(int) color_set (short,void*); /* generated */ 54776726Speterextern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */ 54876726Speterextern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ 54976726Speterextern NCURSES_EXPORT(int) curs_set (int); /* implemented */ 55076726Speterextern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */ 55176726Speterextern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */ 55276726Speterextern NCURSES_EXPORT(int) delay_output (int); /* implemented */ 55376726Speterextern NCURSES_EXPORT(int) delch (void); /* generated */ 55476726Speterextern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */ 55576726Speterextern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */ 55676726Speterextern NCURSES_EXPORT(int) deleteln (void); /* generated */ 55776726Speterextern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */ 55876726Speterextern NCURSES_EXPORT(int) doupdate (void); /* implemented */ 55976726Speterextern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */ 56076726Speterextern NCURSES_EXPORT(int) echo (void); /* implemented */ 56176726Speterextern NCURSES_EXPORT(int) echochar (const chtype); /* generated */ 56276726Speterextern NCURSES_EXPORT(int) erase (void); /* generated */ 56376726Speterextern NCURSES_EXPORT(int) endwin (void); /* implemented */ 56476726Speterextern NCURSES_EXPORT(char) erasechar (void); /* implemented */ 56576726Speterextern NCURSES_EXPORT(void) filter (void); /* implemented */ 56676726Speterextern NCURSES_EXPORT(int) flash (void); /* implemented */ 56776726Speterextern NCURSES_EXPORT(int) flushinp (void); /* implemented */ 56876726Speterextern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */ 56976726Speterextern NCURSES_EXPORT(int) getch (void); /* generated */ 57076726Speterextern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */ 57176726Speterextern NCURSES_EXPORT(int) getstr (char *); /* generated */ 57276726Speterextern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */ 57376726Speterextern NCURSES_EXPORT(int) halfdelay (int); /* implemented */ 57476726Speterextern NCURSES_EXPORT(bool) has_colors (void); /* implemented */ 57576726Speterextern NCURSES_EXPORT(bool) has_ic (void); /* implemented */ 57676726Speterextern NCURSES_EXPORT(bool) has_il (void); /* implemented */ 57776726Speterextern NCURSES_EXPORT(int) hline (chtype, int); /* generated */ 57876726Speterextern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */ 57976726Speterextern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */ 58076726Speterextern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */ 58176726Speterextern NCURSES_EXPORT(chtype) inch (void); /* generated */ 58276726Speterextern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */ 58376726Speterextern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */ 58476726Speterextern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */ 58576726Speterextern NCURSES_EXPORT(int) init_color (short,short,short,short); /* implemented */ 58676726Speterextern NCURSES_EXPORT(int) init_pair (short,short,short); /* implemented */ 58776726Speterextern NCURSES_EXPORT(int) innstr (char *, int); /* generated */ 58876726Speterextern NCURSES_EXPORT(int) insch (chtype); /* generated */ 58976726Speterextern NCURSES_EXPORT(int) insdelln (int); /* generated */ 59076726Speterextern NCURSES_EXPORT(int) insertln (void); /* generated */ 59176726Speterextern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */ 59276726Speterextern NCURSES_EXPORT(int) insstr (const char *); /* generated */ 59376726Speterextern NCURSES_EXPORT(int) instr (char *); /* generated */ 59476726Speterextern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */ 59576726Speterextern NCURSES_EXPORT(bool) isendwin (void); /* implemented */ 59676726Speterextern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */ 59776726Speterextern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */ 59876726Speterextern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */ 59976726Speterextern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */ 60076726Speterextern NCURSES_EXPORT(char) killchar (void); /* implemented */ 60176726Speterextern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */ 60276726Speterextern NCURSES_EXPORT(char *) longname (void); /* implemented */ 60376726Speterextern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ 60476726Speterextern NCURSES_EXPORT(int) move (int, int); /* generated */ 60576726Speterextern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */ 60676726Speterextern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */ 60776726Speterextern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */ 60876726Speterextern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */ 60976726Speterextern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */ 61076726Speterextern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *); /* generated */ 61176726Speterextern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */ 61276726Speterextern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */ 61376726Speterextern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */ 61476726Speterextern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */ 61576726Speterextern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */ 61676726Speterextern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */ 61776726Speterextern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */ 61876726Speterextern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */ 61976726Speterextern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */ 62076726Speterextern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */ 62176726Speterextern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */ 62276726Speterextern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */ 62376726Speterextern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */ 62476726Speterextern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */ 62576726Speterextern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */ 626166124Srafanextern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */ 62750276Speter GCC_PRINTFLIKE(3,4); 62876726Speterextern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */ 62950276Speter GCC_SCANFLIKE(3,4); 63076726Speterextern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */ 63176726Speterextern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */ 63276726Speterextern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */ 63376726Speterextern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */ 63476726Speterextern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */ 63576726Speterextern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */ 63676726Speterextern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */ 63776726Speterextern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */ 63876726Speterextern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */ 63976726Speterextern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */ 64076726Speterextern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */ 64176726Speterextern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */ 64276726Speterextern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */ 64376726Speterextern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */ 64476726Speterextern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */ 64576726Speterextern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */ 64676726Speterextern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */ 64776726Speterextern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */ 64876726Speterextern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */ 64976726Speterextern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */ 65076726Speterextern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */ 651166124Srafanextern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */ 65250276Speter GCC_PRINTFLIKE(4,5); 65376726Speterextern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */ 65450276Speter GCC_SCANFLIKE(4,5); 65576726Speterextern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */ 65676726Speterextern NCURSES_EXPORT(int) napms (int); /* implemented */ 65776726Speterextern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */ 65876726Speterextern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */ 65976726Speterextern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */ 66076726Speterextern NCURSES_EXPORT(int) nl (void); /* implemented */ 66176726Speterextern NCURSES_EXPORT(int) nocbreak (void); /* implemented */ 66276726Speterextern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */ 66376726Speterextern NCURSES_EXPORT(int) noecho (void); /* implemented */ 66476726Speterextern NCURSES_EXPORT(int) nonl (void); /* implemented */ 66576726Speterextern NCURSES_EXPORT(void) noqiflush (void); /* implemented */ 66676726Speterextern NCURSES_EXPORT(int) noraw (void); /* implemented */ 66776726Speterextern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */ 66876726Speterextern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */ 66976726Speterextern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */ 67076726Speterextern NCURSES_EXPORT(int) pair_content (short,short*,short*); /* implemented */ 67176726Speterextern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */ 67276726Speterextern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */ 67376726Speterextern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */ 67476726Speterextern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */ 675166124Srafanextern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */ 67650276Speter GCC_PRINTFLIKE(1,2); 67776726Speterextern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */ 67876726Speterextern NCURSES_EXPORT(void) qiflush (void); /* implemented */ 67976726Speterextern NCURSES_EXPORT(int) raw (void); /* implemented */ 68076726Speterextern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */ 68176726Speterextern NCURSES_EXPORT(int) refresh (void); /* generated */ 68276726Speterextern NCURSES_EXPORT(int) resetty (void); /* implemented */ 68376726Speterextern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */ 68476726Speterextern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */ 68597049Speterextern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */ 68676726Speterextern NCURSES_EXPORT(int) savetty (void); /* implemented */ 68776726Speterextern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */ 68850276Speter GCC_SCANFLIKE(1,2); 68976726Speterextern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */ 69076726Speterextern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */ 69176726Speterextern NCURSES_EXPORT(int) scrl (int); /* generated */ 69276726Speterextern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */ 69376726Speterextern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */ 69476726Speterextern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */ 69576726Speterextern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */ 69676726Speterextern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */ 69776726Speterextern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */ 69876726Speterextern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */ 69976726Speterextern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */ 70076726Speterextern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */ 70176726Speterextern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */ 70276726Speterextern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */ 70376726Speterextern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */ 70476726Speterextern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*); /* implemented */ 70576726Speterextern NCURSES_EXPORT(int) slk_clear (void); /* implemented */ 70676726Speterextern NCURSES_EXPORT(int) slk_color (short); /* implemented */ 70776726Speterextern NCURSES_EXPORT(int) slk_init (int); /* implemented */ 70876726Speterextern NCURSES_EXPORT(char *) slk_label (int); /* implemented */ 70976726Speterextern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */ 71076726Speterextern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */ 71176726Speterextern NCURSES_EXPORT(int) slk_restore (void); /* implemented */ 71276726Speterextern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */ 71376726Speterextern NCURSES_EXPORT(int) slk_touch (void); /* implemented */ 71476726Speterextern NCURSES_EXPORT(int) standout (void); /* generated */ 71576726Speterextern NCURSES_EXPORT(int) standend (void); /* generated */ 71676726Speterextern NCURSES_EXPORT(int) start_color (void); /* implemented */ 71776726Speterextern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */ 718174993Srafanextern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */ 71976726Speterextern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */ 72076726Speterextern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */ 72176726Speterextern NCURSES_EXPORT(char *) termname (void); /* implemented */ 72276726Speterextern NCURSES_EXPORT(void) timeout (int); /* generated */ 72376726Speterextern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */ 72476726Speterextern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */ 72576726Speterextern NCURSES_EXPORT(int) typeahead (int); /* implemented */ 72676726Speterextern NCURSES_EXPORT(int) ungetch (int); /* implemented */ 72776726Speterextern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */ 72876726Speterextern NCURSES_EXPORT(void) use_env (bool); /* implemented */ 72976726Speterextern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */ 73076726Speterextern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int)); /* implemented */ 73176726Speterextern NCURSES_EXPORT(int) vline (chtype, int); /* generated */ 732166124Srafanextern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */ 733166124Srafanextern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */ 73476726Speterextern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ 73576726Speterextern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */ 73676726Speterextern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */ 737166124Srafanextern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */ 73876726Speterextern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */ 739166124Srafanextern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ 74076726Speterextern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */ 74176726Speterextern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */ 74276726Speterextern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */ 74376726Speterextern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */ 74476726Speterextern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */ 745166124Srafanextern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */ 746166124Srafanextern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */ 747166124Srafanextern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */ 748166124Srafanextern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */ 74976726Speterextern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */ 75076726Speterextern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ 75176726Speterextern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */ 75276726Speterextern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */ 75376726Speterextern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */ 75476726Speterextern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */ 75576726Speterextern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*); /* implemented */ 75676726Speterextern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */ 75776726Speterextern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */ 75876726Speterextern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */ 75976726Speterextern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */ 76076726Speterextern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */ 76176726Speterextern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */ 76276726Speterextern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */ 76376726Speterextern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */ 76476726Speterextern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */ 76576726Speterextern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */ 76676726Speterextern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */ 76776726Speterextern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */ 76876726Speterextern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */ 76976726Speterextern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */ 77076726Speterextern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */ 77176726Speterextern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */ 77276726Speterextern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */ 77376726Speterextern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */ 77476726Speterextern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */ 77576726Speterextern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */ 77676726Speterextern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */ 777166124Srafanextern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */ 77850276Speter GCC_PRINTFLIKE(2,3); 77976726Speterextern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */ 78076726Speterextern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */ 78176726Speterextern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */ 78250276Speter GCC_SCANFLIKE(2,3); 78376726Speterextern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */ 78476726Speterextern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */ 78576726Speterextern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */ 78676726Speterextern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */ 78776726Speterextern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */ 78876726Speterextern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */ 78976726Speterextern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */ 79076726Speterextern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */ 79176726Speterextern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */ 79250276Speter 79397049Speter/* 794166124Srafan * These are also declared in <term.h>: 79597049Speter */ 796166124Srafanextern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */ 797166124Srafanextern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */ 798166124Srafanextern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */ 799166124Srafanextern NCURSES_EXPORT(int) putp (const char *); /* implemented */ 800166124Srafan 801166124Srafan#if NCURSES_TPARM_VARARGS 802174993Srafanextern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ 803166124Srafan#else 804174993Srafanextern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ 805174993Srafanextern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ 806166124Srafan#endif 807166124Srafan 808166124Srafan/* 809166124Srafan * These functions are not in X/Open, but we use them in macro definitions: 810166124Srafan */ 811174993Srafanextern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */ 812166124Srafanextern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */ 813166124Srafanextern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */ 814166124Srafanextern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */ 815166124Srafanextern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */ 816166124Srafanextern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */ 817166124Srafanextern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */ 818166124Srafanextern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */ 819166124Srafanextern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ 820166124Srafan 821166124Srafan/* 822174993Srafan * vid_attr() was implemented originally based on a draft of X/Open curses. 823166124Srafan */ 82497049Speter#ifndef _XOPEN_SOURCE_EXTENDED 82597049Speter#define vid_attr(a,pair,opts) vidattr(a) 82697049Speter#endif 82750276Speter 828174993Srafan/* 829174993Srafan * These functions are extensions - not in X/Open Curses. 830174993Srafan */ 831174993Srafan#if @NCURSES_EXT_FUNCS@ 832174993Srafan#undef NCURSES_EXT_FUNCS 833174993Srafan#define NCURSES_EXT_FUNCS @NCURSES_PATCH@ 834178866Srafantypedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); 835178866Srafantypedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); 836174993Srafanextern NCURSES_EXPORT(bool) is_term_resized (int, int); 837174993Srafanextern NCURSES_EXPORT(char *) keybound (int, int); 838174993Srafanextern NCURSES_EXPORT(const char *) curses_version (void); 839174993Srafanextern NCURSES_EXPORT(int) assume_default_colors (int, int); 840174993Srafanextern NCURSES_EXPORT(int) define_key (const char *, int); 841174993Srafanextern NCURSES_EXPORT(int) key_defined (const char *); 842174993Srafanextern NCURSES_EXPORT(int) keyok (int, bool); 843174993Srafanextern NCURSES_EXPORT(int) resize_term (int, int); 844174993Srafanextern NCURSES_EXPORT(int) resizeterm (int, int); 845176187Srafanextern NCURSES_EXPORT(int) set_escdelay (int); 846176187Srafanextern NCURSES_EXPORT(int) set_tabsize (int); 847174993Srafanextern NCURSES_EXPORT(int) use_default_colors (void); 848174993Srafanextern NCURSES_EXPORT(int) use_extended_names (bool); 849174993Srafanextern NCURSES_EXPORT(int) use_legacy_coding (int); 850178866Srafanextern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *); 851178866Srafanextern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *); 852174993Srafanextern NCURSES_EXPORT(int) wresize (WINDOW *, int, int); 853174993Srafanextern NCURSES_EXPORT(void) nofilter(void); 854174993Srafan 855174993Srafan/* 856174993Srafan * These extensions provide access to information stored in the WINDOW even 857174993Srafan * when NCURSES_OPAQUE is set: 858174993Srafan */ 859174993Srafanextern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* generated */ 860174993Srafanextern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* generated */ 861174993Srafanextern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* generated */ 862174993Srafanextern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* generated */ 863174993Srafanextern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* generated */ 864174993Srafanextern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* generated */ 865174993Srafanextern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* generated */ 866174993Srafanextern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* generated */ 867174993Srafanextern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* generated */ 868174993Srafanextern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* generated */ 869174993Srafanextern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* generated */ 870174993Srafanextern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */ 871174993Srafan 872174993Srafan#else 873174993Srafan#define curses_version() NCURSES_VERSION 874174993Srafan#endif 875174993Srafan 87650276Speter/* attributes */ 87750276Speter 87897049Speter#define NCURSES_ATTR_SHIFT 8 87997049Speter#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT)) 88050276Speter 881166124Srafan#define A_NORMAL (@cf_cv_1UL@ - @cf_cv_1UL@) 88250276Speter#define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0) 88350276Speter#define A_CHARTEXT (NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@) 88450276Speter#define A_COLOR NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0) 88550276Speter#define A_STANDOUT NCURSES_BITS(@cf_cv_1UL@,8) 88650276Speter#define A_UNDERLINE NCURSES_BITS(@cf_cv_1UL@,9) 88750276Speter#define A_REVERSE NCURSES_BITS(@cf_cv_1UL@,10) 88850276Speter#define A_BLINK NCURSES_BITS(@cf_cv_1UL@,11) 88950276Speter#define A_DIM NCURSES_BITS(@cf_cv_1UL@,12) 89050276Speter#define A_BOLD NCURSES_BITS(@cf_cv_1UL@,13) 89150276Speter#define A_ALTCHARSET NCURSES_BITS(@cf_cv_1UL@,14) 89250276Speter#define A_INVIS NCURSES_BITS(@cf_cv_1UL@,15) 89350276Speter#define A_PROTECT NCURSES_BITS(@cf_cv_1UL@,16) 89450276Speter#define A_HORIZONTAL NCURSES_BITS(@cf_cv_1UL@,17) 89550276Speter#define A_LEFT NCURSES_BITS(@cf_cv_1UL@,18) 89650276Speter#define A_LOW NCURSES_BITS(@cf_cv_1UL@,19) 89750276Speter#define A_RIGHT NCURSES_BITS(@cf_cv_1UL@,20) 89850276Speter#define A_TOP NCURSES_BITS(@cf_cv_1UL@,21) 89950276Speter#define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22) 90050276Speter 901166124Srafan/* 902166124Srafan * Most of the pseudo functions are macros that either provide compatibility 903166124Srafan * with older versions of curses, or provide inline functionality to improve 904166124Srafan * performance. 905166124Srafan */ 90650276Speter 90750276Speter/* 908166124Srafan * These pseudo functions are always implemented as macros: 90950276Speter */ 910166124Srafan 911166124Srafan#define getyx(win,y,x) (y = getcury(win), x = getcurx(win)) 912166124Srafan#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win)) 913166124Srafan#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win)) 914166124Srafan#define getparyx(win,y,x) (y = getpary(win), x = getparx(win)) 915166124Srafan 916178866Srafan#define getsyx(y,x) do { if (newscr) { \ 917178866Srafan if (is_leaveok(newscr)) \ 918178866Srafan (y) = (x) = -1; \ 919178866Srafan else \ 920178866Srafan getyx(newscr,(y), (x)); \ 921178866Srafan } \ 922166124Srafan } while(0) 923174993Srafan 924178866Srafan#define setsyx(y,x) do { if (newscr) { \ 925178866Srafan if ((y) == -1 && (x) == -1) \ 926178866Srafan leaveok(newscr, TRUE); \ 927178866Srafan else { \ 928178866Srafan leaveok(newscr, FALSE); \ 929178866Srafan wmove(newscr, (y), (x)); \ 930178866Srafan } \ 931174993Srafan } \ 932166124Srafan } while(0) 933166124Srafan 934166124Srafan#ifndef NCURSES_NOMACROS 935166124Srafan 936166124Srafan/* 937166124Srafan * These miscellaneous pseudo functions are provided for compatibility: 938166124Srafan */ 939166124Srafan 94050276Speter#define wgetstr(w, s) wgetnstr(w, s, -1) 94150276Speter#define getnstr(s, n) wgetnstr(stdscr, s, n) 94250276Speter 94350276Speter#define setterm(term) setupterm(term, 1, (int *)0) 94450276Speter 94550276Speter#define fixterm() reset_prog_mode() 94650276Speter#define resetterm() reset_shell_mode() 94750276Speter#define saveterm() def_prog_mode() 94850276Speter#define crmode() cbreak() 94950276Speter#define nocrmode() nocbreak() 95050276Speter#define gettmode() 95150276Speter 95250276Speter/* It seems older SYSV curses versions define these */ 953174993Srafan#if !NCURSES_OPAQUE 954174993Srafan#define getattrs(win) ((win) ? (win)->_attrs : A_NORMAL) 955174993Srafan#define getcurx(win) ((win) ? (win)->_curx : ERR) 956174993Srafan#define getcury(win) ((win) ? (win)->_cury : ERR) 957174993Srafan#define getbegx(win) ((win) ? (win)->_begx : ERR) 958174993Srafan#define getbegy(win) ((win) ? (win)->_begy : ERR) 959174993Srafan#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR) 960174993Srafan#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR) 961174993Srafan#define getparx(win) ((win) ? (win)->_parx : ERR) 962174993Srafan#define getpary(win) ((win) ? (win)->_pary : ERR) 963174993Srafan#endif /* NCURSES_OPAQUE */ 96450276Speter 96550276Speter#define wstandout(win) (wattrset(win,A_STANDOUT)) 96650276Speter#define wstandend(win) (wattrset(win,A_NORMAL)) 96750276Speter 968166124Srafan#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL) 969166124Srafan#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL) 970166124Srafan 971174993Srafan#if !NCURSES_OPAQUE 972166124Srafan#if defined(_XOPEN_SOURCE_EXTENDED) && @NCURSES_EXT_COLORS@ 973166124Srafan#define wattrset(win,at) ((win)->_color = PAIR_NUMBER(at), \ 974166124Srafan (win)->_attrs = (at)) 975166124Srafan#else 97697049Speter#define wattrset(win,at) ((win)->_attrs = (at)) 977166124Srafan#endif 978174993Srafan#endif /* NCURSES_OPAQUE */ 97950276Speter 98050276Speter#define scroll(win) wscrl(win,1) 98150276Speter 98250276Speter#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) 98350276Speter#define touchline(win, s, c) wtouchln((win), s, c, 1) 98450276Speter#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) 98550276Speter 98650276Speter#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) 98750276Speter#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) 98850276Speter#define hline(ch, n) whline(stdscr, ch, n) 98950276Speter#define vline(ch, n) wvline(stdscr, ch, n) 99050276Speter 99150276Speter#define winstr(w, s) winnstr(w, s, -1) 99250276Speter#define winchstr(w, s) winchnstr(w, s, -1) 99350276Speter#define winsstr(w, s) winsnstr(w, s, -1) 99450276Speter 995174993Srafan#if !NCURSES_OPAQUE 99662449Speter#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1) 997174993Srafan#endif /* NCURSES_OPAQUE */ 998174993Srafan 99950276Speter#define waddstr(win,str) waddnstr(win,str,-1) 100050276Speter#define waddchstr(win,str) waddchnstr(win,str,-1) 100150276Speter 100250276Speter/* 1003166124Srafan * These apply to the first 256 color pairs. 1004166124Srafan */ 1005166124Srafan#define COLOR_PAIR(n) NCURSES_BITS(n, 0) 1006166124Srafan#define PAIR_NUMBER(a) (NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT))) 1007166124Srafan 1008166124Srafan/* 100950276Speter * pseudo functions for standard screen 101050276Speter */ 101150276Speter 101297049Speter#define addch(ch) waddch(stdscr,ch) 101350276Speter#define addchnstr(str,n) waddchnstr(stdscr,str,n) 101450276Speter#define addchstr(str) waddchstr(stdscr,str) 101550276Speter#define addnstr(str,n) waddnstr(stdscr,str,n) 101697049Speter#define addstr(str) waddnstr(stdscr,str,-1) 101797049Speter#define attroff(at) wattroff(stdscr,at) 101897049Speter#define attron(at) wattron(stdscr,at) 101997049Speter#define attrset(at) wattrset(stdscr,at) 102097049Speter#define attr_get(ap,cp,o) wattr_get(stdscr,ap,cp,o) 102197049Speter#define attr_off(a,o) wattr_off(stdscr,a,o) 102297049Speter#define attr_on(a,o) wattr_on(stdscr,a,o) 102397049Speter#define attr_set(a,c,o) wattr_set(stdscr,a,c,o) 102450276Speter#define bkgd(ch) wbkgd(stdscr,ch) 102550276Speter#define bkgdset(ch) wbkgdset(stdscr,ch) 102697049Speter#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o) 102797049Speter#define clear() wclear(stdscr) 102897049Speter#define clrtobot() wclrtobot(stdscr) 102997049Speter#define clrtoeol() wclrtoeol(stdscr) 103050276Speter#define color_set(c,o) wcolor_set(stdscr,c,o) 103197049Speter#define delch() wdelch(stdscr) 103297049Speter#define deleteln() winsdelln(stdscr,-1) 103350276Speter#define echochar(c) wechochar(stdscr,c) 103497049Speter#define erase() werase(stdscr) 103597049Speter#define getch() wgetch(stdscr) 103697049Speter#define getstr(str) wgetstr(stdscr,str) 103797049Speter#define inch() winch(stdscr) 103850276Speter#define inchnstr(s,n) winchnstr(stdscr,s,n) 103950276Speter#define inchstr(s) winchstr(stdscr,s) 104050276Speter#define innstr(s,n) winnstr(stdscr,s,n) 104197049Speter#define insch(c) winsch(stdscr,c) 104250276Speter#define insdelln(n) winsdelln(stdscr,n) 104397049Speter#define insertln() winsdelln(stdscr,1) 104450276Speter#define insnstr(s,n) winsnstr(stdscr,s,n) 104550276Speter#define insstr(s) winsstr(stdscr,s) 104650276Speter#define instr(s) winstr(stdscr,s) 104797049Speter#define move(y,x) wmove(stdscr,y,x) 104897049Speter#define refresh() wrefresh(stdscr) 104950276Speter#define scrl(n) wscrl(stdscr,n) 105097049Speter#define setscrreg(t,b) wsetscrreg(stdscr,t,b) 105197049Speter#define standend() wstandend(stdscr) 105297049Speter#define standout() wstandout(stdscr) 105350276Speter#define timeout(delay) wtimeout(stdscr,delay) 105497049Speter#define wdeleteln(win) winsdelln(win,-1) 105597049Speter#define winsertln(win) winsdelln(win,1) 105650276Speter 105750276Speter/* 105850276Speter * mv functions 105950276Speter */ 106050276Speter 106197049Speter#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch)) 106250276Speter#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n)) 106397049Speter#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1)) 106450276Speter#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n)) 106597049Speter#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1)) 106697049Speter#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win)) 106797049Speter#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o)) 106897049Speter#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win)) 106997049Speter#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n)) 107097049Speter#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str)) 107197049Speter#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n)) 1072166124Srafan#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win)) 107350276Speter#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n)) 107450276Speter#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s)) 107550276Speter#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n)) 107697049Speter#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c)) 107750276Speter#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n)) 107850276Speter#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s)) 107950276Speter#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s)) 108097049Speter#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n)) 108150276Speter 108297049Speter#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) 108350276Speter#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n) 108450276Speter#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str) 108550276Speter#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n) 108697049Speter#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) 108797049Speter#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o) 108897049Speter#define mvdelch(y,x) mvwdelch(stdscr,y,x) 108997049Speter#define mvgetch(y,x) mvwgetch(stdscr,y,x) 109050276Speter#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n) 109197049Speter#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) 109250276Speter#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n) 109397049Speter#define mvinch(y,x) mvwinch(stdscr,y,x) 109450276Speter#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n) 109550276Speter#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s) 109650276Speter#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n) 109797049Speter#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c) 109850276Speter#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n) 109950276Speter#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s) 110050276Speter#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s) 110150276Speter#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n) 110250276Speter 110350276Speter/* 1104166124Srafan * Some wide-character functions can be implemented without the extensions. 110550276Speter */ 1106174993Srafan#if !NCURSES_OPAQUE 110797049Speter#define getbkgd(win) ((win)->_bkgd) 1108174993Srafan#endif /* NCURSES_OPAQUE */ 110950276Speter 111050276Speter#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) 111150276Speter#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) 111250276Speter 1113174993Srafan#if !NCURSES_OPAQUE 1114166124Srafan#if defined(_XOPEN_SOURCE_EXTENDED) && @NCURSES_EXT_COLORS@ 1115166124Srafan#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \ 1116166124Srafan (win)->_color = (p), \ 1117166124Srafan OK) 1118178866Srafan#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ 1119178866Srafan (void)((p) != (void *)0 && (*(p) = (win)->_color)), \ 1120166124Srafan OK) 1121166124Srafan#else 1122166124Srafan#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK) 1123178866Srafan#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ 1124178866Srafan (void)((p) != (void *)0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \ 112550276Speter OK) 1126166124Srafan#endif 1127174993Srafan#endif /* NCURSES_OPAQUE */ 112850276Speter 112950276Speter/* 1130174993Srafan * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use 113150276Speter * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to 113250276Speter * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already 113350276Speter * use stdarg.h, so... 113450276Speter */ 113550276Speter#define vw_printw vwprintw 113650276Speter#define vw_scanw vwscanw 113750276Speter 113850276Speter/* 113997049Speter * Export fallback function for use in C++ binding. 114097049Speter */ 114197049Speter#if !@HAVE_VSSCANF@ 114297049Speter#define vsscanf(a,b,c) _nc_vsscanf(a,b,c) 114397049SpeterNCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); 114497049Speter#endif 114597049Speter 1146174993Srafan/* 1147174993Srafan * These macros are extensions - not in X/Open Curses. 1148174993Srafan */ 1149174993Srafan#if @NCURSES_EXT_FUNCS@ 1150174993Srafan#if !NCURSES_OPAQUE 1151174993Srafan#define is_cleared(win) ((win)->_clear) 1152174993Srafan#define is_idcok(win) ((win)->_idcok) 1153174993Srafan#define is_idlok(win) ((win)->_idlok) 1154174993Srafan#define is_immedok(win) ((win)->_immed) 1155174993Srafan#define is_keypad(win) ((win)->_use_keypad) 1156174993Srafan#define is_leaveok(win) ((win)->_leaveok) 1157174993Srafan#define is_nodelay(win) ((win)->_delay == 0) 1158174993Srafan#define is_notimeout(win) ((win)->_notimeout) 1159174993Srafan#define is_scrollok(win) ((win)->_scroll) 1160174993Srafan#define is_syncok(win) ((win)->_sync) 1161174993Srafan#define wgetparent(win) ((win) ? (win)->_parent : 0) 1162174993Srafan#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR) 1163174993Srafan#endif 1164174993Srafan#endif 1165174993Srafan 1166166124Srafan#endif /* NCURSES_NOMACROS */ 1167166124Srafan 116897049Speter/* 1169174993Srafan * Public variables. 1170174993Srafan * 1171174993Srafan * Notes: 1172174993Srafan * a. ESCDELAY was an undocumented feature under AIX curses. 1173174993Srafan * It gives the ESC expire time in milliseconds. 1174174993Srafan * b. ttytype is needed for backward compatibility 1175174993Srafan */ 1176174993Srafan#if @cf_cv_enable_reentrant@ 1177174993Srafan 1178174993SrafanNCURSES_WRAPPED_VAR(WINDOW *, curscr); 1179174993SrafanNCURSES_WRAPPED_VAR(WINDOW *, newscr); 1180174993SrafanNCURSES_WRAPPED_VAR(WINDOW *, stdscr); 1181174993SrafanNCURSES_WRAPPED_VAR(char *, ttytype); 1182174993SrafanNCURSES_WRAPPED_VAR(int, COLORS); 1183174993SrafanNCURSES_WRAPPED_VAR(int, COLOR_PAIRS); 1184174993SrafanNCURSES_WRAPPED_VAR(int, COLS); 1185174993SrafanNCURSES_WRAPPED_VAR(int, ESCDELAY); 1186174993SrafanNCURSES_WRAPPED_VAR(int, LINES); 1187174993SrafanNCURSES_WRAPPED_VAR(int, TABSIZE); 1188174993Srafan 1189174993Srafan#define curscr NCURSES_PUBLIC_VAR(curscr()) 1190174993Srafan#define newscr NCURSES_PUBLIC_VAR(newscr()) 1191174993Srafan#define stdscr NCURSES_PUBLIC_VAR(stdscr()) 1192174993Srafan#define ttytype NCURSES_PUBLIC_VAR(ttytype()) 1193174993Srafan#define COLORS NCURSES_PUBLIC_VAR(COLORS()) 1194174993Srafan#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS()) 1195174993Srafan#define COLS NCURSES_PUBLIC_VAR(COLS()) 1196174993Srafan#define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY()) 1197174993Srafan#define LINES NCURSES_PUBLIC_VAR(LINES()) 1198174993Srafan#define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE()) 1199174993Srafan 1200174993Srafan#else 1201174993Srafan 1202174993Srafanextern NCURSES_EXPORT_VAR(WINDOW *) curscr; 1203174993Srafanextern NCURSES_EXPORT_VAR(WINDOW *) newscr; 1204174993Srafanextern NCURSES_EXPORT_VAR(WINDOW *) stdscr; 1205174993Srafanextern NCURSES_EXPORT_VAR(char) ttytype[]; 1206174993Srafanextern NCURSES_EXPORT_VAR(int) COLORS; 1207174993Srafanextern NCURSES_EXPORT_VAR(int) COLOR_PAIRS; 1208174993Srafanextern NCURSES_EXPORT_VAR(int) COLS; 1209174993Srafanextern NCURSES_EXPORT_VAR(int) ESCDELAY; 1210174993Srafanextern NCURSES_EXPORT_VAR(int) LINES; 1211174993Srafanextern NCURSES_EXPORT_VAR(int) TABSIZE; 1212174993Srafan 1213174993Srafan#endif 1214174993Srafan 1215174993Srafan/* 121650276Speter * Pseudo-character tokens outside ASCII range. The curses wgetch() function 121750276Speter * will return any given one of these only if the corresponding k- capability 121850276Speter * is defined in your terminal's terminfo entry. 121997049Speter * 122097049Speter * Some keys (KEY_A1, etc) are arranged like this: 122197049Speter * a1 up a3 122297049Speter * left b2 right 122397049Speter * c1 down c3 122497049Speter * 122597049Speter * A few key codes do not depend upon the terminfo entry. 122650276Speter */ 122750276Speter#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ 122850276Speter#define KEY_MIN 0401 /* Minimum curses key */ 122997049Speter#define KEY_BREAK 0401 /* Break key (unreliable) */ 123097049Speter#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ 123197049Speter#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ 1232