annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/ncursesw/ncurses.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
jpayne@69 1329 #define mvwaddch(win,y,x,ch) (wmove((win),(y),(x)) == ERR ? ERR : waddch((win),(ch)))
jpayne@69 1330 #define mvwaddchnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),(n)))
jpayne@69 1331 #define mvwaddchstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1))
jpayne@69 1332 #define mvwaddnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n)))
jpayne@69 1333 #define mvwaddstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1))
jpayne@69 1334 #define mvwchgat(win,y,x,n,a,c,o) (wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o)))
jpayne@69 1335 #define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
jpayne@69 1336 #define mvwgetch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wgetch(win))
jpayne@69 1337 #define mvwgetnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n)))
jpayne@69 1338 #define mvwgetstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str)))
jpayne@69 1339 #define mvwhline(win,y,x,c,n) (wmove((win),(y),(x)) == ERR ? ERR : whline((win),(c),(n)))
jpayne@69 1340 #define mvwinch(win,y,x) (wmove((win),(y),(x)) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
jpayne@69 1341 #define mvwinchnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winchnstr((win),(s),(n)))
jpayne@69 1342 #define mvwinchstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winchstr((win),(s)))
jpayne@69 1343 #define mvwinnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winnstr((win),(s),(n)))
jpayne@69 1344 #define mvwinsch(win,y,x,c) (wmove((win),(y),(x)) == ERR ? ERR : winsch((win),(c)))
jpayne@69 1345 #define mvwinsnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winsnstr((win),(s),(n)))
jpayne@69 1346 #define mvwinsstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winsstr((win),(s)))
jpayne@69 1347 #define mvwinstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winstr((win),(s)))
jpayne@69 1348 #define mvwvline(win,y,x,c,n) (wmove((win),(y),(x)) == ERR ? ERR : wvline((win),(c),(n)))
jpayne@69 1349
jpayne@69 1350 #define mvaddch(y,x,ch) mvwaddch(stdscr,(y),(x),(ch))
jpayne@69 1351 #define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,(y),(x),(str),(n))
jpayne@69 1352 #define mvaddchstr(y,x,str) mvwaddchstr(stdscr,(y),(x),(str))
jpayne@69 1353 #define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,(y),(x),(str),(n))
jpayne@69 1354 #define mvaddstr(y,x,str) mvwaddstr(stdscr,(y),(x),(str))
jpayne@69 1355 #define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,(y),(x),(n),(a),(c),(o))
jpayne@69 1356 #define mvdelch(y,x) mvwdelch(stdscr,(y),(x))
jpayne@69 1357 #define mvgetch(y,x) mvwgetch(stdscr,(y),(x))
jpayne@69 1358 #define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,(y),(x),(str),(n))
jpayne@69 1359 #define mvgetstr(y,x,str) mvwgetstr(stdscr,(y),(x),(str))
jpayne@69 1360 #define mvhline(y,x,c,n) mvwhline(stdscr,(y),(x),(c),(n))
jpayne@69 1361 #define mvinch(y,x) mvwinch(stdscr,(y),(x))
jpayne@69 1362 #define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,(y),(x),(s),(n))
jpayne@69 1363 #define mvinchstr(y,x,s) mvwinchstr(stdscr,(y),(x),(s))
jpayne@69 1364 #define mvinnstr(y,x,s,n) mvwinnstr(stdscr,(y),(x),(s),(n))
jpayne@69 1365 #define mvinsch(y,x,c) mvwinsch(stdscr,(y),(x),(c))
jpayne@69 1366 #define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,(y),(x),(s),(n))
jpayne@69 1367 #define mvinsstr(y,x,s) mvwinsstr(stdscr,(y),(x),(s))
jpayne@69 1368 #define mvinstr(y,x,s) mvwinstr(stdscr,(y),(x),(s))
jpayne@69 1369 #define mvvline(y,x,c,n) mvwvline(stdscr,(y),(x),(c),(n))
jpayne@69 1370
jpayne@69 1371 /*
jpayne@69 1372 * Some wide-character functions can be implemented without the extensions.
jpayne@69 1373 */
jpayne@69 1374 #if !NCURSES_OPAQUE
jpayne@69 1375 #define getbkgd(win) (NCURSES_OK_ADDR(win) ? ((win)->_bkgd) : 0)
jpayne@69 1376 #endif /* NCURSES_OPAQUE */
jpayne@69 1377
jpayne@69 1378 #define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a))
jpayne@69 1379 #define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a))
jpayne@69 1380
jpayne@69 1381 #if !NCURSES_OPAQUE
jpayne@69 1382 #if NCURSES_WATTR_MACROS
jpayne@69 1383 #if NCURSES_WIDECHAR && 1
jpayne@69 1384 #define wattr_set(win,a,p,opts) \
jpayne@69 1385 (NCURSES_OK_ADDR(win) \
jpayne@69 1386 ? ((void)((win)->_attrs = ((a) & ~A_COLOR), \
jpayne@69 1387 (win)->_color = (opts) ? *(int *)(opts) : (p)), \
jpayne@69 1388 OK) \
jpayne@69 1389 : ERR)
jpayne@69 1390 #define wattr_get(win,a,p,opts) \
jpayne@69 1391 (NCURSES_OK_ADDR(win) \
jpayne@69 1392 ? ((void)(NCURSES_OK_ADDR(a) \
jpayne@69 1393 ? (*(a) = (win)->_attrs) \
jpayne@69 1394 : OK), \
jpayne@69 1395 (void)(NCURSES_OK_ADDR(p) \
jpayne@69 1396 ? (*(p) = (NCURSES_PAIRS_T) (win)->_color) \
jpayne@69 1397 : OK), \
jpayne@69 1398 (void)(NCURSES_OK_ADDR(opts) \
jpayne@69 1399 ? (*(int *)(opts) = (win)->_color) \
jpayne@69 1400 : OK), \
jpayne@69 1401 OK) \
jpayne@69 1402 : ERR)
jpayne@69 1403 #else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
jpayne@69 1404 #define wattr_set(win,a,p,opts) \
jpayne@69 1405 (NCURSES_OK_ADDR(win) \
jpayne@69 1406 ? ((void)((win)->_attrs = (((a) & ~A_COLOR) | \
jpayne@69 1407 (attr_t)COLOR_PAIR(p))), \
jpayne@69 1408 OK) \
jpayne@69 1409 : ERR)
jpayne@69 1410 #define wattr_get(win,a,p,opts) \
jpayne@69 1411 (NCURSES_OK_ADDR(win) \
jpayne@69 1412 ? ((void)(NCURSES_OK_ADDR(a) \
jpayne@69 1413 ? (*(a) = (win)->_attrs) \
jpayne@69 1414 : OK), \
jpayne@69 1415 (void)(NCURSES_OK_ADDR(p) \
jpayne@69 1416 ? (*(p) = (NCURSES_PAIRS_T) PAIR_NUMBER((win)->_attrs)) \
jpayne@69 1417 : OK), \
jpayne@69 1418 OK) \
jpayne@69 1419 : ERR)
jpayne@69 1420 #endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
jpayne@69 1421 #endif /* NCURSES_WATTR_MACROS */
jpayne@69 1422 #endif /* NCURSES_OPAQUE */
jpayne@69 1423
jpayne@69 1424 /*
jpayne@69 1425 * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use
jpayne@69 1426 * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to
jpayne@69 1427 * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already
jpayne@69 1428 * use stdarg.h, so...
jpayne@69 1429 */
jpayne@69 1430 /* define vw_printw vwprintw */
jpayne@69 1431 /* define vw_scanw vwscanw */
jpayne@69 1432
jpayne@69 1433 /*
jpayne@69 1434 * Export fallback function for use in C++ binding.
jpayne@69 1435 */
jpayne@69 1436 #if !1
jpayne@69 1437 #define vsscanf(a,b,c) _nc_vsscanf(a,b,c)
jpayne@69 1438 NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
jpayne@69 1439 #endif
jpayne@69 1440
jpayne@69 1441 /*
jpayne@69 1442 * These macros are extensions - not in X/Open Curses.
jpayne@69 1443 */
jpayne@69 1444 #if 1
jpayne@69 1445 #if !NCURSES_OPAQUE
jpayne@69 1446 #define is_cleared(win) (NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE)
jpayne@69 1447 #define is_idcok(win) (NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE)
jpayne@69 1448 #define is_idlok(win) (NCURSES_OK_ADDR(win) ? (win)->_idlok : FALSE)
jpayne@69 1449 #define is_immedok(win) (NCURSES_OK_ADDR(win) ? (win)->_immed : FALSE)
jpayne@69 1450 #define is_keypad(win) (NCURSES_OK_ADDR(win) ? (win)->_use_keypad : FALSE)
jpayne@69 1451 #define is_leaveok(win) (NCURSES_OK_ADDR(win) ? (win)->_leaveok : FALSE)
jpayne@69 1452 #define is_nodelay(win) (NCURSES_OK_ADDR(win) ? ((win)->_delay == 0) : FALSE)
jpayne@69 1453 #define is_notimeout(win) (NCURSES_OK_ADDR(win) ? (win)->_notimeout : FALSE)
jpayne@69 1454 #define is_pad(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
jpayne@69 1455 #define is_scrollok(win) (NCURSES_OK_ADDR(win) ? (win)->_scroll : FALSE)
jpayne@69 1456 #define is_subwin(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
jpayne@69 1457 #define is_syncok(win) (NCURSES_OK_ADDR(win) ? (win)->_sync : FALSE)
jpayne@69 1458 #define wgetdelay(win) (NCURSES_OK_ADDR(win) ? (win)->_delay : 0)
jpayne@69 1459 #define wgetparent(win) (NCURSES_OK_ADDR(win) ? (win)->_parent : 0)
jpayne@69 1460 #define wgetscrreg(win,t,b) (NCURSES_OK_ADDR(win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
jpayne@69 1461 #endif
jpayne@69 1462 #endif
jpayne@69 1463
jpayne@69 1464 /*
jpayne@69 1465 * X/Open says this returns a bool; SVr4 also checked for out-of-range line.
jpayne@69 1466 * The macro provides compatibility:
jpayne@69 1467 */
jpayne@69 1468 #define is_linetouched(w,l) ((!(w) || ((l) > getmaxy(w)) || ((l) < 0)) ? ERR : (is_linetouched)((w),(l)))
jpayne@69 1469
jpayne@69 1470 #endif /* NCURSES_NOMACROS */
jpayne@69 1471
jpayne@69 1472 /*
jpayne@69 1473 * Public variables.
jpayne@69 1474 *
jpayne@69 1475 * Notes:
jpayne@69 1476 * a. ESCDELAY was an undocumented feature under AIX curses.
jpayne@69 1477 * It gives the ESC expire time in milliseconds.
jpayne@69 1478 * b. ttytype is needed for backward compatibility
jpayne@69 1479 */
jpayne@69 1480 #if NCURSES_REENTRANT
jpayne@69 1481
jpayne@69 1482 NCURSES_WRAPPED_VAR(WINDOW *, curscr);
jpayne@69 1483 NCURSES_WRAPPED_VAR(WINDOW *, newscr);
jpayne@69 1484 NCURSES_WRAPPED_VAR(WINDOW *, stdscr);
jpayne@69 1485 NCURSES_WRAPPED_VAR(char *, ttytype);
jpayne@69 1486 NCURSES_WRAPPED_VAR(int, COLORS);
jpayne@69 1487 NCURSES_WRAPPED_VAR(int, COLOR_PAIRS);
jpayne@69 1488 NCURSES_WRAPPED_VAR(int, COLS);
jpayne@69 1489 NCURSES_WRAPPED_VAR(int, ESCDELAY);
jpayne@69 1490 NCURSES_WRAPPED_VAR(int, LINES);
jpayne@69 1491 NCURSES_WRAPPED_VAR(int, TABSIZE);
jpayne@69 1492
jpayne@69 1493 #define curscr NCURSES_PUBLIC_VAR(curscr())
jpayne@69 1494 #define newscr NCURSES_PUBLIC_VAR(newscr())
jpayne@69 1495 #define stdscr NCURSES_PUBLIC_VAR(stdscr())
jpayne@69 1496 #define ttytype NCURSES_PUBLIC_VAR(ttytype())
jpayne@69 1497 #define COLORS NCURSES_PUBLIC_VAR(COLORS())
jpayne@69 1498 #define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS())
jpayne@69 1499 #define COLS NCURSES_PUBLIC_VAR(COLS())
jpayne@69 1500 #define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY())
jpayne@69 1501 #define LINES NCURSES_PUBLIC_VAR(LINES())
jpayne@69 1502 #define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE())
jpayne@69 1503
jpayne@69 1504 #else
jpayne@69 1505
jpayne@69 1506 extern NCURSES_EXPORT_VAR(WINDOW *) curscr;
jpayne@69 1507 extern NCURSES_EXPORT_VAR(WINDOW *) newscr;
jpayne@69 1508 extern NCURSES_EXPORT_VAR(WINDOW *) stdscr;
jpayne@69 1509 extern NCURSES_EXPORT_VAR(char) ttytype[];
jpayne@69 1510 extern NCURSES_EXPORT_VAR(int) COLORS;
jpayne@69 1511 extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;
jpayne@69 1512 extern NCURSES_EXPORT_VAR(int) COLS;
jpayne@69 1513 extern NCURSES_EXPORT_VAR(int) ESCDELAY;
jpayne@69 1514 extern NCURSES_EXPORT_VAR(int) LINES;
jpayne@69 1515 extern NCURSES_EXPORT_VAR(int) TABSIZE;
jpayne@69 1516
jpayne@69 1517 #endif
jpayne@69 1518
jpayne@69 1519 /*
jpayne@69 1520 * Pseudo-character tokens outside ASCII range. The curses wgetch() function
jpayne@69 1521 * will return any given one of these only if the corresponding k- capability
jpayne@69 1522 * is defined in your terminal's terminfo entry.
jpayne@69 1523 *
jpayne@69 1524 * Some keys (KEY_A1, etc) are arranged like this:
jpayne@69 1525 * a1 up a3
jpayne@69 1526 * left b2 right
jpayne@69 1527 * c1 down c3
jpayne@69 1528 *
jpayne@69 1529 * A few key codes do not depend upon the terminfo entry.
jpayne@69 1530 */
jpayne@69 1531 #define KEY_CODE_YES 0400 /* A wchar_t contains a key code */
jpayne@69 1532 #define KEY_MIN 0401 /* Minimum curses key */
jpayne@69 1533 #define KEY_BREAK 0401 /* Break key (unreliable) */
jpayne@69 1534 #define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */
jpayne@69 1535 #define KEY_RESET 0531 /* Reset or hard reset (unreliable) */
jpayne@69 1536 /*
jpayne@69 1537 * These definitions were generated by ./MKkey_defs.sh ./Caps ./Caps-ncurses
jpayne@69 1538 */
jpayne@69 1539 #define KEY_DOWN 0402 /* down-arrow key */
jpayne@69 1540 #define KEY_UP 0403 /* up-arrow key */
jpayne@69 1541 #define KEY_LEFT 0404 /* left-arrow key */
jpayne@69 1542 #define KEY_RIGHT 0405 /* right-arrow key */
jpayne@69 1543 #define KEY_HOME 0406 /* home key */
jpayne@69 1544 #define KEY_BACKSPACE 0407 /* backspace key */
jpayne@69 1545 #define KEY_F0 0410 /* Function keys. Space for 64 */
jpayne@69 1546 #define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */
jpayne@69 1547 #define KEY_DL 0510 /* delete-line key */
jpayne@69 1548 #define KEY_IL 0511 /* insert-line key */
jpayne@69 1549 #define KEY_DC 0512 /* delete-character key */
jpayne@69 1550 #define KEY_IC 0513 /* insert-character key */
jpayne@69 1551 #define KEY_EIC 0514 /* sent by rmir or smir in insert mode */
jpayne@69 1552 #define KEY_CLEAR 0515 /* clear-screen or erase key */
jpayne@69 1553 #define KEY_EOS 0516 /* clear-to-end-of-screen key */
jpayne@69 1554 #define KEY_EOL 0517 /* clear-to-end-of-line key */
jpayne@69 1555 #define KEY_SF 0520 /* scroll-forward key */
jpayne@69 1556 #define KEY_SR 0521 /* scroll-backward key */
jpayne@69 1557 #define KEY_NPAGE 0522 /* next-page key */
jpayne@69 1558 #define KEY_PPAGE 0523 /* previous-page key */
jpayne@69 1559 #define KEY_STAB 0524 /* set-tab key */
jpayne@69 1560 #define KEY_CTAB 0525 /* clear-tab key */
jpayne@69 1561 #define KEY_CATAB 0526 /* clear-all-tabs key */
jpayne@69 1562 #define KEY_ENTER 0527 /* enter/send key */
jpayne@69 1563 #define KEY_PRINT 0532 /* print key */
jpayne@69 1564 #define KEY_LL 0533 /* lower-left key (home down) */
jpayne@69 1565 #define KEY_A1 0534 /* upper left of keypad */
jpayne@69 1566 #define KEY_A3 0535 /* upper right of keypad */
jpayne@69 1567 #define KEY_B2 0536 /* center of keypad */
jpayne@69 1568 #define KEY_C1 0537 /* lower left of keypad */
jpayne@69 1569 #define KEY_C3 0540 /* lower right of keypad */
jpayne@69 1570 #define KEY_BTAB 0541 /* back-tab key */
jpayne@69 1571 #define KEY_BEG 0542 /* begin key */
jpayne@69 1572 #define KEY_CANCEL 0543 /* cancel key */
jpayne@69 1573 #define KEY_CLOSE 0544 /* close key */
jpayne@69 1574 #define KEY_COMMAND 0545 /* command key */
jpayne@69 1575 #define KEY_COPY 0546 /* copy key */
jpayne@69 1576 #define KEY_CREATE 0547 /* create key */
jpayne@69 1577 #define KEY_END 0550 /* end key */
jpayne@69 1578 #define KEY_EXIT 0551 /* exit key */
jpayne@69 1579 #define KEY_FIND 0552 /* find key */
jpayne@69 1580 #define KEY_HELP 0553 /* help key */
jpayne@69 1581 #define KEY_MARK 0554 /* mark key */
jpayne@69 1582 #define KEY_MESSAGE 0555 /* message key */
jpayne@69 1583 #define KEY_MOVE 0556 /* move key */
jpayne@69 1584 #define KEY_NEXT 0557 /* next key */
jpayne@69 1585 #define KEY_OPEN 0560 /* open key */
jpayne@69 1586 #define KEY_OPTIONS 0561 /* options key */
jpayne@69 1587 #define KEY_PREVIOUS 0562 /* previous key */
jpayne@69 1588 #define KEY_REDO 0563 /* redo key */
jpayne@69 1589 #define KEY_REFERENCE 0564 /* reference key */
jpayne@69 1590 #define KEY_REFRESH 0565 /* refresh key */
jpayne@69 1591 #define KEY_REPLACE 0566 /* replace key */
jpayne@69 1592 #define KEY_RESTART 0567 /* restart key */
jpayne@69 1593 #define KEY_RESUME 0570 /* resume key */
jpayne@69 1594 #define KEY_SAVE 0571 /* save key */
jpayne@69 1595 #define KEY_SBEG 0572 /* shifted begin key */
jpayne@69 1596 #define KEY_SCANCEL 0573 /* shifted cancel key */
jpayne@69 1597 #define KEY_SCOMMAND 0574 /* shifted command key */
jpayne@69 1598 #define KEY_SCOPY 0575 /* shifted copy key */
jpayne@69 1599 #define KEY_SCREATE 0576 /* shifted create key */
jpayne@69 1600 #define KEY_SDC 0577 /* shifted delete-character key */
jpayne@69 1601 #define KEY_SDL 0600 /* shifted delete-line key */
jpayne@69 1602 #define KEY_SELECT 0601 /* select key */
jpayne@69 1603 #define KEY_SEND 0602 /* shifted end key */
jpayne@69 1604 #define KEY_SEOL 0603 /* shifted clear-to-end-of-line key */
jpayne@69 1605 #define KEY_SEXIT 0604 /* shifted exit key */
jpayne@69 1606 #define KEY_SFIND 0605 /* shifted find key */
jpayne@69 1607 #define KEY_SHELP 0606 /* shifted help key */
jpayne@69 1608 #define KEY_SHOME 0607 /* shifted home key */
jpayne@69 1609 #define KEY_SIC 0610 /* shifted insert-character key */
jpayne@69 1610 #define KEY_SLEFT 0611 /* shifted left-arrow key */
jpayne@69 1611 #define KEY_SMESSAGE 0612 /* shifted message key */
jpayne@69 1612 #define KEY_SMOVE 0613 /* shifted move key */
jpayne@69 1613 #define KEY_SNEXT 0614 /* shifted next key */
jpayne@69 1614 #define KEY_SOPTIONS 0615 /* shifted options key */
jpayne@69 1615 #define KEY_SPREVIOUS 0616 /* shifted previous key */
jpayne@69 1616 #define KEY_SPRINT 0617 /* shifted print key */
jpayne@69 1617 #define KEY_SREDO 0620 /* shifted redo key */
jpayne@69 1618 #define KEY_SREPLACE 0621 /* shifted replace key */
jpayne@69 1619 #define KEY_SRIGHT 0622 /* shifted right-arrow key */
jpayne@69 1620 #define KEY_SRSUME 0623 /* shifted resume key */
jpayne@69 1621 #define KEY_SSAVE 0624 /* shifted save key */
jpayne@69 1622 #define KEY_SSUSPEND 0625 /* shifted suspend key */
jpayne@69 1623 #define KEY_SUNDO 0626 /* shifted undo key */
jpayne@69 1624 #define KEY_SUSPEND 0627 /* suspend key */
jpayne@69 1625 #define KEY_UNDO 0630 /* undo key */
jpayne@69 1626 #define KEY_MOUSE 0631 /* Mouse event has occurred */
jpayne@69 1627
jpayne@69 1628 #if NCURSES_SIGWINCH
jpayne@69 1629 #define KEY_RESIZE 0632 /* Terminal resize event */
jpayne@69 1630 #endif
jpayne@69 1631
jpayne@69 1632 #define KEY_MAX 0777 /* Maximum key value is 0632 */
jpayne@69 1633 /* $Id: curses.wide,v 1.51 2021/05/22 20:28:29 tom Exp $ */
jpayne@69 1634 /*
jpayne@69 1635 * vile:cmode:
jpayne@69 1636 * This file is part of ncurses, designed to be appended after curses.h.in
jpayne@69 1637 * (see that file for the relevant copyright).
jpayne@69 1638 */
jpayne@69 1639 #define _XOPEN_CURSES 1
jpayne@69 1640
jpayne@69 1641 #if NCURSES_WIDECHAR
jpayne@69 1642
jpayne@69 1643 extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
jpayne@69 1644
jpayne@69 1645 #define NCURSES_WACS(c) (&_nc_wacs[NCURSES_CAST(unsigned char,(c))])
jpayne@69 1646
jpayne@69 1647 #define WACS_BSSB NCURSES_WACS('l')
jpayne@69 1648 #define WACS_SSBB NCURSES_WACS('m')
jpayne@69 1649 #define WACS_BBSS NCURSES_WACS('k')
jpayne@69 1650 #define WACS_SBBS NCURSES_WACS('j')
jpayne@69 1651 #define WACS_SBSS NCURSES_WACS('u')
jpayne@69 1652 #define WACS_SSSB NCURSES_WACS('t')
jpayne@69 1653 #define WACS_SSBS NCURSES_WACS('v')
jpayne@69 1654 #define WACS_BSSS NCURSES_WACS('w')
jpayne@69 1655 #define WACS_BSBS NCURSES_WACS('q')
jpayne@69 1656 #define WACS_SBSB NCURSES_WACS('x')
jpayne@69 1657 #define WACS_SSSS NCURSES_WACS('n')
jpayne@69 1658
jpayne@69 1659 #define WACS_ULCORNER WACS_BSSB
jpayne@69 1660 #define WACS_LLCORNER WACS_SSBB
jpayne@69 1661 #define WACS_URCORNER WACS_BBSS
jpayne@69 1662 #define WACS_LRCORNER WACS_SBBS
jpayne@69 1663 #define WACS_RTEE WACS_SBSS
jpayne@69 1664 #define WACS_LTEE WACS_SSSB
jpayne@69 1665 #define WACS_BTEE WACS_SSBS
jpayne@69 1666 #define WACS_TTEE WACS_BSSS
jpayne@69 1667 #define WACS_HLINE WACS_BSBS
jpayne@69 1668 #define WACS_VLINE WACS_SBSB
jpayne@69 1669 #define WACS_PLUS WACS_SSSS
jpayne@69 1670
jpayne@69 1671 #define WACS_S1 NCURSES_WACS('o') /* scan line 1 */
jpayne@69 1672 #define WACS_S9 NCURSES_WACS('s') /* scan line 9 */
jpayne@69 1673 #define WACS_DIAMOND NCURSES_WACS('`') /* diamond */
jpayne@69 1674 #define WACS_CKBOARD NCURSES_WACS('a') /* checker board */
jpayne@69 1675 #define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */
jpayne@69 1676 #define WACS_PLMINUS NCURSES_WACS('g') /* plus/minus */
jpayne@69 1677 #define WACS_BULLET NCURSES_WACS('~') /* bullet */
jpayne@69 1678
jpayne@69 1679 /* Teletype 5410v1 symbols */
jpayne@69 1680 #define WACS_LARROW NCURSES_WACS(',') /* arrow left */
jpayne@69 1681 #define WACS_RARROW NCURSES_WACS('+') /* arrow right */
jpayne@69 1682 #define WACS_DARROW NCURSES_WACS('.') /* arrow down */
jpayne@69 1683 #define WACS_UARROW NCURSES_WACS('-') /* arrow up */
jpayne@69 1684 #define WACS_BOARD NCURSES_WACS('h') /* board of squares */
jpayne@69 1685 #define WACS_LANTERN NCURSES_WACS('i') /* lantern symbol */
jpayne@69 1686 #define WACS_BLOCK NCURSES_WACS('0') /* solid square block */
jpayne@69 1687
jpayne@69 1688 /* ncurses extensions */
jpayne@69 1689 #define WACS_S3 NCURSES_WACS('p') /* scan line 3 */
jpayne@69 1690 #define WACS_S7 NCURSES_WACS('r') /* scan line 7 */
jpayne@69 1691 #define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */
jpayne@69 1692 #define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */
jpayne@69 1693 #define WACS_PI NCURSES_WACS('{') /* Pi */
jpayne@69 1694 #define WACS_NEQUAL NCURSES_WACS('|') /* not equal */
jpayne@69 1695 #define WACS_STERLING NCURSES_WACS('}') /* UK pound sign */
jpayne@69 1696
jpayne@69 1697 /* double lines */
jpayne@69 1698 #define WACS_BDDB NCURSES_WACS('C')
jpayne@69 1699 #define WACS_DDBB NCURSES_WACS('D')
jpayne@69 1700 #define WACS_BBDD NCURSES_WACS('B')
jpayne@69 1701 #define WACS_DBBD NCURSES_WACS('A')
jpayne@69 1702 #define WACS_DBDD NCURSES_WACS('G')
jpayne@69 1703 #define WACS_DDDB NCURSES_WACS('F')
jpayne@69 1704 #define WACS_DDBD NCURSES_WACS('H')
jpayne@69 1705 #define WACS_BDDD NCURSES_WACS('I')
jpayne@69 1706 #define WACS_BDBD NCURSES_WACS('R')
jpayne@69 1707 #define WACS_DBDB NCURSES_WACS('Y')
jpayne@69 1708 #define WACS_DDDD NCURSES_WACS('E')
jpayne@69 1709
jpayne@69 1710 #define WACS_D_ULCORNER WACS_BDDB
jpayne@69 1711 #define WACS_D_LLCORNER WACS_DDBB
jpayne@69 1712 #define WACS_D_URCORNER WACS_BBDD
jpayne@69 1713 #define WACS_D_LRCORNER WACS_DBBD
jpayne@69 1714 #define WACS_D_RTEE WACS_DBDD
jpayne@69 1715 #define WACS_D_LTEE WACS_DDDB
jpayne@69 1716 #define WACS_D_BTEE WACS_DDBD
jpayne@69 1717 #define WACS_D_TTEE WACS_BDDD
jpayne@69 1718 #define WACS_D_HLINE WACS_BDBD
jpayne@69 1719 #define WACS_D_VLINE WACS_DBDB
jpayne@69 1720 #define WACS_D_PLUS WACS_DDDD
jpayne@69 1721
jpayne@69 1722 /* thick lines */
jpayne@69 1723 #define WACS_BTTB NCURSES_WACS('L')
jpayne@69 1724 #define WACS_TTBB NCURSES_WACS('M')
jpayne@69 1725 #define WACS_BBTT NCURSES_WACS('K')
jpayne@69 1726 #define WACS_TBBT NCURSES_WACS('J')
jpayne@69 1727 #define WACS_TBTT NCURSES_WACS('U')
jpayne@69 1728 #define WACS_TTTB NCURSES_WACS('T')
jpayne@69 1729 #define WACS_TTBT NCURSES_WACS('V')
jpayne@69 1730 #define WACS_BTTT NCURSES_WACS('W')
jpayne@69 1731 #define WACS_BTBT NCURSES_WACS('Q')
jpayne@69 1732 #define WACS_TBTB NCURSES_WACS('X')
jpayne@69 1733 #define WACS_TTTT NCURSES_WACS('N')
jpayne@69 1734
jpayne@69 1735 #define WACS_T_ULCORNER WACS_BTTB
jpayne@69 1736 #define WACS_T_LLCORNER WACS_TTBB
jpayne@69 1737 #define WACS_T_URCORNER WACS_BBTT
jpayne@69 1738 #define WACS_T_LRCORNER WACS_TBBT
jpayne@69 1739 #define WACS_T_RTEE WACS_TBTT
jpayne@69 1740 #define WACS_T_LTEE WACS_TTTB
jpayne@69 1741 #define WACS_T_BTEE WACS_TTBT
jpayne@69 1742 #define WACS_T_TTEE WACS_BTTT
jpayne@69 1743 #define WACS_T_HLINE WACS_BTBT
jpayne@69 1744 #define WACS_T_VLINE WACS_TBTB
jpayne@69 1745 #define WACS_T_PLUS WACS_TTTT
jpayne@69 1746
jpayne@69 1747 /*
jpayne@69 1748 * Function prototypes for wide-character operations.
jpayne@69 1749 *
jpayne@69 1750 * "generated" comments should include ":WIDEC" to make the corresponding
jpayne@69 1751 * functions ifdef'd in lib_gen.c
jpayne@69 1752 *
jpayne@69 1753 * "implemented" comments do not need this marker.
jpayne@69 1754 */
jpayne@69 1755
jpayne@69 1756 extern NCURSES_EXPORT(int) add_wch (const cchar_t *); /* generated:WIDEC */
jpayne@69 1757 extern NCURSES_EXPORT(int) add_wchnstr (const cchar_t *, int); /* generated:WIDEC */
jpayne@69 1758 extern NCURSES_EXPORT(int) add_wchstr (const cchar_t *); /* generated:WIDEC */
jpayne@69 1759 extern NCURSES_EXPORT(int) addnwstr (const wchar_t *, int); /* generated:WIDEC */
jpayne@69 1760 extern NCURSES_EXPORT(int) addwstr (const wchar_t *); /* generated:WIDEC */
jpayne@69 1761 extern NCURSES_EXPORT(int) bkgrnd (const cchar_t *); /* generated:WIDEC */
jpayne@69 1762 extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *); /* generated:WIDEC */
jpayne@69 1763 extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */
jpayne@69 1764 extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *); /* generated:WIDEC */
jpayne@69 1765 extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *); /* generated:WIDEC */
jpayne@69 1766 extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented */
jpayne@69 1767 extern NCURSES_EXPORT(int) get_wch (wint_t *); /* generated:WIDEC */
jpayne@69 1768 extern NCURSES_EXPORT(int) get_wstr (wint_t *); /* generated:WIDEC */
jpayne@69 1769 extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *); /* generated:WIDEC */
jpayne@69 1770 extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, NCURSES_PAIRS_T*, void*); /* implemented */
jpayne@69 1771 extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int); /* generated:WIDEC */
jpayne@69 1772 extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int); /* generated:WIDEC */
jpayne@69 1773 extern NCURSES_EXPORT(int) in_wch (cchar_t *); /* generated:WIDEC */
jpayne@69 1774 extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int); /* generated:WIDEC */
jpayne@69 1775 extern NCURSES_EXPORT(int) in_wchstr (cchar_t *); /* generated:WIDEC */
jpayne@69 1776 extern NCURSES_EXPORT(int) innwstr (wchar_t *, int); /* generated:WIDEC */
jpayne@69 1777 extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int); /* generated:WIDEC */
jpayne@69 1778 extern NCURSES_EXPORT(int) ins_wch (const cchar_t *); /* generated:WIDEC */
jpayne@69 1779 extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *); /* generated:WIDEC */
jpayne@69 1780 extern NCURSES_EXPORT(int) inwstr (wchar_t *); /* generated:WIDEC */
jpayne@69 1781 extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t); /* implemented */
jpayne@69 1782 extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented */
jpayne@69 1783 extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *); /* generated:WIDEC */
jpayne@69 1784 extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */
jpayne@69 1785 extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *); /* generated:WIDEC */
jpayne@69 1786 extern NCURSES_EXPORT(int) mvaddnwstr (int, int, const wchar_t *, int); /* generated:WIDEC */
jpayne@69 1787 extern NCURSES_EXPORT(int) mvaddwstr (int, int, const wchar_t *); /* generated:WIDEC */
jpayne@69 1788 extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *); /* generated:WIDEC */
jpayne@69 1789 extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *); /* generated:WIDEC */
jpayne@69 1790 extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int); /* generated:WIDEC */
jpayne@69 1791 extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int); /* generated:WIDEC */
jpayne@69 1792 extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *); /* generated:WIDEC */
jpayne@69 1793 extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */
jpayne@69 1794 extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *); /* generated:WIDEC */
jpayne@69 1795 extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int); /* generated:WIDEC */
jpayne@69 1796 extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int); /* generated:WIDEC */
jpayne@69 1797 extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *); /* generated:WIDEC */
jpayne@69 1798 extern NCURSES_EXPORT(int) mvins_wstr (int, int, const wchar_t *); /* generated:WIDEC */
jpayne@69 1799 extern NCURSES_EXPORT(int) mvinwstr (int, int, wchar_t *); /* generated:WIDEC */
jpayne@69 1800 extern NCURSES_EXPORT(int) mvvline_set (int, int, const cchar_t *, int); /* generated:WIDEC */
jpayne@69 1801 extern NCURSES_EXPORT(int) mvwadd_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */
jpayne@69 1802 extern NCURSES_EXPORT(int) mvwadd_wchnstr (WINDOW *, int, int, const cchar_t *, int); /* generated:WIDEC */
jpayne@69 1803 extern NCURSES_EXPORT(int) mvwadd_wchstr (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */
jpayne@69 1804 extern NCURSES_EXPORT(int) mvwaddnwstr (WINDOW *, int, int, const wchar_t *, int);/* generated:WIDEC */
jpayne@69 1805 extern NCURSES_EXPORT(int) mvwaddwstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */
jpayne@69 1806 extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *); /* generated:WIDEC */
jpayne@69 1807 extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *); /* generated:WIDEC */
jpayne@69 1808 extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */
jpayne@69 1809 extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */
jpayne@69 1810 extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */
jpayne@69 1811 extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int); /* generated:WIDEC */
jpayne@69 1812 extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */
jpayne@69 1813 extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */
jpayne@69 1814 extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */
jpayne@69 1815 extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */
jpayne@69 1816 extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */
jpayne@69 1817 extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *); /* generated:WIDEC */
jpayne@69 1818 extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */
jpayne@69 1819 extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */
jpayne@69 1820 extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, NCURSES_PAIRS_T, const void *); /* implemented */
jpayne@69 1821 extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* implemented */
jpayne@69 1822 extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented */
jpayne@69 1823 extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented */
jpayne@69 1824 extern NCURSES_EXPORT(int) vid_attr (attr_t, NCURSES_PAIRS_T, void *); /* implemented */
jpayne@69 1825 extern NCURSES_EXPORT(int) vid_puts (attr_t, NCURSES_PAIRS_T, void *, NCURSES_OUTC); /* implemented */
jpayne@69 1826 extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int); /* generated:WIDEC */
jpayne@69 1827 extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *); /* implemented */
jpayne@69 1828 extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */
jpayne@69 1829 extern NCURSES_EXPORT(int) wadd_wchstr (WINDOW *,const cchar_t *); /* generated:WIDEC */
jpayne@69 1830 extern NCURSES_EXPORT(int) waddnwstr (WINDOW *,const wchar_t *,int); /* implemented */
jpayne@69 1831 extern NCURSES_EXPORT(int) waddwstr (WINDOW *,const wchar_t *); /* generated:WIDEC */
jpayne@69 1832 extern NCURSES_EXPORT(int) wbkgrnd (WINDOW *,const cchar_t *); /* implemented */
jpayne@69 1833 extern NCURSES_EXPORT(void) wbkgrndset (WINDOW *,const cchar_t *); /* implemented */
jpayne@69 1834 extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* implemented */
jpayne@69 1835 extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */
jpayne@69 1836 extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */
jpayne@69 1837 extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */
jpayne@69 1838 extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */
jpayne@69 1839 extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *, wint_t *, int); /* implemented */
jpayne@69 1840 extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */
jpayne@69 1841 extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */
jpayne@69 1842 extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */
jpayne@69 1843 extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *); /* generated:WIDEC */
jpayne@69 1844 extern NCURSES_EXPORT(int) winnwstr (WINDOW *, wchar_t *, int); /* implemented */
jpayne@69 1845 extern NCURSES_EXPORT(int) wins_nwstr (WINDOW *, const wchar_t *, int); /* implemented */
jpayne@69 1846 extern NCURSES_EXPORT(int) wins_wch (WINDOW *, const cchar_t *); /* implemented */
jpayne@69 1847 extern NCURSES_EXPORT(int) wins_wstr (WINDOW *, const wchar_t *); /* generated:WIDEC */
jpayne@69 1848 extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *); /* implemented */
jpayne@69 1849 extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *); /* implemented */
jpayne@69 1850 extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */
jpayne@69 1851
jpayne@69 1852 #if NCURSES_SP_FUNCS
jpayne@69 1853 extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(term_attrs) (SCREEN*); /* implemented:SP_FUNC */
jpayne@69 1854 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(erasewchar) (SCREEN*, wchar_t *); /* implemented:SP_FUNC */
jpayne@69 1855 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(killwchar) (SCREEN*, wchar_t *); /* implemented:SP_FUNC */
jpayne@69 1856 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(unget_wch) (SCREEN*, const wchar_t); /* implemented:SP_FUNC */
jpayne@69 1857 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_attr) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *); /* implemented:SP_FUNC */
jpayne@69 1858 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
jpayne@69 1859 extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *); /* implemented:SP_FUNC */
jpayne@69 1860 #endif
jpayne@69 1861
jpayne@69 1862 #ifndef NCURSES_NOMACROS
jpayne@69 1863
jpayne@69 1864 /*
jpayne@69 1865 * XSI curses macros for XPG4 conformance.
jpayne@69 1866 */
jpayne@69 1867 #define add_wch(c) wadd_wch(stdscr,(c))
jpayne@69 1868 #define add_wchnstr(str,n) wadd_wchnstr(stdscr,(str),(n))
jpayne@69 1869 #define add_wchstr(str) wadd_wchstr(stdscr,(str))
jpayne@69 1870 #define addnwstr(wstr,n) waddnwstr(stdscr,(wstr),(n))
jpayne@69 1871 #define addwstr(wstr) waddwstr(stdscr,(wstr))
jpayne@69 1872 #define bkgrnd(c) wbkgrnd(stdscr,(c))
jpayne@69 1873 #define bkgrndset(c) wbkgrndset(stdscr,(c))
jpayne@69 1874 #define border_set(l,r,t,b,tl,tr,bl,br) wborder_set(stdscr,(l),(r),(t),(b),tl,tr,bl,br)
jpayne@69 1875 #define box_set(w,v,h) wborder_set((w),(v),(v),(h),(h),0,0,0,0)
jpayne@69 1876 #define echo_wchar(c) wecho_wchar(stdscr,(c))
jpayne@69 1877 #define get_wch(c) wget_wch(stdscr,(c))
jpayne@69 1878 #define get_wstr(t) wget_wstr(stdscr,(t))
jpayne@69 1879 #define getbkgrnd(wch) wgetbkgrnd(stdscr,(wch))
jpayne@69 1880 #define getn_wstr(t,n) wgetn_wstr(stdscr,(t),(n))
jpayne@69 1881 #define hline_set(c,n) whline_set(stdscr,(c),(n))
jpayne@69 1882 #define in_wch(c) win_wch(stdscr,(c))
jpayne@69 1883 #define in_wchnstr(c,n) win_wchnstr(stdscr,(c),(n))
jpayne@69 1884 #define in_wchstr(c) win_wchstr(stdscr,(c))
jpayne@69 1885 #define innwstr(c,n) winnwstr(stdscr,(c),(n))
jpayne@69 1886 #define ins_nwstr(t,n) wins_nwstr(stdscr,(t),(n))
jpayne@69 1887 #define ins_wch(c) wins_wch(stdscr,(c))
jpayne@69 1888 #define ins_wstr(t) wins_wstr(stdscr,(t))
jpayne@69 1889 #define inwstr(c) winwstr(stdscr,(c))
jpayne@69 1890 #define vline_set(c,n) wvline_set(stdscr,(c),(n))
jpayne@69 1891 #define wadd_wchstr(win,str) wadd_wchnstr((win),(str),-1)
jpayne@69 1892 #define waddwstr(win,wstr) waddnwstr((win),(wstr),-1)
jpayne@69 1893 #define wget_wstr(w,t) wgetn_wstr((w),(t),-1)
jpayne@69 1894 #define win_wchstr(w,c) win_wchnstr((w),(c),-1)
jpayne@69 1895 #define wins_wstr(w,t) wins_nwstr((w),(t),-1)
jpayne@69 1896
jpayne@69 1897 #if !NCURSES_OPAQUE
jpayne@69 1898 #define wgetbkgrnd(win,wch) (NCURSES_OK_ADDR(wch) ? ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK) : ERR)
jpayne@69 1899 #endif
jpayne@69 1900
jpayne@69 1901 #define mvadd_wch(y,x,c) mvwadd_wch(stdscr,(y),(x),(c))
jpayne@69 1902 #define mvadd_wchnstr(y,x,s,n) mvwadd_wchnstr(stdscr,(y),(x),(s),(n))
jpayne@69 1903 #define mvadd_wchstr(y,x,s) mvwadd_wchstr(stdscr,(y),(x),(s))
jpayne@69 1904 #define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,(y),(x),(wstr),(n))
jpayne@69 1905 #define mvaddwstr(y,x,wstr) mvwaddwstr(stdscr,(y),(x),(wstr))
jpayne@69 1906 #define mvget_wch(y,x,c) mvwget_wch(stdscr,(y),(x),(c))
jpayne@69 1907 #define mvget_wstr(y,x,t) mvwget_wstr(stdscr,(y),(x),(t))
jpayne@69 1908 #define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,(y),(x),(t),(n))
jpayne@69 1909 #define mvhline_set(y,x,c,n) mvwhline_set(stdscr,(y),(x),(c),(n))
jpayne@69 1910 #define mvin_wch(y,x,c) mvwin_wch(stdscr,(y),(x),(c))
jpayne@69 1911 #define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,(y),(x),(c),(n))
jpayne@69 1912 #define mvin_wchstr(y,x,c) mvwin_wchstr(stdscr,(y),(x),(c))
jpayne@69 1913 #define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,(y),(x),(c),(n))
jpayne@69 1914 #define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,(y),(x),(t),(n))
jpayne@69 1915 #define mvins_wch(y,x,c) mvwins_wch(stdscr,(y),(x),(c))
jpayne@69 1916 #define mvins_wstr(y,x,t) mvwins_wstr(stdscr,(y),(x),(t))
jpayne@69 1917 #define mvinwstr(y,x,c) mvwinwstr(stdscr,(y),(x),(c))
jpayne@69 1918 #define mvvline_set(y,x,c,n) mvwvline_set(stdscr,(y),(x),(c),(n))
jpayne@69 1919
jpayne@69 1920 #define mvwadd_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wch((win),(c)))
jpayne@69 1921 #define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchnstr((win),(s),(n)))
jpayne@69 1922 #define mvwadd_wchstr(win,y,x,s) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchstr((win),(s)))
jpayne@69 1923 #define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,(y),(x)) == ERR ? ERR : waddnwstr((win),(wstr),(n)))
jpayne@69 1924 #define mvwaddwstr(win,y,x,wstr) (wmove(win,(y),(x)) == ERR ? ERR : waddwstr((win),(wstr)))
jpayne@69 1925 #define mvwget_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wget_wch((win),(c)))
jpayne@69 1926 #define mvwget_wstr(win,y,x,t) (wmove(win,(y),(x)) == ERR ? ERR : wget_wstr((win),(t)))
jpayne@69 1927 #define mvwgetn_wstr(win,y,x,t,n) (wmove(win,(y),(x)) == ERR ? ERR : wgetn_wstr((win),(t),(n)))
jpayne@69 1928 #define mvwhline_set(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : whline_set((win),(c),(n)))
jpayne@69 1929 #define mvwin_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : win_wch((win),(c)))
jpayne@69 1930 #define mvwin_wchnstr(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : win_wchnstr((win),(c),(n)))
jpayne@69 1931 #define mvwin_wchstr(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : win_wchstr((win),(c)))
jpayne@69 1932 #define mvwinnwstr(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : winnwstr((win),(c),(n)))
jpayne@69 1933 #define mvwins_nwstr(win,y,x,t,n) (wmove(win,(y),(x)) == ERR ? ERR : wins_nwstr((win),(t),(n)))
jpayne@69 1934 #define mvwins_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wins_wch((win),(c)))
jpayne@69 1935 #define mvwins_wstr(win,y,x,t) (wmove(win,(y),(x)) == ERR ? ERR : wins_wstr((win),(t)))
jpayne@69 1936 #define mvwinwstr(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : winwstr((win),(c)))
jpayne@69 1937 #define mvwvline_set(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : wvline_set((win),(c),(n)))
jpayne@69 1938
jpayne@69 1939 #endif /* NCURSES_NOMACROS */
jpayne@69 1940
jpayne@69 1941 #if defined(TRACE) || defined(NCURSES_TEST)
jpayne@69 1942 extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
jpayne@69 1943 extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *);
jpayne@69 1944 #endif
jpayne@69 1945
jpayne@69 1946 #endif /* NCURSES_WIDECHAR */
jpayne@69 1947 /* $Id: curses.tail,v 1.27 2023/08/05 19:43:46 tom Exp $ */
jpayne@69 1948 /*
jpayne@69 1949 * vile:cmode:
jpayne@69 1950 * This file is part of ncurses, designed to be appended after curses.h.in
jpayne@69 1951 * (see that file for the relevant copyright).
jpayne@69 1952 */
jpayne@69 1953
jpayne@69 1954 /* mouse interface */
jpayne@69 1955
jpayne@69 1956 #if NCURSES_MOUSE_VERSION > 1
jpayne@69 1957 #define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5))
jpayne@69 1958 #else
jpayne@69 1959 #define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6))
jpayne@69 1960 #endif
jpayne@69 1961
jpayne@69 1962 #define NCURSES_BUTTON_RELEASED 001UL
jpayne@69 1963 #define NCURSES_BUTTON_PRESSED 002UL
jpayne@69 1964 #define NCURSES_BUTTON_CLICKED 004UL
jpayne@69 1965 #define NCURSES_DOUBLE_CLICKED 010UL
jpayne@69 1966 #define NCURSES_TRIPLE_CLICKED 020UL
jpayne@69 1967 #define NCURSES_RESERVED_EVENT 040UL
jpayne@69 1968
jpayne@69 1969 /* event masks */
jpayne@69 1970 #define BUTTON1_RELEASED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
jpayne@69 1971 #define BUTTON1_PRESSED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)
jpayne@69 1972 #define BUTTON1_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED)
jpayne@69 1973 #define BUTTON1_DOUBLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)
jpayne@69 1974 #define BUTTON1_TRIPLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)
jpayne@69 1975
jpayne@69 1976 #define BUTTON2_RELEASED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED)
jpayne@69 1977 #define BUTTON2_PRESSED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED)
jpayne@69 1978 #define BUTTON2_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED)
jpayne@69 1979 #define BUTTON2_DOUBLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED)
jpayne@69 1980 #define BUTTON2_TRIPLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED)
jpayne@69 1981
jpayne@69 1982 #define BUTTON3_RELEASED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED)
jpayne@69 1983 #define BUTTON3_PRESSED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED)
jpayne@69 1984 #define BUTTON3_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED)
jpayne@69 1985 #define BUTTON3_DOUBLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED)
jpayne@69 1986 #define BUTTON3_TRIPLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED)
jpayne@69 1987
jpayne@69 1988 #define BUTTON4_RELEASED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED)
jpayne@69 1989 #define BUTTON4_PRESSED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED)
jpayne@69 1990 #define BUTTON4_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED)
jpayne@69 1991 #define BUTTON4_DOUBLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED)
jpayne@69 1992 #define BUTTON4_TRIPLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED)
jpayne@69 1993
jpayne@69 1994 /*
jpayne@69 1995 * In 32 bits the version-1 scheme does not provide enough space for a 5th
jpayne@69 1996 * button, unless we choose to change the ABI by omitting the reserved-events.
jpayne@69 1997 */
jpayne@69 1998 #if NCURSES_MOUSE_VERSION > 1
jpayne@69 1999
jpayne@69 2000 #define BUTTON5_RELEASED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
jpayne@69 2001 #define BUTTON5_PRESSED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
jpayne@69 2002 #define BUTTON5_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
jpayne@69 2003 #define BUTTON5_DOUBLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
jpayne@69 2004 #define BUTTON5_TRIPLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
jpayne@69 2005
jpayne@69 2006 #define BUTTON_CTRL NCURSES_MOUSE_MASK(6, 0001L)
jpayne@69 2007 #define BUTTON_SHIFT NCURSES_MOUSE_MASK(6, 0002L)
jpayne@69 2008 #define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L)
jpayne@69 2009 #define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L)
jpayne@69 2010
jpayne@69 2011 #else
jpayne@69 2012
jpayne@69 2013 #define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT)
jpayne@69 2014 #define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT)
jpayne@69 2015 #define BUTTON3_RESERVED_EVENT NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT)
jpayne@69 2016 #define BUTTON4_RESERVED_EVENT NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT)
jpayne@69 2017
jpayne@69 2018 #define BUTTON_CTRL NCURSES_MOUSE_MASK(5, 0001L)
jpayne@69 2019 #define BUTTON_SHIFT NCURSES_MOUSE_MASK(5, 0002L)
jpayne@69 2020 #define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L)
jpayne@69 2021 #define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L)
jpayne@69 2022
jpayne@69 2023 #endif
jpayne@69 2024
jpayne@69 2025 #define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1)
jpayne@69 2026
jpayne@69 2027 /* macros to extract single event-bits from masks */
jpayne@69 2028 #define BUTTON_RELEASE(e, x) ((e) & NCURSES_MOUSE_MASK(x, 001))
jpayne@69 2029 #define BUTTON_PRESS(e, x) ((e) & NCURSES_MOUSE_MASK(x, 002))
jpayne@69 2030 #define BUTTON_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 004))
jpayne@69 2031 #define BUTTON_DOUBLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 010))
jpayne@69 2032 #define BUTTON_TRIPLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 020))
jpayne@69 2033 #define BUTTON_RESERVED_EVENT(e, x) ((e) & NCURSES_MOUSE_MASK(x, 040))
jpayne@69 2034
jpayne@69 2035 typedef struct
jpayne@69 2036 {
jpayne@69 2037 short id; /* ID to distinguish multiple devices */
jpayne@69 2038 int x, y, z; /* event coordinates (character-cell) */
jpayne@69 2039 mmask_t bstate; /* button state bits */
jpayne@69 2040 }
jpayne@69 2041 MEVENT;
jpayne@69 2042
jpayne@69 2043 extern NCURSES_EXPORT(bool) has_mouse(void);
jpayne@69 2044 extern NCURSES_EXPORT(int) getmouse (MEVENT *);
jpayne@69 2045 extern NCURSES_EXPORT(int) ungetmouse (MEVENT *);
jpayne@69 2046 extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *);
jpayne@69 2047 extern NCURSES_EXPORT(bool) wenclose (const WINDOW *, int, int);
jpayne@69 2048 extern NCURSES_EXPORT(int) mouseinterval (int);
jpayne@69 2049 extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW*, int*, int*, bool);
jpayne@69 2050 extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool); /* generated */
jpayne@69 2051
jpayne@69 2052 #if NCURSES_SP_FUNCS
jpayne@69 2053 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_mouse) (SCREEN*);
jpayne@69 2054 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(getmouse) (SCREEN*, MEVENT *);
jpayne@69 2055 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetmouse) (SCREEN*,MEVENT *);
jpayne@69 2056 extern NCURSES_EXPORT(mmask_t) NCURSES_SP_NAME(mousemask) (SCREEN*, mmask_t, mmask_t *);
jpayne@69 2057 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mouseinterval) (SCREEN*, int);
jpayne@69 2058 #endif
jpayne@69 2059
jpayne@69 2060 #ifndef NCURSES_NOMACROS
jpayne@69 2061 #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
jpayne@69 2062 #endif
jpayne@69 2063
jpayne@69 2064 /* other non-XSI functions */
jpayne@69 2065
jpayne@69 2066 extern NCURSES_EXPORT(int) mcprint (char *, int); /* direct data to printer */
jpayne@69 2067 extern NCURSES_EXPORT(int) has_key (int); /* do we have given key? */
jpayne@69 2068
jpayne@69 2069 #if NCURSES_SP_FUNCS
jpayne@69 2070 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(has_key) (SCREEN*, int); /* do we have given key? */
jpayne@69 2071 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mcprint) (SCREEN*, char *, int); /* direct data to printer */
jpayne@69 2072 #endif
jpayne@69 2073
jpayne@69 2074 /* Debugging : use with libncurses_g.a */
jpayne@69 2075
jpayne@69 2076 extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2);
jpayne@69 2077 extern NCURSES_EXPORT(char *) _traceattr (attr_t);
jpayne@69 2078 extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype);
jpayne@69 2079 extern NCURSES_EXPORT(char *) _tracechar (int);
jpayne@69 2080 extern NCURSES_EXPORT(char *) _tracechtype (chtype);
jpayne@69 2081 extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype);
jpayne@69 2082 #if NCURSES_WIDECHAR
jpayne@69 2083 #define _tracech_t _tracecchar_t
jpayne@69 2084 extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *);
jpayne@69 2085 #define _tracech_t2 _tracecchar_t2
jpayne@69 2086 extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *);
jpayne@69 2087 #else
jpayne@69 2088 #define _tracech_t _tracechtype
jpayne@69 2089 #define _tracech_t2 _tracechtype2
jpayne@69 2090 #endif
jpayne@69 2091 extern NCURSES_EXPORT(void) trace (const unsigned) GCC_DEPRECATED("use curses_trace");
jpayne@69 2092 extern NCURSES_EXPORT(unsigned) curses_trace (const unsigned);
jpayne@69 2093
jpayne@69 2094 /* trace masks */
jpayne@69 2095 #define TRACE_DISABLE 0x0000 /* turn off tracing */
jpayne@69 2096 #define TRACE_TIMES 0x0001 /* trace user and system times of updates */
jpayne@69 2097 #define TRACE_TPUTS 0x0002 /* trace tputs calls */
jpayne@69 2098 #define TRACE_UPDATE 0x0004 /* trace update actions, old & new screens */
jpayne@69 2099 #define TRACE_MOVE 0x0008 /* trace cursor moves and scrolls */
jpayne@69 2100 #define TRACE_CHARPUT 0x0010 /* trace all character outputs */
jpayne@69 2101 #define TRACE_ORDINARY 0x001F /* trace all update actions */
jpayne@69 2102 #define TRACE_CALLS 0x0020 /* trace all curses calls */
jpayne@69 2103 #define TRACE_VIRTPUT 0x0040 /* trace virtual character puts */
jpayne@69 2104 #define TRACE_IEVENT 0x0080 /* trace low-level input processing */
jpayne@69 2105 #define TRACE_BITS 0x0100 /* trace state of TTY control bits */
jpayne@69 2106 #define TRACE_ICALLS 0x0200 /* trace internal/nested calls */
jpayne@69 2107 #define TRACE_CCALLS 0x0400 /* trace per-character calls */
jpayne@69 2108 #define TRACE_DATABASE 0x0800 /* trace read/write of terminfo/termcap data */
jpayne@69 2109 #define TRACE_ATTRS 0x1000 /* trace attribute updates */
jpayne@69 2110
jpayne@69 2111 #define TRACE_SHIFT 13 /* number of bits in the trace masks */
jpayne@69 2112 #define TRACE_MAXIMUM ((1 << TRACE_SHIFT) - 1) /* maximum trace level */
jpayne@69 2113
jpayne@69 2114 #if defined(TRACE) || defined(NCURSES_TEST)
jpayne@69 2115 extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable; /* enable optimizations */
jpayne@69 2116 extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
jpayne@69 2117 #define OPTIMIZE_MVCUR 0x01 /* cursor movement optimization */
jpayne@69 2118 #define OPTIMIZE_HASHMAP 0x02 /* diff hashing to detect scrolls */
jpayne@69 2119 #define OPTIMIZE_SCROLL 0x04 /* scroll optimization */
jpayne@69 2120 #define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */
jpayne@69 2121 #endif
jpayne@69 2122
jpayne@69 2123 extern GCC_NORETURN NCURSES_EXPORT(void) exit_curses (int);
jpayne@69 2124
jpayne@69 2125 #include <ncursesw/unctrl.h>
jpayne@69 2126
jpayne@69 2127 #ifdef __cplusplus
jpayne@69 2128
jpayne@69 2129 #ifndef NCURSES_NOMACROS
jpayne@69 2130
jpayne@69 2131 /* these names conflict with STL */
jpayne@69 2132 #undef box
jpayne@69 2133 #undef clear
jpayne@69 2134 #undef erase
jpayne@69 2135 #undef move
jpayne@69 2136 #undef refresh
jpayne@69 2137
jpayne@69 2138 #endif /* NCURSES_NOMACROS */
jpayne@69 2139
jpayne@69 2140 }
jpayne@69 2141 #endif
jpayne@69 2142
jpayne@69 2143 #endif /* __NCURSES_H */