annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/curses.h @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
rev   line source
jpayne@69 1 /****************************************************************************
jpayne@69 2 * Copyright 2018-2023,2024 Thomas E. Dickey *
jpayne@69 3 * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
jpayne@69 4 * *
jpayne@69 5 * Permission is hereby granted, free of charge, to any person obtaining a *
jpayne@69 6 * copy of this software and associated documentation files (the *
jpayne@69 7 * "Software"), to deal in the Software without restriction, including *
jpayne@69 8 * without limitation the rights to use, copy, modify, merge, publish, *
jpayne@69 9 * distribute, distribute with modifications, sublicense, and/or sell *
jpayne@69 10 * copies of the Software, and to permit persons to whom the Software is *
jpayne@69 11 * furnished to do so, subject to the following conditions: *
jpayne@69 12 * *
jpayne@69 13 * The above copyright notice and this permission notice shall be included *
jpayne@69 14 * in all copies or substantial portions of the Software. *
jpayne@69 15 * *
jpayne@69 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
jpayne@69 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
jpayne@69 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
jpayne@69 19 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
jpayne@69 20 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
jpayne@69 21 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
jpayne@69 22 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
jpayne@69 23 * *
jpayne@69 24 * Except as contained in this notice, the name(s) of the above copyright *
jpayne@69 25 * holders shall not be used in advertising or otherwise to promote the *
jpayne@69 26 * sale, use or other dealings in this Software without prior written *
jpayne@69 27 * authorization. *
jpayne@69 28 ****************************************************************************/
jpayne@69 29
jpayne@69 30 /****************************************************************************
jpayne@69 31 * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
jpayne@69 32 * and: Eric S. Raymond <esr@snark.thyrsus.com> *
jpayne@69 33 * and: Thomas E. Dickey 1996-on *
jpayne@69 34 ****************************************************************************/
jpayne@69 35
jpayne@69 36 /* $Id: curses.h.in,v 1.282 2024/01/19 11:50:07 tom Exp $ */
jpayne@69 37
jpayne@69 38 #ifndef __NCURSES_H
jpayne@69 39 #define __NCURSES_H
jpayne@69 40
jpayne@69 41 /*
jpayne@69 42 The symbols beginning NCURSES_ or USE_ are configuration choices.
jpayne@69 43 A few of the former can be overridden by applications at compile-time.
jpayne@69 44 Most of the others correspond to configure-script options (or checks
jpayne@69 45 by the configure-script for features of the system on which it is built).
jpayne@69 46
jpayne@69 47 These symbols can be overridden by applications at compile-time:
jpayne@69 48 NCURSES_NOMACROS suppresses macro definitions in favor of functions
jpayne@69 49 NCURSES_WATTR_MACROS suppresses wattr_* macro definitions
jpayne@69 50 NCURSES_WIDECHAR is an alternative for declaring wide-character functions.
jpayne@69 51
jpayne@69 52 These symbols are used only when building ncurses:
jpayne@69 53 NCURSES_ATTR_T
jpayne@69 54 NCURSES_FIELD_INTERNALS
jpayne@69 55 NCURSES_INTERNALS
jpayne@69 56
jpayne@69 57 These symbols are set by the configure script:
jpayne@69 58 NCURSES_ENABLE_STDBOOL_H
jpayne@69 59 NCURSES_EXPANDED
jpayne@69 60 NCURSES_EXT_COLORS
jpayne@69 61 NCURSES_EXT_FUNCS
jpayne@69 62 NCURSES_EXT_PUTWIN
jpayne@69 63 NCURSES_NO_PADDING
jpayne@69 64 NCURSES_OSPEED_COMPAT
jpayne@69 65 NCURSES_PATHSEP
jpayne@69 66 NCURSES_REENTRANT
jpayne@69 67 NCURSES_SIGWINCH
jpayne@69 68 */
jpayne@69 69
jpayne@69 70 #define CURSES 1
jpayne@69 71 #define CURSES_H 1
jpayne@69 72
jpayne@69 73 /* These are defined only in curses.h, and are used for conditional compiles */
jpayne@69 74 #define NCURSES_VERSION_MAJOR 6
jpayne@69 75 #define NCURSES_VERSION_MINOR 5
jpayne@69 76 #define NCURSES_VERSION_PATCH 20240427
jpayne@69 77
jpayne@69 78 /* This is defined in more than one ncurses header, for identification */
jpayne@69 79 #undef NCURSES_VERSION
jpayne@69 80 #define NCURSES_VERSION "6.5"
jpayne@69 81
jpayne@69 82 /*
jpayne@69 83 * Identify the mouse encoding version.
jpayne@69 84 */
jpayne@69 85 #define NCURSES_MOUSE_VERSION 2
jpayne@69 86
jpayne@69 87 /*
jpayne@69 88 * Definitions to facilitate DLL's.
jpayne@69 89 */
jpayne@69 90 #include <ncursesw/ncurses_dll.h>
jpayne@69 91
jpayne@69 92 /*
jpayne@69 93 * Extra headers.
jpayne@69 94 */
jpayne@69 95 #if 1
jpayne@69 96 #include <stdint.h>
jpayne@69 97 #endif
jpayne@69 98
jpayne@69 99 #ifdef __cplusplus
jpayne@69 100 #else
jpayne@69 101 #if 0
jpayne@69 102 #include <stdnoreturn.h>
jpayne@69 103 #undef GCC_NORETURN
jpayne@69 104 #define GCC_NORETURN _Noreturn
jpayne@69 105 #endif
jpayne@69 106 #endif
jpayne@69 107
jpayne@69 108 /*
jpayne@69 109 * User-definable tweak to disable the include of <stdbool.h>.
jpayne@69 110 */
jpayne@69 111 #ifndef NCURSES_ENABLE_STDBOOL_H
jpayne@69 112 #define NCURSES_ENABLE_STDBOOL_H 1
jpayne@69 113 #endif
jpayne@69 114
jpayne@69 115 /*
jpayne@69 116 * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
jpayne@69 117 * configured using --disable-macros.
jpayne@69 118 */
jpayne@69 119 #ifndef NCURSES_ATTR_T
jpayne@69 120 #define NCURSES_ATTR_T int
jpayne@69 121 #endif
jpayne@69 122
jpayne@69 123 /*
jpayne@69 124 * Expands to 'const' if ncurses is configured using --enable-const. Note that
jpayne@69 125 * doing so makes it incompatible with other implementations of X/Open Curses.
jpayne@69 126 */
jpayne@69 127 #undef NCURSES_CONST
jpayne@69 128 #define NCURSES_CONST const
jpayne@69 129
jpayne@69 130 #undef NCURSES_INLINE
jpayne@69 131 #define NCURSES_INLINE inline
jpayne@69 132
jpayne@69 133 /*
jpayne@69 134 * The standard type used for color values, and for color-pairs. The latter
jpayne@69 135 * allows the curses library to enumerate the combinations of foreground and
jpayne@69 136 * background colors used by an application, and is normally the product of the
jpayne@69 137 * total foreground and background colors.
jpayne@69 138 *
jpayne@69 139 * X/Open uses "short" for both of these types, ultimately because they are
jpayne@69 140 * numbers from the SVr4 terminal database, which uses 16-bit signed values.
jpayne@69 141 */
jpayne@69 142 #undef NCURSES_COLOR_T
jpayne@69 143 #define NCURSES_COLOR_T short
jpayne@69 144
jpayne@69 145 #undef NCURSES_PAIRS_T
jpayne@69 146 #define NCURSES_PAIRS_T short
jpayne@69 147
jpayne@69 148 /*
jpayne@69 149 * Definitions used to make WINDOW and similar structs opaque.
jpayne@69 150 */
jpayne@69 151 #ifndef NCURSES_INTERNALS
jpayne@69 152 #define NCURSES_OPAQUE 1
jpayne@69 153 #define NCURSES_OPAQUE_FORM 1
jpayne@69 154 #define NCURSES_OPAQUE_MENU 1
jpayne@69 155 #define NCURSES_OPAQUE_PANEL 1
jpayne@69 156 #endif
jpayne@69 157
jpayne@69 158 /*
jpayne@69 159 * Definition used to optionally suppress wattr* macros to help with the
jpayne@69 160 * transition from ncurses5 to ncurses6 by allowing the header files to
jpayne@69 161 * be shared across development packages for ncursesw in both ABIs.
jpayne@69 162 */
jpayne@69 163 #ifndef NCURSES_WATTR_MACROS
jpayne@69 164 #define NCURSES_WATTR_MACROS 0
jpayne@69 165 #endif
jpayne@69 166
jpayne@69 167 /*
jpayne@69 168 * The reentrant code relies on the opaque setting, but adds features.
jpayne@69 169 */
jpayne@69 170 #ifndef NCURSES_REENTRANT
jpayne@69 171 #define NCURSES_REENTRANT 0
jpayne@69 172 #endif
jpayne@69 173
jpayne@69 174 /*
jpayne@69 175 * KEY_RESIZE is an extended feature that relies upon the SIGWINCH handler
jpayne@69 176 * in ncurses.
jpayne@69 177 */
jpayne@69 178 #if 1
jpayne@69 179 #ifndef NCURSES_SIGWINCH
jpayne@69 180 #define NCURSES_SIGWINCH 1
jpayne@69 181 #endif
jpayne@69 182 #else
jpayne@69 183 #undef NCURSES_SIGWINCH
jpayne@69 184 #define NCURSES_SIGWINCH 0
jpayne@69 185 #endif
jpayne@69 186
jpayne@69 187 /*
jpayne@69 188 * In certain environments, we must work around linker problems for data
jpayne@69 189 */
jpayne@69 190 #undef NCURSES_BROKEN_LINKER
jpayne@69 191 #if 0
jpayne@69 192 #define NCURSES_BROKEN_LINKER 1
jpayne@69 193 #endif
jpayne@69 194
jpayne@69 195 /*
jpayne@69 196 * Control whether bindings for interop support are added.
jpayne@69 197 */
jpayne@69 198 #undef NCURSES_INTEROP_FUNCS
jpayne@69 199 #define NCURSES_INTEROP_FUNCS 1
jpayne@69 200
jpayne@69 201 /*
jpayne@69 202 * The internal type used for window dimensions.
jpayne@69 203 */
jpayne@69 204 #undef NCURSES_SIZE_T
jpayne@69 205 #define NCURSES_SIZE_T short
jpayne@69 206
jpayne@69 207 /*
jpayne@69 208 * Control whether tparm() supports varargs or fixed-parameter list.
jpayne@69 209 */
jpayne@69 210 #undef NCURSES_TPARM_VARARGS
jpayne@69 211 #define NCURSES_TPARM_VARARGS 1
jpayne@69 212
jpayne@69 213 /*
jpayne@69 214 * Control type used for tparm's arguments. While X/Open equates long and
jpayne@69 215 * char* values, this is not always workable for 64-bit platforms.
jpayne@69 216 */
jpayne@69 217 #undef NCURSES_TPARM_ARG
jpayne@69 218 #define NCURSES_TPARM_ARG intptr_t
jpayne@69 219
jpayne@69 220 /*
jpayne@69 221 * Control whether ncurses uses wcwidth() for checking width of line-drawing
jpayne@69 222 * characters.
jpayne@69 223 */
jpayne@69 224 #undef NCURSES_WCWIDTH_GRAPHICS
jpayne@69 225 #define NCURSES_WCWIDTH_GRAPHICS 1
jpayne@69 226
jpayne@69 227 /*
jpayne@69 228 * NCURSES_CH_T is used in building the library, but not used otherwise in
jpayne@69 229 * this header file, since that would make the normal/wide-character versions
jpayne@69 230 * of the header incompatible.
jpayne@69 231 */
jpayne@69 232 #undef NCURSES_CH_T
jpayne@69 233 #define NCURSES_CH_T cchar_t
jpayne@69 234
jpayne@69 235 #if 1 && defined(_LP64)
jpayne@69 236 typedef unsigned chtype;
jpayne@69 237 typedef unsigned mmask_t;
jpayne@69 238 #else
jpayne@69 239 typedef uint32_t chtype;
jpayne@69 240 typedef uint32_t mmask_t;
jpayne@69 241 #endif
jpayne@69 242
jpayne@69 243 /*
jpayne@69 244 * We need FILE, etc. Include this before checking any feature symbols.
jpayne@69 245 */
jpayne@69 246 #include <stdio.h>
jpayne@69 247
jpayne@69 248 /*
jpayne@69 249 * With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or
jpayne@69 250 * conflicting) when _XOPEN_SOURCE is 500 or greater. If NCURSES_WIDECHAR is
jpayne@69 251 * not already defined, e.g., if the platform relies upon nonstandard feature
jpayne@69 252 * test macros, define it at this point if the standard feature test macros
jpayne@69 253 * indicate that it should be defined.
jpayne@69 254 */
jpayne@69 255 #ifndef NCURSES_WIDECHAR
jpayne@69 256 #if defined(_XOPEN_SOURCE_EXTENDED) || (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500))
jpayne@69 257 #define NCURSES_WIDECHAR 1
jpayne@69 258 #else
jpayne@69 259 #define NCURSES_WIDECHAR 0
jpayne@69 260 #endif
jpayne@69 261 #endif /* NCURSES_WIDECHAR */
jpayne@69 262
jpayne@69 263 #include <stdarg.h> /* we need va_list */
jpayne@69 264 #if NCURSES_WIDECHAR
jpayne@69 265 #include <stddef.h> /* we want wchar_t */
jpayne@69 266 #endif
jpayne@69 267
jpayne@69 268 /* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also
jpayne@69 269 * implement it. If so, we must use the C++ compiler's type to avoid conflict
jpayne@69 270 * with other interfaces.
jpayne@69 271 *
jpayne@69 272 * A further complication is that <stdbool.h> may declare 'bool' to be a
jpayne@69 273 * different type, such as an enum which is not necessarily compatible with
jpayne@69 274 * C++. If we have <stdbool.h>, make 'bool' a macro, so users may #undef it.
jpayne@69 275 * Otherwise, let it remain a typedef to avoid conflicts with other #define's.
jpayne@69 276 * In either case, make a typedef for NCURSES_BOOL which can be used if needed
jpayne@69 277 * from either C or C++.
jpayne@69 278 */
jpayne@69 279
jpayne@69 280 #undef TRUE
jpayne@69 281 #define TRUE 1
jpayne@69 282
jpayne@69 283 #undef FALSE
jpayne@69 284 #define FALSE 0
jpayne@69 285
jpayne@69 286 typedef unsigned char NCURSES_BOOL;
jpayne@69 287
jpayne@69 288 #if defined(__cplusplus) /* __cplusplus, etc. */
jpayne@69 289
jpayne@69 290 /* use the C++ compiler's bool type */
jpayne@69 291 #define NCURSES_BOOL bool
jpayne@69 292
jpayne@69 293 #else /* c89, c99, etc. */
jpayne@69 294
jpayne@69 295 #if NCURSES_ENABLE_STDBOOL_H
jpayne@69 296 #include <stdbool.h>
jpayne@69 297 /* use whatever the C compiler decides bool really is */
jpayne@69 298 #define NCURSES_BOOL bool
jpayne@69 299 #else
jpayne@69 300 /* there is no predefined bool - use our own */
jpayne@69 301 #undef bool
jpayne@69 302 #define bool NCURSES_BOOL
jpayne@69 303 #endif
jpayne@69 304
jpayne@69 305 #endif /* !__cplusplus, etc. */
jpayne@69 306
jpayne@69 307 #ifdef __cplusplus
jpayne@69 308 extern "C" {
jpayne@69 309 #define NCURSES_CAST(type,value) static_cast<type>(value)
jpayne@69 310 #else
jpayne@69 311 #define NCURSES_CAST(type,value) (type)(value)
jpayne@69 312 #endif
jpayne@69 313
jpayne@69 314 #define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p)))
jpayne@69 315
jpayne@69 316 /*
jpayne@69 317 * X/Open attributes. In the ncurses implementation, they are identical to the
jpayne@69 318 * A_ attributes.
jpayne@69 319 */
jpayne@69 320 #define WA_ATTRIBUTES A_ATTRIBUTES
jpayne@69 321 #define WA_NORMAL A_NORMAL
jpayne@69 322 #define WA_STANDOUT A_STANDOUT
jpayne@69 323 #define WA_UNDERLINE A_UNDERLINE
jpayne@69 324 #define WA_REVERSE A_REVERSE
jpayne@69 325 #define WA_BLINK A_BLINK
jpayne@69 326 #define WA_DIM A_DIM
jpayne@69 327 #define WA_BOLD A_BOLD
jpayne@69 328 #define WA_ALTCHARSET A_ALTCHARSET
jpayne@69 329 #define WA_INVIS A_INVIS
jpayne@69 330 #define WA_PROTECT A_PROTECT
jpayne@69 331 #define WA_HORIZONTAL A_HORIZONTAL
jpayne@69 332 #define WA_LEFT A_LEFT
jpayne@69 333 #define WA_LOW A_LOW
jpayne@69 334 #define WA_RIGHT A_RIGHT
jpayne@69 335 #define WA_TOP A_TOP
jpayne@69 336 #define WA_VERTICAL A_VERTICAL
jpayne@69 337
jpayne@69 338 #if 1
jpayne@69 339 #define WA_ITALIC A_ITALIC /* ncurses extension */
jpayne@69 340 #endif
jpayne@69 341
jpayne@69 342 /* colors */
jpayne@69 343 #define COLOR_BLACK 0
jpayne@69 344 #define COLOR_RED 1
jpayne@69 345 #define COLOR_GREEN 2
jpayne@69 346 #define COLOR_YELLOW 3
jpayne@69 347 #define COLOR_BLUE 4
jpayne@69 348 #define COLOR_MAGENTA 5
jpayne@69 349 #define COLOR_CYAN 6
jpayne@69 350 #define COLOR_WHITE 7
jpayne@69 351
jpayne@69 352 /* line graphics */
jpayne@69 353
jpayne@69 354 #if 0 || NCURSES_REENTRANT
jpayne@69 355 NCURSES_WRAPPED_VAR(chtype*, acs_map);
jpayne@69 356 #define acs_map NCURSES_PUBLIC_VAR(acs_map())
jpayne@69 357 #else
jpayne@69 358 extern NCURSES_EXPORT_VAR(chtype) acs_map[];
jpayne@69 359 #endif
jpayne@69 360
jpayne@69 361 #define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,(c))])
jpayne@69 362
jpayne@69 363 /* VT100 symbols begin here */
jpayne@69 364 #define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */
jpayne@69 365 #define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */
jpayne@69 366 #define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */
jpayne@69 367 #define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */
jpayne@69 368 #define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */
jpayne@69 369 #define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */
jpayne@69 370 #define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */
jpayne@69 371 #define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */
jpayne@69 372 #define ACS_HLINE NCURSES_ACS('q') /* horizontal line */
jpayne@69 373 #define ACS_VLINE NCURSES_ACS('x') /* vertical line */
jpayne@69 374 #define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */
jpayne@69 375 #define ACS_S1 NCURSES_ACS('o') /* scan line 1 */
jpayne@69 376 #define ACS_S9 NCURSES_ACS('s') /* scan line 9 */
jpayne@69 377 #define ACS_DIAMOND NCURSES_ACS('`') /* diamond */
jpayne@69 378 #define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */
jpayne@69 379 #define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */
jpayne@69 380 #define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */
jpayne@69 381 #define ACS_BULLET NCURSES_ACS('~') /* bullet */
jpayne@69 382 /* Teletype 5410v1 symbols begin here */
jpayne@69 383 #define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */
jpayne@69 384 #define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */
jpayne@69 385 #define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */
jpayne@69 386 #define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */
jpayne@69 387 #define ACS_BOARD NCURSES_ACS('h') /* board of squares */
jpayne@69 388 #define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */
jpayne@69 389 #define ACS_BLOCK NCURSES_ACS('0') /* solid square block */
jpayne@69 390 /*
jpayne@69 391 * These aren't documented, but a lot of System Vs have them anyway
jpayne@69 392 * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
jpayne@69 393 * The ACS_names may not match AT&T's, our source didn't know them.
jpayne@69 394 */
jpayne@69 395 #define ACS_S3 NCURSES_ACS('p') /* scan line 3 */
jpayne@69 396 #define ACS_S7 NCURSES_ACS('r') /* scan line 7 */
jpayne@69 397 #define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */
jpayne@69 398 #define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */
jpayne@69 399 #define ACS_PI NCURSES_ACS('{') /* Pi */
jpayne@69 400 #define ACS_NEQUAL NCURSES_ACS('|') /* not equal */
jpayne@69 401 #define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */
jpayne@69 402
jpayne@69 403 /*
jpayne@69 404 * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
jpayne@69 405 * is the right, b is the bottom, and l is the left. t, r, b, and l might
jpayne@69 406 * be B (blank), S (single), D (double), or T (thick). The subset defined
jpayne@69 407 * here only uses B and S.
jpayne@69 408 */
jpayne@69 409 #define ACS_BSSB ACS_ULCORNER
jpayne@69 410 #define ACS_SSBB ACS_LLCORNER
jpayne@69 411 #define ACS_BBSS ACS_URCORNER
jpayne@69 412 #define ACS_SBBS ACS_LRCORNER
jpayne@69 413 #define ACS_SBSS ACS_RTEE
jpayne@69 414 #define ACS_SSSB ACS_LTEE
jpayne@69 415 #define ACS_SSBS ACS_BTEE
jpayne@69 416 #define ACS_BSSS ACS_TTEE
jpayne@69 417 #define ACS_BSBS ACS_HLINE
jpayne@69 418 #define ACS_SBSB ACS_VLINE
jpayne@69 419 #define ACS_SSSS ACS_PLUS
jpayne@69 420
jpayne@69 421 #undef ERR
jpayne@69 422 #define ERR (-1)
jpayne@69 423
jpayne@69 424 #undef OK
jpayne@69 425 #define OK (0)
jpayne@69 426
jpayne@69 427 /* values for the _flags member */
jpayne@69 428 #define _SUBWIN 0x01 /* is this a sub-window? */
jpayne@69 429 #define _ENDLINE 0x02 /* is the window flush right? */
jpayne@69 430 #define _FULLWIN 0x04 /* is the window full-screen? */
jpayne@69 431 #define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */
jpayne@69 432 #define _ISPAD 0x10 /* is this window a pad? */
jpayne@69 433 #define _HASMOVED 0x20 /* has cursor moved since last refresh? */
jpayne@69 434 #define _WRAPPED 0x40 /* cursor was just wrappped */
jpayne@69 435
jpayne@69 436 /*
jpayne@69 437 * this value is used in the firstchar and lastchar fields to mark
jpayne@69 438 * unchanged lines
jpayne@69 439 */
jpayne@69 440 #define _NOCHANGE -1
jpayne@69 441
jpayne@69 442 /*
jpayne@69 443 * this value is used in the oldindex field to mark lines created by insertions
jpayne@69 444 * and scrolls.
jpayne@69 445 */
jpayne@69 446 #define _NEWINDEX -1
jpayne@69 447
jpayne@69 448 #ifdef NCURSES_INTERNALS
jpayne@69 449 #undef SCREEN
jpayne@69 450 #define SCREEN struct screen
jpayne@69 451 SCREEN;
jpayne@69 452 #else
jpayne@69 453 typedef struct screen SCREEN;
jpayne@69 454 #endif
jpayne@69 455
jpayne@69 456 typedef struct _win_st WINDOW;
jpayne@69 457
jpayne@69 458 typedef chtype attr_t; /* ...must be at least as wide as chtype */
jpayne@69 459
jpayne@69 460 #if NCURSES_WIDECHAR
jpayne@69 461
jpayne@69 462 #if 0
jpayne@69 463 #ifdef mblen /* libutf8.h defines it w/o undefining first */
jpayne@69 464 #undef mblen
jpayne@69 465 #endif
jpayne@69 466 #include <libutf8.h>
jpayne@69 467 #endif
jpayne@69 468
jpayne@69 469 #if 1
jpayne@69 470 #include <wchar.h> /* ...to get mbstate_t, etc. */
jpayne@69 471 #endif
jpayne@69 472
jpayne@69 473 #if 0
jpayne@69 474 typedef unsigned short wchar_t1;
jpayne@69 475 #endif
jpayne@69 476
jpayne@69 477 #if 0
jpayne@69 478 typedef unsigned int wint_t1;
jpayne@69 479 #endif
jpayne@69 480
jpayne@69 481 /*
jpayne@69 482 * cchar_t stores an array of CCHARW_MAX wide characters. The first is
jpayne@69 483 * normally a spacing character. The others are non-spacing. If those
jpayne@69 484 * (spacing and nonspacing) do not fill the array, a null L'\0' follows.
jpayne@69 485 * Otherwise, a null is assumed to follow when extracting via getcchar().
jpayne@69 486 */
jpayne@69 487 #define CCHARW_MAX 5
jpayne@69 488 typedef struct
jpayne@69 489 {
jpayne@69 490 attr_t attr;
jpayne@69 491 wchar_t chars[CCHARW_MAX];
jpayne@69 492 #if 1
jpayne@69 493 #undef NCURSES_EXT_COLORS
jpayne@69 494 #define NCURSES_EXT_COLORS 20240427
jpayne@69 495 int ext_color; /* color pair, must be more than 16-bits */
jpayne@69 496 #endif
jpayne@69 497 }
jpayne@69 498 cchar_t;
jpayne@69 499
jpayne@69 500 #endif /* NCURSES_WIDECHAR */
jpayne@69 501
jpayne@69 502 #if !NCURSES_OPAQUE
jpayne@69 503 struct ldat;
jpayne@69 504
jpayne@69 505 struct _win_st
jpayne@69 506 {
jpayne@69 507 NCURSES_SIZE_T _cury, _curx; /* current cursor position */
jpayne@69 508
jpayne@69 509 /* window location and size */
jpayne@69 510 NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */
jpayne@69 511 NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */
jpayne@69 512
jpayne@69 513 short _flags; /* window state flags */
jpayne@69 514
jpayne@69 515 /* attribute tracking */
jpayne@69 516 attr_t _attrs; /* current attribute for non-space character */
jpayne@69 517 chtype _bkgd; /* current background char/attribute pair */
jpayne@69 518
jpayne@69 519 /* option values set by user */
jpayne@69 520 bool _notimeout; /* no time out on function-key entry? */
jpayne@69 521 bool _clear; /* consider all data in the window invalid? */
jpayne@69 522 bool _leaveok; /* OK to not reset cursor on exit? */
jpayne@69 523 bool _scroll; /* OK to scroll this window? */
jpayne@69 524 bool _idlok; /* OK to use insert/delete line? */
jpayne@69 525 bool _idcok; /* OK to use insert/delete char? */
jpayne@69 526 bool _immed; /* window in immed mode? (not yet used) */
jpayne@69 527 bool _sync; /* window in sync mode? */
jpayne@69 528 bool _use_keypad; /* process function keys into KEY_ symbols? */
jpayne@69 529 int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */
jpayne@69 530
jpayne@69 531 struct ldat *_line; /* the actual line data */
jpayne@69 532
jpayne@69 533 /* global screen state */
jpayne@69 534 NCURSES_SIZE_T _regtop; /* top line of scrolling region */
jpayne@69 535 NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */
jpayne@69 536
jpayne@69 537 /* these are used only if this is a sub-window */
jpayne@69 538 int _parx; /* x coordinate of this window in parent */
jpayne@69 539 int _pary; /* y coordinate of this window in parent */
jpayne@69 540 WINDOW *_parent; /* pointer to parent if a sub-window */
jpayne@69 541
jpayne@69 542 /* these are used only if this is a pad */
jpayne@69 543 struct pdat
jpayne@69 544 {
jpayne@69 545 NCURSES_SIZE_T _pad_y, _pad_x;
jpayne@69 546 NCURSES_SIZE_T _pad_top, _pad_left;
jpayne@69 547 NCURSES_SIZE_T _pad_bottom, _pad_right;
jpayne@69 548 } _pad;
jpayne@69 549
jpayne@69 550 NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
jpayne@69 551
jpayne@69 552 #if NCURSES_WIDECHAR
jpayne@69 553 cchar_t _bkgrnd; /* current background char/attribute pair */
jpayne@69 554 #if 1
jpayne@69 555 int _color; /* current color-pair for non-space character */
jpayne@69 556 #endif
jpayne@69 557 #endif
jpayne@69 558 };
jpayne@69 559 #endif /* NCURSES_OPAQUE */
jpayne@69 560
jpayne@69 561 /*
jpayne@69 562 * GCC (and some other compilers) define '__attribute__'; we're using this
jpayne@69 563 * macro to alert the compiler to flag inconsistencies in printf/scanf-like
jpayne@69 564 * function calls. Just in case '__attribute__' isn't defined, make a dummy.
jpayne@69 565 * Old versions of G++ do not accept it anyway, at least not consistently with
jpayne@69 566 * GCC.
jpayne@69 567 */
jpayne@69 568 #if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
jpayne@69 569 #define __attribute__(p) /* nothing */
jpayne@69 570 #endif
jpayne@69 571
jpayne@69 572 /*
jpayne@69 573 * We cannot define these in ncurses_cfg.h, since they require parameters to be
jpayne@69 574 * passed (that is non-portable).
jpayne@69 575 */
jpayne@69 576 #ifndef GCC_PRINTFLIKE
jpayne@69 577 #ifndef printf
jpayne@69 578 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
jpayne@69 579 #else
jpayne@69 580 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
jpayne@69 581 #endif
jpayne@69 582 #endif
jpayne@69 583
jpayne@69 584 #ifndef GCC_SCANFLIKE
jpayne@69 585 #ifndef scanf
jpayne@69 586 #define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
jpayne@69 587 #else
jpayne@69 588 #define GCC_SCANFLIKE(fmt,var) /*nothing*/
jpayne@69 589 #endif
jpayne@69 590 #endif
jpayne@69 591
jpayne@69 592 #ifndef GCC_NORETURN
jpayne@69 593 #define GCC_NORETURN /* nothing */
jpayne@69 594 #endif
jpayne@69 595
jpayne@69 596 #ifndef GCC_UNUSED
jpayne@69 597 #define GCC_UNUSED /* nothing */
jpayne@69 598 #endif
jpayne@69 599
jpayne@69 600 #undef GCC_DEPRECATED
jpayne@69 601 #if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2)) && !defined(NCURSES_INTERNALS)
jpayne@69 602 #define GCC_DEPRECATED(msg) __attribute__((deprecated))
jpayne@69 603 #else
jpayne@69 604 #define GCC_DEPRECATED(msg) /* nothing */
jpayne@69 605 #endif
jpayne@69 606
jpayne@69 607 /*
jpayne@69 608 * Curses uses a helper function. Define our type for this to simplify
jpayne@69 609 * extending it for the sp-funcs feature.
jpayne@69 610 */
jpayne@69 611 typedef int (*NCURSES_OUTC)(int);
jpayne@69 612
jpayne@69 613 /*
jpayne@69 614 * Function prototypes. This is the complete X/Open Curses list of required
jpayne@69 615 * functions. Those marked `generated' will have sources generated from the
jpayne@69 616 * macro definitions later in this file, in order to satisfy XPG4.2
jpayne@69 617 * requirements.
jpayne@69 618 */
jpayne@69 619
jpayne@69 620 extern NCURSES_EXPORT(int) addch (const chtype); /* generated */
jpayne@69 621 extern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */
jpayne@69 622 extern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */
jpayne@69 623 extern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */
jpayne@69 624 extern NCURSES_EXPORT(int) addstr (const char *); /* generated */
jpayne@69 625 extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */
jpayne@69 626 extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */
jpayne@69 627 extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */
jpayne@69 628 extern NCURSES_EXPORT(int) attr_get (attr_t *, NCURSES_PAIRS_T *, void *); /* generated */
jpayne@69 629 extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */
jpayne@69 630 extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */
jpayne@69 631 extern NCURSES_EXPORT(int) attr_set (attr_t, NCURSES_PAIRS_T, void *); /* generated */
jpayne@69 632 extern NCURSES_EXPORT(int) baudrate (void); /* implemented */
jpayne@69 633 extern NCURSES_EXPORT(int) beep (void); /* implemented */
jpayne@69 634 extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */
jpayne@69 635 extern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */
jpayne@69 636 extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */
jpayne@69 637 extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */
jpayne@69 638 extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */
jpayne@69 639 extern NCURSES_EXPORT(int) cbreak (void); /* implemented */
jpayne@69 640 extern NCURSES_EXPORT(int) chgat (int, attr_t, NCURSES_PAIRS_T, const void *); /* generated */
jpayne@69 641 extern NCURSES_EXPORT(int) clear (void); /* generated */
jpayne@69 642 extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */
jpayne@69 643 extern NCURSES_EXPORT(int) clrtobot (void); /* generated */
jpayne@69 644 extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */
jpayne@69 645 extern NCURSES_EXPORT(int) color_content (NCURSES_COLOR_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*,NCURSES_COLOR_T*); /* implemented */
jpayne@69 646 extern NCURSES_EXPORT(int) color_set (NCURSES_PAIRS_T,void*); /* generated */
jpayne@69 647 extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */
jpayne@69 648 extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */
jpayne@69 649 extern NCURSES_EXPORT(int) curs_set (int); /* implemented */
jpayne@69 650 extern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */
jpayne@69 651 extern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */
jpayne@69 652 extern NCURSES_EXPORT(int) delay_output (int); /* implemented */
jpayne@69 653 extern NCURSES_EXPORT(int) delch (void); /* generated */
jpayne@69 654 extern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */
jpayne@69 655 extern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */
jpayne@69 656 extern NCURSES_EXPORT(int) deleteln (void); /* generated */
jpayne@69 657 extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */
jpayne@69 658 extern NCURSES_EXPORT(int) doupdate (void); /* implemented */
jpayne@69 659 extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */
jpayne@69 660 extern NCURSES_EXPORT(int) echo (void); /* implemented */
jpayne@69 661 extern NCURSES_EXPORT(int) echochar (const chtype); /* generated */
jpayne@69 662 extern NCURSES_EXPORT(int) erase (void); /* generated */
jpayne@69 663 extern NCURSES_EXPORT(int) endwin (void); /* implemented */
jpayne@69 664 extern NCURSES_EXPORT(char) erasechar (void); /* implemented */
jpayne@69 665 extern NCURSES_EXPORT(void) filter (void); /* implemented */
jpayne@69 666 extern NCURSES_EXPORT(int) flash (void); /* implemented */
jpayne@69 667 extern NCURSES_EXPORT(int) flushinp (void); /* implemented */
jpayne@69 668 extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */
jpayne@69 669 extern NCURSES_EXPORT(int) getch (void); /* generated */
jpayne@69 670 extern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */
jpayne@69 671 extern NCURSES_EXPORT(int) getstr (char *); /* generated */
jpayne@69 672 extern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */
jpayne@69 673 extern NCURSES_EXPORT(int) halfdelay (int); /* implemented */
jpayne@69 674 extern NCURSES_EXPORT(bool) has_colors (void); /* implemented */
jpayne@69 675 extern NCURSES_EXPORT(bool) has_ic (void); /* implemented */
jpayne@69 676 extern NCURSES_EXPORT(bool) has_il (void); /* implemented */
jpayne@69 677 extern NCURSES_EXPORT(int) hline (chtype, int); /* generated */
jpayne@69 678 extern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */
jpayne@69 679 extern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */
jpayne@69 680 extern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */
jpayne@69 681 extern NCURSES_EXPORT(chtype) inch (void); /* generated */
jpayne@69 682 extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */
jpayne@69 683 extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */
jpayne@69 684 extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */
jpayne@69 685 extern NCURSES_EXPORT(int) init_color (NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T); /* implemented */
jpayne@69 686 extern NCURSES_EXPORT(int) init_pair (NCURSES_PAIRS_T,NCURSES_COLOR_T,NCURSES_COLOR_T); /* implemented */
jpayne@69 687 extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */
jpayne@69 688 extern NCURSES_EXPORT(int) insch (chtype); /* generated */
jpayne@69 689 extern NCURSES_EXPORT(int) insdelln (int); /* generated */
jpayne@69 690 extern NCURSES_EXPORT(int) insertln (void); /* generated */
jpayne@69 691 extern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */
jpayne@69 692 extern NCURSES_EXPORT(int) insstr (const char *); /* generated */
jpayne@69 693 extern NCURSES_EXPORT(int) instr (char *); /* generated */
jpayne@69 694 extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */
jpayne@69 695 extern NCURSES_EXPORT(bool) isendwin (void); /* implemented */
jpayne@69 696 extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */
jpayne@69 697 extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */
jpayne@69 698 extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */
jpayne@69 699 extern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */
jpayne@69 700 extern NCURSES_EXPORT(char) killchar (void); /* implemented */
jpayne@69 701 extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */
jpayne@69 702 extern NCURSES_EXPORT(char *) longname (void); /* implemented */
jpayne@69 703 extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */
jpayne@69 704 extern NCURSES_EXPORT(int) move (int, int); /* generated */
jpayne@69 705 extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */
jpayne@69 706 extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */
jpayne@69 707 extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */
jpayne@69 708 extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */
jpayne@69 709 extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */
jpayne@69 710 extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, NCURSES_PAIRS_T, const void *); /* generated */
jpayne@69 711 extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */
jpayne@69 712 extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */
jpayne@69 713 extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */
jpayne@69 714 extern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */
jpayne@69 715 extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */
jpayne@69 716 extern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */
jpayne@69 717 extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */
jpayne@69 718 extern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */
jpayne@69 719 extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */
jpayne@69 720 extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */
jpayne@69 721 extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */
jpayne@69 722 extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */
jpayne@69 723 extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */
jpayne@69 724 extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */
jpayne@69 725 extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */
jpayne@69 726 extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */
jpayne@69 727 GCC_PRINTFLIKE(3,4);
jpayne@69 728 extern NCURSES_EXPORT(int) mvscanw (int,int, const char *,...) /* implemented */
jpayne@69 729 GCC_SCANFLIKE(3,4);
jpayne@69 730 extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */
jpayne@69 731 extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */
jpayne@69 732 extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */
jpayne@69 733 extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */
jpayne@69 734 extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */
jpayne@69 735 extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */
jpayne@69 736 extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, NCURSES_PAIRS_T, const void *);/* generated */
jpayne@69 737 extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */
jpayne@69 738 extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */
jpayne@69 739 extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */
jpayne@69 740 extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */
jpayne@69 741 extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */
jpayne@69 742 extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */
jpayne@69 743 extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */
jpayne@69 744 extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */
jpayne@69 745 extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */
jpayne@69 746 extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */
jpayne@69 747 extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */
jpayne@69 748 extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */
jpayne@69 749 extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */
jpayne@69 750 extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */
jpayne@69 751 extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */
jpayne@69 752 GCC_PRINTFLIKE(4,5);
jpayne@69 753 extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, const char *,...) /* implemented */
jpayne@69 754 GCC_SCANFLIKE(4,5);
jpayne@69 755 extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */
jpayne@69 756 extern NCURSES_EXPORT(int) napms (int); /* implemented */
jpayne@69 757 extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */
jpayne@69 758 extern NCURSES_EXPORT(SCREEN *) newterm (const char *,FILE *,FILE *); /* implemented */
jpayne@69 759 extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */
jpayne@69 760 extern NCURSES_EXPORT(int) nl (void); /* implemented */
jpayne@69 761 extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */
jpayne@69 762 extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */
jpayne@69 763 extern NCURSES_EXPORT(int) noecho (void); /* implemented */
jpayne@69 764 extern NCURSES_EXPORT(int) nonl (void); /* implemented */
jpayne@69 765 extern NCURSES_EXPORT(void) noqiflush (void); /* implemented */
jpayne@69 766 extern NCURSES_EXPORT(int) noraw (void); /* implemented */
jpayne@69 767 extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */
jpayne@69 768 extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */
jpayne@69 769 extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */
jpayne@69 770 extern NCURSES_EXPORT(int) pair_content (NCURSES_PAIRS_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*); /* implemented */
jpayne@69 771 extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */
jpayne@69 772 extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */
jpayne@69 773 extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
jpayne@69 774 extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */
jpayne@69 775 extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */
jpayne@69 776 GCC_PRINTFLIKE(1,2);
jpayne@69 777 extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */
jpayne@69 778 extern NCURSES_EXPORT(void) qiflush (void); /* implemented */
jpayne@69 779 extern NCURSES_EXPORT(int) raw (void); /* implemented */
jpayne@69 780 extern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */
jpayne@69 781 extern NCURSES_EXPORT(int) refresh (void); /* generated */
jpayne@69 782 extern NCURSES_EXPORT(int) resetty (void); /* implemented */
jpayne@69 783 extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */
jpayne@69 784 extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */
jpayne@69 785 extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */
jpayne@69 786 extern NCURSES_EXPORT(int) savetty (void); /* implemented */
jpayne@69 787 extern NCURSES_EXPORT(int) scanw (const char *,...) /* implemented */
jpayne@69 788 GCC_SCANFLIKE(1,2);
jpayne@69 789 extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */
jpayne@69 790 extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */
jpayne@69 791 extern NCURSES_EXPORT(int) scrl (int); /* generated */
jpayne@69 792 extern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */
jpayne@69 793 extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */
jpayne@69 794 extern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */
jpayne@69 795 extern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */
jpayne@69 796 extern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */
jpayne@69 797 extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */
jpayne@69 798 extern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */
jpayne@69 799 extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */
jpayne@69 800 extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */
jpayne@69 801 extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */
jpayne@69 802 extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */
jpayne@69 803 extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */
jpayne@69 804 extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,NCURSES_PAIRS_T,void*); /* implemented */
jpayne@69 805 extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */
jpayne@69 806 extern NCURSES_EXPORT(int) slk_color (NCURSES_PAIRS_T); /* implemented */
jpayne@69 807 extern NCURSES_EXPORT(int) slk_init (int); /* implemented */
jpayne@69 808 extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */
jpayne@69 809 extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */
jpayne@69 810 extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */
jpayne@69 811 extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */
jpayne@69 812 extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */
jpayne@69 813 extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */
jpayne@69 814 extern NCURSES_EXPORT(int) standout (void); /* generated */
jpayne@69 815 extern NCURSES_EXPORT(int) standend (void); /* generated */
jpayne@69 816 extern NCURSES_EXPORT(int) start_color (void); /* implemented */
jpayne@69 817 extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */
jpayne@69 818 extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */
jpayne@69 819 extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */
jpayne@69 820 extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */
jpayne@69 821 extern NCURSES_EXPORT(char *) termname (void); /* implemented */
jpayne@69 822 extern NCURSES_EXPORT(void) timeout (int); /* generated */
jpayne@69 823 extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */
jpayne@69 824 extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */
jpayne@69 825 extern NCURSES_EXPORT(int) typeahead (int); /* implemented */
jpayne@69 826 extern NCURSES_EXPORT(int) ungetch (int); /* implemented */
jpayne@69 827 extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */
jpayne@69 828 extern NCURSES_EXPORT(void) use_env (bool); /* implemented */
jpayne@69 829 extern NCURSES_EXPORT(void) use_tioctl (bool); /* implemented */
jpayne@69 830 extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */
jpayne@69 831 extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */
jpayne@69 832 extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */
jpayne@69 833 extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_printw) /* implemented */
jpayne@69 834 GCC_PRINTFLIKE(2,0);
jpayne@69 835 extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *, va_list) /* implemented */
jpayne@69 836 GCC_PRINTFLIKE(2,0);
jpayne@69 837 extern NCURSES_EXPORT(int) vwscanw (WINDOW *, const char *, va_list) GCC_DEPRECATED(use vw_scanw) /* implemented */
jpayne@69 838 GCC_SCANFLIKE(2,0);
jpayne@69 839 extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, const char *, va_list) /* implemented */
jpayne@69 840 GCC_SCANFLIKE(2,0);
jpayne@69 841 extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */
jpayne@69 842 extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */
jpayne@69 843 extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */
jpayne@69 844 extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */
jpayne@69 845 extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */
jpayne@69 846 extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */
jpayne@69 847 extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */
jpayne@69 848 extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */
jpayne@69 849 extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, NCURSES_PAIRS_T *, void *); /* generated */
jpayne@69 850 extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */
jpayne@69 851 extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */
jpayne@69 852 extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, NCURSES_PAIRS_T, void *); /* generated */
jpayne@69 853 extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */
jpayne@69 854 extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */
jpayne@69 855 extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */
jpayne@69 856 extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, NCURSES_PAIRS_T, const void *);/* implemented */
jpayne@69 857 extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */
jpayne@69 858 extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */
jpayne@69 859 extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */
jpayne@69 860 extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,NCURSES_PAIRS_T,void*); /* implemented */
jpayne@69 861 extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */
jpayne@69 862 extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */
jpayne@69 863 extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */
jpayne@69 864 extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */
jpayne@69 865 extern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */
jpayne@69 866 extern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */
jpayne@69 867 extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */
jpayne@69 868 extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */
jpayne@69 869 extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */
jpayne@69 870 extern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */
jpayne@69 871 extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */
jpayne@69 872 extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */
jpayne@69 873 extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */
jpayne@69 874 extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */
jpayne@69 875 extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */
jpayne@69 876 extern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */
jpayne@69 877 extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */
jpayne@69 878 extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */
jpayne@69 879 extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */
jpayne@69 880 extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */
jpayne@69 881 extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */
jpayne@69 882 extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */
jpayne@69 883 GCC_PRINTFLIKE(2,3);
jpayne@69 884 extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */
jpayne@69 885 extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */
jpayne@69 886 extern NCURSES_EXPORT(int) wscanw (WINDOW *, const char *,...) /* implemented */
jpayne@69 887 GCC_SCANFLIKE(2,3);
jpayne@69 888 extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */
jpayne@69 889 extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */
jpayne@69 890 extern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */
jpayne@69 891 extern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */
jpayne@69 892 extern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */
jpayne@69 893 extern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */
jpayne@69 894 extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */
jpayne@69 895 extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */
jpayne@69 896 extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
jpayne@69 897
jpayne@69 898 /*
jpayne@69 899 * These are also declared in <ncursesw/term.h>:
jpayne@69 900 */
jpayne@69 901 extern NCURSES_EXPORT(int) tigetflag (const char *); /* implemented */
jpayne@69 902 extern NCURSES_EXPORT(int) tigetnum (const char *); /* implemented */
jpayne@69 903 extern NCURSES_EXPORT(char *) tigetstr (const char *); /* implemented */
jpayne@69 904 extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
jpayne@69 905
jpayne@69 906 #if NCURSES_TPARM_VARARGS
jpayne@69 907 extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */
jpayne@69 908 #else
jpayne@69 909 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 */
jpayne@69 910 #endif
jpayne@69 911
jpayne@69 912 extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */
jpayne@69 913 extern NCURSES_EXPORT(char *) tiparm_s (int, int, const char *, ...); /* special */
jpayne@69 914 extern NCURSES_EXPORT(int) tiscan_s (int *, int *, const char *); /* special */
jpayne@69 915
jpayne@69 916 /*
jpayne@69 917 * These functions are not in X/Open, but we use them in macro definitions:
jpayne@69 918 */
jpayne@69 919 extern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */
jpayne@69 920 extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */
jpayne@69 921 extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */
jpayne@69 922 extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */
jpayne@69 923 extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */
jpayne@69 924 extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */
jpayne@69 925 extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */
jpayne@69 926 extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */
jpayne@69 927 extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */
jpayne@69 928
jpayne@69 929 /*
jpayne@69 930 * vid_attr() was implemented originally based on a draft of X/Open curses.
jpayne@69 931 */
jpayne@69 932 #if !NCURSES_WIDECHAR
jpayne@69 933 #define vid_attr(a,pair,opts) vidattr(a)
jpayne@69 934 #endif
jpayne@69 935
jpayne@69 936 /*
jpayne@69 937 * These functions are extensions - not in X/Open Curses.
jpayne@69 938 */
jpayne@69 939 #if 1
jpayne@69 940 #undef NCURSES_EXT_FUNCS
jpayne@69 941 #define NCURSES_EXT_FUNCS 20240427
jpayne@69 942 typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
jpayne@69 943 typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
jpayne@69 944 extern NCURSES_EXPORT(int) alloc_pair (int, int);
jpayne@69 945 extern NCURSES_EXPORT(int) assume_default_colors (int, int);
jpayne@69 946 extern NCURSES_EXPORT(const char *) curses_version (void);
jpayne@69 947 extern NCURSES_EXPORT(int) define_key (const char *, int);
jpayne@69 948 extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
jpayne@69 949 extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
jpayne@69 950 extern NCURSES_EXPORT(int) extended_slk_color(int);
jpayne@69 951 extern NCURSES_EXPORT(int) find_pair (int, int);
jpayne@69 952 extern NCURSES_EXPORT(int) free_pair (int);
jpayne@69 953 extern NCURSES_EXPORT(int) get_escdelay (void);
jpayne@69 954 extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
jpayne@69 955 extern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
jpayne@69 956 extern NCURSES_EXPORT(int) is_cbreak(void);
jpayne@69 957 extern NCURSES_EXPORT(int) is_echo(void);
jpayne@69 958 extern NCURSES_EXPORT(int) is_nl(void);
jpayne@69 959 extern NCURSES_EXPORT(int) is_raw(void);
jpayne@69 960 extern NCURSES_EXPORT(bool) is_term_resized (int, int);
jpayne@69 961 extern NCURSES_EXPORT(int) key_defined (const char *);
jpayne@69 962 extern NCURSES_EXPORT(char *) keybound (int, int);
jpayne@69 963 extern NCURSES_EXPORT(int) keyok (int, bool);
jpayne@69 964 extern NCURSES_EXPORT(void) nofilter(void);
jpayne@69 965 extern NCURSES_EXPORT(void) reset_color_pairs (void);
jpayne@69 966 extern NCURSES_EXPORT(int) resize_term (int, int);
jpayne@69 967 extern NCURSES_EXPORT(int) resizeterm (int, int);
jpayne@69 968 extern NCURSES_EXPORT(int) set_escdelay (int);
jpayne@69 969 extern NCURSES_EXPORT(int) set_tabsize (int);
jpayne@69 970 extern NCURSES_EXPORT(int) use_default_colors (void);
jpayne@69 971 extern NCURSES_EXPORT(int) use_legacy_coding (int);
jpayne@69 972 extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *);
jpayne@69 973 extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *);
jpayne@69 974 extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
jpayne@69 975
jpayne@69 976 #if 1
jpayne@69 977 #undef NCURSES_XNAMES
jpayne@69 978 #define NCURSES_XNAMES 1
jpayne@69 979 extern NCURSES_EXPORT(int) use_extended_names (bool);
jpayne@69 980 #endif
jpayne@69 981
jpayne@69 982 /*
jpayne@69 983 * These extensions provide access to information stored in the WINDOW even
jpayne@69 984 * when NCURSES_OPAQUE is set:
jpayne@69 985 */
jpayne@69 986 extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* generated */
jpayne@69 987 extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* generated */
jpayne@69 988 extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* generated */
jpayne@69 989 extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* generated */
jpayne@69 990 extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* generated */
jpayne@69 991 extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* generated */
jpayne@69 992 extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* generated */
jpayne@69 993 extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* generated */
jpayne@69 994 extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* generated */
jpayne@69 995 extern NCURSES_EXPORT(bool) is_pad (const WINDOW *); /* generated */
jpayne@69 996 extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* generated */
jpayne@69 997 extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *); /* generated */
jpayne@69 998 extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* generated */
jpayne@69 999 extern NCURSES_EXPORT(int) wgetdelay (const WINDOW *); /* generated */
jpayne@69 1000 extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */
jpayne@69 1001
jpayne@69 1002 #else
jpayne@69 1003 #define curses_version() NCURSES_VERSION
jpayne@69 1004 #endif
jpayne@69 1005
jpayne@69 1006 /*
jpayne@69 1007 * Extra extension-functions, which pass a SCREEN pointer rather than using
jpayne@69 1008 * a global variable SP.
jpayne@69 1009 */
jpayne@69 1010 #if 1
jpayne@69 1011 #undef NCURSES_SP_FUNCS
jpayne@69 1012 #define NCURSES_SP_FUNCS 20240427
jpayne@69 1013 #define NCURSES_SP_NAME(name) name##_sp
jpayne@69 1014
jpayne@69 1015 /* Define the sp-funcs helper function */
jpayne@69 1016 #define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC)
jpayne@69 1017 typedef int (*NCURSES_SP_OUTC)(SCREEN*, int);
jpayne@69 1018
jpayne@69 1019 extern NCURSES_EXPORT(SCREEN *) new_prescr (void); /* implemented:SP_FUNC */
jpayne@69 1020
jpayne@69 1021 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(baudrate) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1022 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1023 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1024 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1025 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1026 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 */
jpayne@69 1027 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1028 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1029 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1030 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(doupdate) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1031 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1032 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1033 extern NCURSES_EXPORT(char) NCURSES_SP_NAME(erasechar) (SCREEN*);/* implemented:SP_FUNC */
jpayne@69 1034 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(filter) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1035 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flash) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1036 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flushinp) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1037 extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(getwin) (SCREEN*, FILE *); /* implemented:SP_FUNC */
jpayne@69 1038 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1039 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1040 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1041 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1042 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 */
jpayne@69 1043 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */
jpayne@69 1044 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool); /* implemented:SP_FUNC */
jpayne@69 1045 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1046 extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1047 extern NCURSES_EXPORT(char) NCURSES_SP_NAME(killchar) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1048 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1049 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
jpayne@69 1050 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1051 extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */
jpayne@69 1052 extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, const char *, FILE *, FILE *); /* implemented:SP_FUNC */
jpayne@69 1053 extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
jpayne@69 1054 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1055 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1056 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1057 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1058 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1059 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1060 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */
jpayne@69 1061 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1062 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1063 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1064 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_shell_mode) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1065 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resetty) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1066 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ripoffline) (SCREEN*, int, int (*)(WINDOW *, int)); /* implemented:SP_FUNC */
jpayne@69 1067 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(savetty) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1068 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_init) (SCREEN*, const char *); /* implemented:SP_FUNC */
jpayne@69 1069 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (SCREEN*, const char *); /* implemented:SP_FUNC */
jpayne@69 1070 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_set) (SCREEN*, const char *); /* implemented:SP_FUNC */
jpayne@69 1071 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype); /* implemented:SP_FUNC */
jpayne@69 1072 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */
jpayne@69 1073 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */
jpayne@69 1074 extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1075 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, NCURSES_PAIRS_T, void*); /* implemented:SP_FUNC */
jpayne@69 1076 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1077 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, NCURSES_PAIRS_T); /* implemented:SP_FUNC */
jpayne@69 1078 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1079 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1080 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1081 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1082 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1083 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (SCREEN*, int, const char *, int); /* implemented:SP_FUNC */
jpayne@69 1084 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1085 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(start_color) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1086 extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(termattrs) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1087 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1088 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1089 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */
jpayne@69 1090 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (SCREEN*, bool); /* implemented:SP_FUNC */
jpayne@69 1091 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_tioctl) (SCREEN*, bool); /* implemented:SP_FUNC */
jpayne@69 1092 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype); /* implemented:SP_FUNC */
jpayne@69 1093 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
jpayne@69 1094 #if 1
jpayne@69 1095 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1096 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1097 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1098 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *); /* implemented:EXT_SP_FUNC */
jpayne@69 1099 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *); /* implemented:EXT_SP_FUNC */
jpayne@69 1100 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1101 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1102 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1103 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */
jpayne@69 1104 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1105 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1106 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_cbreak) (SCREEN*); /* implemented:EXT_SP_FUNC */
jpayne@69 1107 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_echo) (SCREEN*); /* implemented:EXT_SP_FUNC */
jpayne@69 1108 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_nl) (SCREEN*); /* implemented:EXT_SP_FUNC */
jpayne@69 1109 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_raw) (SCREEN*); /* implemented:EXT_SP_FUNC */
jpayne@69 1110 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1111 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *); /* implemented:EXT_SP_FUNC */
jpayne@69 1112 extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1113 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */
jpayne@69 1114 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */
jpayne@69 1115 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
jpayne@69 1116 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1117 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1118 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1119 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_tabsize) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1120 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_default_colors) (SCREEN*); /* implemented:EXT_SP_FUNC */
jpayne@69 1121 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
jpayne@69 1122 #endif
jpayne@69 1123 #else
jpayne@69 1124 #undef NCURSES_SP_FUNCS
jpayne@69 1125 #define NCURSES_SP_FUNCS 0
jpayne@69 1126 #define NCURSES_SP_NAME(name) name
jpayne@69 1127 #define NCURSES_SP_OUTC NCURSES_OUTC
jpayne@69 1128 #endif
jpayne@69 1129
jpayne@69 1130 /* attributes */
jpayne@69 1131
jpayne@69 1132 #define NCURSES_ATTR_SHIFT 8
jpayne@69 1133 #define NCURSES_BITS(mask,shift) (NCURSES_CAST(chtype,(mask)) << ((shift) + NCURSES_ATTR_SHIFT))
jpayne@69 1134
jpayne@69 1135 #define A_NORMAL (1U - 1U)
jpayne@69 1136 #define A_ATTRIBUTES NCURSES_BITS(~(1U - 1U),0)
jpayne@69 1137 #define A_CHARTEXT (NCURSES_BITS(1U,0) - 1U)
jpayne@69 1138 #define A_COLOR NCURSES_BITS(((1U) << 8) - 1U,0)
jpayne@69 1139 #define A_STANDOUT NCURSES_BITS(1U,8)
jpayne@69 1140 #define A_UNDERLINE NCURSES_BITS(1U,9)
jpayne@69 1141 #define A_REVERSE NCURSES_BITS(1U,10)
jpayne@69 1142 #define A_BLINK NCURSES_BITS(1U,11)
jpayne@69 1143 #define A_DIM NCURSES_BITS(1U,12)
jpayne@69 1144 #define A_BOLD NCURSES_BITS(1U,13)
jpayne@69 1145 #define A_ALTCHARSET NCURSES_BITS(1U,14)
jpayne@69 1146 #define A_INVIS NCURSES_BITS(1U,15)
jpayne@69 1147 #define A_PROTECT NCURSES_BITS(1U,16)
jpayne@69 1148 #define A_HORIZONTAL NCURSES_BITS(1U,17)
jpayne@69 1149 #define A_LEFT NCURSES_BITS(1U,18)
jpayne@69 1150 #define A_LOW NCURSES_BITS(1U,19)
jpayne@69 1151 #define A_RIGHT NCURSES_BITS(1U,20)
jpayne@69 1152 #define A_TOP NCURSES_BITS(1U,21)
jpayne@69 1153 #define A_VERTICAL NCURSES_BITS(1U,22)
jpayne@69 1154
jpayne@69 1155 #if 1
jpayne@69 1156 #define A_ITALIC NCURSES_BITS(1U,23) /* ncurses extension */
jpayne@69 1157 #endif
jpayne@69 1158
jpayne@69 1159 /*
jpayne@69 1160 * Most of the pseudo functions are macros that either provide compatibility
jpayne@69 1161 * with older versions of curses, or provide inline functionality to improve
jpayne@69 1162 * performance.
jpayne@69 1163 */
jpayne@69 1164
jpayne@69 1165 /*
jpayne@69 1166 * These pseudo functions are always implemented as macros:
jpayne@69 1167 */
jpayne@69 1168
jpayne@69 1169 #define getyx(win,y,x) (y = getcury(win), x = getcurx(win))
jpayne@69 1170 #define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win))
jpayne@69 1171 #define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win))
jpayne@69 1172 #define getparyx(win,y,x) (y = getpary(win), x = getparx(win))
jpayne@69 1173
jpayne@69 1174 #define getsyx(y,x) do { if (newscr) { \
jpayne@69 1175 if (is_leaveok(newscr)) \
jpayne@69 1176 (y) = (x) = -1; \
jpayne@69 1177 else \
jpayne@69 1178 getyx(newscr,(y), (x)); \
jpayne@69 1179 } \
jpayne@69 1180 } while(0)
jpayne@69 1181
jpayne@69 1182 #define setsyx(y,x) do { if (newscr) { \
jpayne@69 1183 if ((y) == -1 && (x) == -1) \
jpayne@69 1184 leaveok(newscr, TRUE); \
jpayne@69 1185 else { \
jpayne@69 1186 leaveok(newscr, FALSE); \
jpayne@69 1187 wmove(newscr, (y), (x)); \
jpayne@69 1188 } \
jpayne@69 1189 } \
jpayne@69 1190 } while(0)
jpayne@69 1191
jpayne@69 1192 #ifndef NCURSES_NOMACROS
jpayne@69 1193
jpayne@69 1194 /*
jpayne@69 1195 * These miscellaneous pseudo functions are provided for compatibility:
jpayne@69 1196 */
jpayne@69 1197
jpayne@69 1198 #define wgetstr(w, s) wgetnstr(w, s, -1)
jpayne@69 1199 #define getnstr(s, n) wgetnstr(stdscr, s, (n))
jpayne@69 1200
jpayne@69 1201 #define setterm(term) setupterm(term, 1, (int *)0)
jpayne@69 1202
jpayne@69 1203 #define fixterm() reset_prog_mode()
jpayne@69 1204 #define resetterm() reset_shell_mode()
jpayne@69 1205 #define saveterm() def_prog_mode()
jpayne@69 1206 #define crmode() cbreak()
jpayne@69 1207 #define nocrmode() nocbreak()
jpayne@69 1208 #define gettmode()
jpayne@69 1209
jpayne@69 1210 /* It seems older SYSV curses versions define these */
jpayne@69 1211 #if !NCURSES_OPAQUE
jpayne@69 1212 #define getattrs(win) NCURSES_CAST(int, NCURSES_OK_ADDR(win) ? (win)->_attrs : A_NORMAL)
jpayne@69 1213 #define getcurx(win) (NCURSES_OK_ADDR(win) ? (win)->_curx : ERR)
jpayne@69 1214 #define getcury(win) (NCURSES_OK_ADDR(win) ? (win)->_cury : ERR)
jpayne@69 1215 #define getbegx(win) (NCURSES_OK_ADDR(win) ? (win)->_begx : ERR)
jpayne@69 1216 #define getbegy(win) (NCURSES_OK_ADDR(win) ? (win)->_begy : ERR)
jpayne@69 1217 #define getmaxx(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxx + 1) : ERR)
jpayne@69 1218 #define getmaxy(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxy + 1) : ERR)
jpayne@69 1219 #define getparx(win) (NCURSES_OK_ADDR(win) ? (win)->_parx : ERR)
jpayne@69 1220 #define getpary(win) (NCURSES_OK_ADDR(win) ? (win)->_pary : ERR)
jpayne@69 1221 #endif /* NCURSES_OPAQUE */
jpayne@69 1222
jpayne@69 1223 #define wstandout(win) (wattrset(win,A_STANDOUT))
jpayne@69 1224 #define wstandend(win) (wattrset(win,A_NORMAL))
jpayne@69 1225
jpayne@69 1226 #define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
jpayne@69 1227 #define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
jpayne@69 1228
jpayne@69 1229 #if !NCURSES_OPAQUE
jpayne@69 1230 #if NCURSES_WATTR_MACROS
jpayne@69 1231 #if NCURSES_WIDECHAR && 1
jpayne@69 1232 #define wattrset(win,at) \
jpayne@69 1233 (NCURSES_OK_ADDR(win) \
jpayne@69 1234 ? ((win)->_color = NCURSES_CAST(int, PAIR_NUMBER(at)), \
jpayne@69 1235 (win)->_attrs = NCURSES_CAST(attr_t, at), \
jpayne@69 1236 OK) \
jpayne@69 1237 : ERR)
jpayne@69 1238 #else
jpayne@69 1239 #define wattrset(win,at) \
jpayne@69 1240 (NCURSES_OK_ADDR(win) \
jpayne@69 1241 ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \
jpayne@69 1242 OK) \
jpayne@69 1243 : ERR)
jpayne@69 1244 #endif
jpayne@69 1245 #endif /* NCURSES_WATTR_MACROS */
jpayne@69 1246 #endif /* NCURSES_OPAQUE */
jpayne@69 1247
jpayne@69 1248 #define scroll(win) wscrl(win,1)
jpayne@69 1249
jpayne@69 1250 #define touchwin(win) wtouchln((win), 0, getmaxy(win), 1)
jpayne@69 1251 #define touchline(win, s, c) wtouchln((win), s, c, 1)
jpayne@69 1252 #define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0)
jpayne@69 1253
jpayne@69 1254 #define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0)
jpayne@69 1255 #define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
jpayne@69 1256 #define hline(ch, n) whline(stdscr, ch, (n))
jpayne@69 1257 #define vline(ch, n) wvline(stdscr, ch, (n))
jpayne@69 1258
jpayne@69 1259 #define winstr(w, s) winnstr(w, s, -1)
jpayne@69 1260 #define winchstr(w, s) winchnstr(w, s, -1)
jpayne@69 1261 #define winsstr(w, s) winsnstr(w, s, -1)
jpayne@69 1262
jpayne@69 1263 #if !NCURSES_OPAQUE
jpayne@69 1264 #define redrawwin(win) wredrawln(win, 0, (NCURSES_OK_ADDR(win) ? (win)->_maxy+1 : -1))
jpayne@69 1265 #endif /* NCURSES_OPAQUE */
jpayne@69 1266
jpayne@69 1267 #define waddstr(win,str) waddnstr(win,str,-1)
jpayne@69 1268 #define waddchstr(win,str) waddchnstr(win,str,-1)
jpayne@69 1269
jpayne@69 1270 /*
jpayne@69 1271 * These apply to the first 256 color pairs.
jpayne@69 1272 */
jpayne@69 1273 #define COLOR_PAIR(n) (NCURSES_BITS((n), 0) & A_COLOR)
jpayne@69 1274 #define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
jpayne@69 1275
jpayne@69 1276 /*
jpayne@69 1277 * pseudo functions for standard screen
jpayne@69 1278 */
jpayne@69 1279
jpayne@69 1280 #define addch(ch) waddch(stdscr,(ch))
jpayne@69 1281 #define addchnstr(str,n) waddchnstr(stdscr,(str),(n))
jpayne@69 1282 #define addchstr(str) waddchstr(stdscr,(str))
jpayne@69 1283 #define addnstr(str,n) waddnstr(stdscr,(str),(n))
jpayne@69 1284 #define addstr(str) waddnstr(stdscr,(str),-1)
jpayne@69 1285 #define attr_get(ap,cp,o) wattr_get(stdscr,(ap),(cp),(o))
jpayne@69 1286 #define attr_off(a,o) wattr_off(stdscr,(a),(o))
jpayne@69 1287 #define attr_on(a,o) wattr_on(stdscr,(a),(o))
jpayne@69 1288 #define attr_set(a,c,o) wattr_set(stdscr,(a),(c),(o))
jpayne@69 1289 #define attroff(at) wattroff(stdscr,(at))
jpayne@69 1290 #define attron(at) wattron(stdscr,(at))
jpayne@69 1291 #define attrset(at) wattrset(stdscr,(at))
jpayne@69 1292 #define bkgd(ch) wbkgd(stdscr,(ch))
jpayne@69 1293 #define bkgdset(ch) wbkgdset(stdscr,(ch))
jpayne@69 1294 #define chgat(n,a,c,o) wchgat(stdscr,(n),(a),(c),(o))
jpayne@69 1295 #define clear() wclear(stdscr)
jpayne@69 1296 #define clrtobot() wclrtobot(stdscr)
jpayne@69 1297 #define clrtoeol() wclrtoeol(stdscr)
jpayne@69 1298 #define color_set(c,o) wcolor_set(stdscr,(c),(o))
jpayne@69 1299 #define delch() wdelch(stdscr)
jpayne@69 1300 #define deleteln() winsdelln(stdscr,-1)
jpayne@69 1301 #define echochar(c) wechochar(stdscr,(c))
jpayne@69 1302 #define erase() werase(stdscr)
jpayne@69 1303 #define getch() wgetch(stdscr)
jpayne@69 1304 #define getstr(str) wgetstr(stdscr,(str))
jpayne@69 1305 #define inch() winch(stdscr)
jpayne@69 1306 #define inchnstr(s,n) winchnstr(stdscr,(s),(n))
jpayne@69 1307 #define inchstr(s) winchstr(stdscr,(s))
jpayne@69 1308 #define innstr(s,n) winnstr(stdscr,(s),(n))
jpayne@69 1309 #define insch(c) winsch(stdscr,(c))
jpayne@69 1310 #define insdelln(n) winsdelln(stdscr,(n))
jpayne@69 1311 #define insertln() winsdelln(stdscr,1)
jpayne@69 1312 #define insnstr(s,n) winsnstr(stdscr,(s),(n))
jpayne@69 1313 #define insstr(s) winsstr(stdscr,(s))
jpayne@69 1314 #define instr(s) winstr(stdscr,(s))
jpayne@69 1315 #define move(y,x) wmove(stdscr,(y),(x))
jpayne@69 1316 #define refresh() wrefresh(stdscr)
jpayne@69 1317 #define scrl(n) wscrl(stdscr,(n))
jpayne@69 1318 #define setscrreg(t,b) wsetscrreg(stdscr,(t),(b))
jpayne@69 1319 #define standend() wstandend(stdscr)
jpayne@69 1320 #define standout() wstandout(stdscr)
jpayne@69 1321 #define timeout(delay) wtimeout(stdscr,(delay))
jpayne@69 1322 #define wdeleteln(win) winsdelln(win,-1)
jpayne@69 1323 #define winsertln(win) winsdelln(win,1)
jpayne@69 1324
jpayne@69 1325 /*
jpayne@69 1326 * mv functions
jpayne@69 1327 */
jpayne@69 1328