Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / curses.h @ 14

History | View | Annotate | Download (33.9 KB)

1
/*        $NetBSD: curses.h,v 1.107 2015/06/08 12:38:57 joerg Exp $        */
2

    
3
/*
4
 * Copyright (c) 1981, 1993, 1994
5
 *        The Regents of the University of California.  All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or without
8
 * modification, are permitted provided that the following conditions
9
 * are met:
10
 * 1. Redistributions of source code must retain the above copyright
11
 *    notice, this list of conditions and the following disclaimer.
12
 * 2. Redistributions in binary form must reproduce the above copyright
13
 *    notice, this list of conditions and the following disclaimer in the
14
 *    documentation and/or other materials provided with the distribution.
15
 * 3. Neither the name of the University nor the names of its contributors
16
 *    may be used to endorse or promote products derived from this software
17
 *    without specific prior written permission.
18
 *
19
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29
 * SUCH DAMAGE.
30
 *
31
 *        @(#)curses.h        8.5 (Berkeley) 4/29/95
32
 *
33
 *        Modified by Ruibiao Qiu <ruibiao@arl.wustl.edu,ruibiao@gmail.com> 2005
34
 *        to add wide-character support
35
 *  - Add complex character structure (cchar_t)
36
 *        - Add definitions of wide-character routines
37
 *        - Add KEY_CODE_YES
38
 */
39

    
40
#ifndef _CURSES_H_
41
#define        _CURSES_H_
42

    
43
#include <sys/types.h>
44
#include <sys/cdefs.h>
45
#include <wchar.h>
46

    
47
#include <stdio.h>
48
#include <stdbool.h>
49

    
50
/*
51
 * attr_t must be the same size as wchar_t (see <wchar.h>) to avoid padding
52
 * in __LDATA.
53
 */
54
typedef wchar_t        chtype;
55
typedef wchar_t        attr_t;
56

    
57
#if !defined(HAVE_WCHAR) && !defined(DISABLE_WCHAR)
58
#define HAVE_WCHAR 1
59
#endif
60

    
61
#ifdef HAVE_WCHAR
62
/* 
63
 * The complex character structure required by the X/Open reference and used
64
 * in * functions such as in_wchstr(). It includes a string of up to 8 wide
65
 * characters and its length, an attribute, and a color-pair.
66
 */
67
#define CURSES_CCHAR_MAX 8
68
#define CCHARW_MAX       5
69
typedef struct {
70
        attr_t                attributes;                /* character attributes */
71
        unsigned        elements;                /* number of wide char in
72
                                                   vals[] */
73
        wchar_t                vals[CURSES_CCHAR_MAX]; /* wide chars including
74
                                                   non-spacing */
75
} cchar_t;
76
#else 
77
typedef chtype cchar_t;
78
#endif /* HAVE_WCHAR */
79

    
80
#ifndef TRUE
81
#define        TRUE        (/*CONSTCOND*/1)
82
#endif
83
#ifndef FALSE
84
#define        FALSE        (/*CONSTCOND*/0)
85
#endif
86

    
87
#ifndef _CURSES_PRIVATE
88

    
89
#define _puts(s)        tputs(s, 0, __cputchar)
90
#define _putchar(c)     __cputchar(c)
91

    
92
/* Old-style terminal modes access. */
93
#define crmode()        cbreak()
94
#define nocrmode()      nocbreak()
95
#endif /* _CURSES_PRIVATE */
96

    
97

    
98
/* symbols for values returned by getch in keypad mode */
99
#define    KEY_MIN        0x101    /* minimum extended key value */
100
#define    KEY_BREAK      0x101    /* break key */
101
#define    KEY_DOWN       0x102    /* down arrow */
102
#define    KEY_UP         0x103    /* up arrow */
103
#define    KEY_LEFT       0x104    /* left arrow */
104
#define    KEY_RIGHT      0x105    /* right arrow*/
105
#define    KEY_HOME       0x106    /* home key */
106
#define    KEY_BACKSPACE  0x107    /* Backspace */
107

    
108
/* First function key (block of 64 follow) */
109
#define    KEY_F0         0x108
110
/* Function defining other function key values*/
111
#define    KEY_F(n)       (KEY_F0+(n))
112

    
113
#define    KEY_DL         0x148    /* Delete Line */
114
#define    KEY_IL         0x149    /* Insert Line*/
115
#define    KEY_DC         0x14A    /* Delete Character */
116
#define    KEY_IC         0x14B    /* Insert Character */
117
#define    KEY_EIC        0x14C    /* Exit Insert Char mode */
118
#define    KEY_CLEAR      0x14D    /* Clear screen */
119
#define    KEY_EOS        0x14E    /* Clear to end of screen */
120
#define    KEY_EOL        0x14F    /* Clear to end of line */
121
#define    KEY_SF         0x150    /* Scroll one line forward */
122
#define    KEY_SR         0x151    /* Scroll one line back */
123
#define    KEY_NPAGE      0x152    /* Next Page */
124
#define    KEY_PPAGE      0x153    /* Prev Page */
125
#define    KEY_STAB       0x154    /* Set Tab */
126
#define    KEY_CTAB       0x155    /* Clear Tab */
127
#define    KEY_CATAB      0x156    /* Clear All Tabs */
128
#define    KEY_ENTER      0x157    /* Enter or Send */
129
#define    KEY_SRESET     0x158    /* Soft Reset */
130
#define    KEY_RESET      0x159    /* Hard Reset */
131
#define    KEY_PRINT      0x15A    /* Print */
132
#define    KEY_LL         0x15B    /* Home Down */
133

    
134
/*
135
 * "Keypad" keys arranged like this:
136
 *
137
 *  A1   up  A3
138
 * left  B2 right
139
 *  C1  down C3
140
 *
141
 */
142
#define    KEY_A1         0x15C    /* Keypad upper left */
143
#define    KEY_A3         0x15D    /* Keypad upper right */
144
#define    KEY_B2         0x15E    /* Keypad centre key */
145
#define    KEY_C1         0x15F    /* Keypad lower left */
146
#define    KEY_C3         0x160    /* Keypad lower right */
147

    
148
#define    KEY_BTAB       0x161    /* Back Tab */
149
#define    KEY_BEG        0x162    /* Begin key */
150
#define    KEY_CANCEL     0x163    /* Cancel key */
151
#define    KEY_CLOSE      0x164    /* Close Key */
152
#define    KEY_COMMAND    0x165    /* Command Key */
153
#define    KEY_COPY       0x166    /* Copy key */
154
#define    KEY_CREATE     0x167    /* Create key */
155
#define    KEY_END        0x168    /* End key */
156
#define    KEY_EXIT       0x169    /* Exit key */
157
#define    KEY_FIND       0x16A    /* Find key */
158
#define    KEY_HELP       0x16B    /* Help key */
159
#define    KEY_MARK       0x16C    /* Mark key */
160
#define    KEY_MESSAGE    0x16D    /* Message key */
161
#define    KEY_MOVE       0x16E    /* Move key */
162
#define    KEY_NEXT       0x16F    /* Next Object key */
163
#define    KEY_OPEN       0x170    /* Open key */
164
#define    KEY_OPTIONS    0x171    /* Options key */
165
#define    KEY_PREVIOUS   0x172    /* Previous Object key */
166
#define    KEY_REDO       0x173    /* Redo key */
167
#define    KEY_REFERENCE  0x174    /* Ref Key */
168
#define    KEY_REFRESH    0x175    /* Refresh key */
169
#define    KEY_REPLACE    0x176    /* Replace key */
170
#define    KEY_RESTART    0x177    /* Restart key */
171
#define    KEY_RESUME     0x178    /* Resume key */
172
#define    KEY_SAVE       0x179    /* Save key */
173
#define    KEY_SBEG       0x17A    /* Shift begin key */
174
#define    KEY_SCANCEL    0x17B    /* Shift Cancel key */
175
#define    KEY_SCOMMAND   0x17C    /* Shift Command key */
176
#define    KEY_SCOPY      0x17D    /* Shift Copy key */
177
#define    KEY_SCREATE    0x17E    /* Shift Create key */
178
#define    KEY_SDC        0x17F    /* Shift Delete Character */
179
#define    KEY_SDL        0x180    /* Shift Delete Line */
180
#define    KEY_SELECT     0x181    /* Select key */
181
#define    KEY_SEND       0x182    /* Send key */
182
#define    KEY_SEOL       0x183    /* Shift Clear Line key */
183
#define    KEY_SEXIT      0x184    /* Shift Exit key */
184
#define    KEY_SFIND      0x185    /* Shift Find key */
185
#define    KEY_SHELP      0x186    /* Shift Help key */
186
#define    KEY_SHOME      0x187    /* Shift Home key */
187
#define    KEY_SIC        0x188    /* Shift Input key */
188
#define    KEY_SLEFT      0x189    /* Shift Left Arrow key */
189
#define    KEY_SMESSAGE   0x18A    /* Shift Message key */
190
#define    KEY_SMOVE      0x18B    /* Shift Move key */
191
#define    KEY_SNEXT      0x18C    /* Shift Next key */
192
#define    KEY_SOPTIONS   0x18D    /* Shift Options key */
193
#define    KEY_SPREVIOUS  0x18E    /* Shift Previous key */
194
#define    KEY_SPRINT     0x18F    /* Shift Print key */
195
#define    KEY_SREDO      0x190    /* Shift Redo key */
196
#define    KEY_SREPLACE   0x191    /* Shift Replace key */
197
#define    KEY_SRIGHT     0x192    /* Shift Right Arrow key */
198
#define    KEY_SRSUME     0x193    /* Shift Resume key */
199
#define    KEY_SSAVE      0x194    /* Shift Save key */
200
#define    KEY_SSUSPEND   0x195    /* Shift Suspend key */
201
#define    KEY_SUNDO      0x196    /* Shift Undo key */
202
#define    KEY_SUSPEND    0x197    /* Suspend key */
203
#define    KEY_UNDO       0x198    /* Undo key */
204
#define    KEY_MOUSE      0x199    /* Mouse event has occurred */
205
#define    KEY_RESIZE     0x200    /* Resize event has occurred */
206
#define    KEY_MAX        0x240    /* maximum extended key value */
207
#define    KEY_CODE_YES   0x241    /* A function key pressed */
208

    
209
#include <unctrl.h>
210

    
211
/*
212
 * A window an array of __LINE structures pointed to by the 'lines' pointer.
213
 * A line is an array of __LDATA structures pointed to by the 'line' pointer.
214
 */
215

    
216
/*
217
 * Definitions for characters and attributes in __LDATA
218
 */
219
#define __CHARTEXT        0x000000ff        /* bits for 8-bit characters */
220
#define __NORMAL        0x00000000        /* Added characters are normal. */
221
#define __STANDOUT        0x00000100        /* Added characters are standout. */
222
#define __UNDERSCORE        0x00000200        /* Added characters are underscored. */
223
#define __REVERSE        0x00000400        /* Added characters are reverse
224
                                           video. */
225
#define __BLINK                0x00000800        /* Added characters are blinking. */
226
#define __DIM                0x00001000        /* Added characters are dim. */
227
#define __BOLD                0x00002000        /* Added characters are bold. */
228
#define __BLANK                0x00004000        /* Added characters are blanked. */
229
#define __PROTECT        0x00008000        /* Added characters are protected. */
230
#define __ALTCHARSET        0x00010000        /* Added characters are ACS */
231
#define __COLOR                0x03fe0000        /* Color bits */
232
#define __ATTRIBUTES        0x03ffff00        /* All 8-bit attribute bits */
233
#ifdef HAVE_WCHAR
234
#define __ACS_IS_WACS        0x04000000 /* internal: use wacs table for ACS char */
235
#endif
236

    
237
typedef struct __ldata __LDATA;
238
typedef struct __line  __LINE;
239
typedef struct __window  WINDOW;
240
typedef struct __screen SCREEN;
241

    
242
/*
243
 * Attribute definitions
244
 */
245
#define        A_NORMAL        __NORMAL
246
#define        A_STANDOUT        __STANDOUT
247
#define        A_UNDERLINE        __UNDERSCORE
248
#define        A_REVERSE        __REVERSE
249
#define        A_BLINK                __BLINK
250
#define        A_DIM                __DIM
251
#define        A_BOLD                __BOLD
252
#define        A_BLANK                __BLANK
253
#define        A_INVIS                __BLANK
254
#define        A_PROTECT        __PROTECT
255
#define        A_ALTCHARSET        __ALTCHARSET
256
#define        A_ATTRIBUTES        __ATTRIBUTES
257
#define        A_CHARTEXT        __CHARTEXT
258
#define        A_COLOR                __COLOR
259

    
260
#ifdef HAVE_WCHAR
261
#define WA_ATTRIBUTES        0x03ffffff        /* Wide character attributes mask */
262
#define WA_NORMAL        __NORMAL
263
#define WA_STANDOUT        __STANDOUT        /* Best highlighting mode */
264
#define WA_UNDERLINE        __UNDERSCORE        /* Underlining */
265
#define WA_REVERSE        __REVERSE        /* Reverse video */
266
#define WA_BLINK        __BLINK                /* Blinking */
267
#define WA_DIM                __DIM                /* Half bright */
268
#define WA_BOLD                __BOLD                /* Extra bright or bold */
269
#define WA_INVIS        __BLANK                /* Invisible */
270
#define WA_PROTECT        __PROTECT        /* Protected */
271
#define WA_ALTCHARSET        __ALTCHARSET        /* Alternate character set */
272
#define WA_LOW                0x00000002        /* Low highlight */
273
#define WA_TOP                0x00000004        /* Top highlight */
274
#define WA_HORIZONTAL        0x00000008        /* Horizontal highlight */
275
#define WA_VERTICAL        0x00000010        /* Vertical highlight */
276
#define WA_LEFT                0x00000020        /* Left highlight */
277
#define WA_RIGHT        0x00000040        /* Right highlight */
278
#endif /* HAVE_WCHAR */
279

    
280
/*
281
 * Alternate character set definitions
282
 */
283

    
284
#define        NUM_ACS        128
285

    
286
extern chtype _acs_char[NUM_ACS];
287
#ifdef __cplusplus
288
#define __UC_CAST(a)        static_cast<unsigned char>(a)
289
#else
290
#define __UC_CAST(a)        (unsigned char)(a)
291
#endif
292

    
293
/* Standard definitions */
294
#define        ACS_RARROW        _acs_char[__UC_CAST('+')]
295
#define        ACS_LARROW        _acs_char[__UC_CAST(',')]
296
#define        ACS_UARROW        _acs_char[__UC_CAST('-')]
297
#define        ACS_DARROW        _acs_char[__UC_CAST('.')]
298
#define        ACS_BLOCK        _acs_char[__UC_CAST('0')]
299
#define        ACS_DIAMOND        _acs_char[__UC_CAST('`')]
300
#define        ACS_CKBOARD        _acs_char[__UC_CAST('a')]
301
#define        ACS_DEGREE        _acs_char[__UC_CAST('f')]
302
#define        ACS_PLMINUS        _acs_char[__UC_CAST('g')]
303
#define        ACS_BOARD        _acs_char[__UC_CAST('h')]
304
#define        ACS_LANTERN        _acs_char[__UC_CAST('i')]
305
#define        ACS_LRCORNER        _acs_char[__UC_CAST('j')]
306
#define        ACS_URCORNER        _acs_char[__UC_CAST('k')]
307
#define        ACS_ULCORNER        _acs_char[__UC_CAST('l')]
308
#define        ACS_LLCORNER        _acs_char[__UC_CAST('m')]
309
#define        ACS_PLUS        _acs_char[__UC_CAST('n')]
310
#define        ACS_HLINE        _acs_char[__UC_CAST('q')]
311
#define        ACS_S1                _acs_char[__UC_CAST('o')]
312
#define        ACS_S9                _acs_char[__UC_CAST('s')]
313
#define        ACS_LTEE        _acs_char[__UC_CAST('t')]
314
#define        ACS_RTEE        _acs_char[__UC_CAST('u')]
315
#define        ACS_BTEE        _acs_char[__UC_CAST('v')]
316
#define        ACS_TTEE        _acs_char[__UC_CAST('w')]
317
#define        ACS_VLINE        _acs_char[__UC_CAST('x')]
318
#define        ACS_BULLET        _acs_char[__UC_CAST('~')]
319

    
320
/* Extensions */
321
#define        ACS_S3                _acs_char[__UC_CAST('p')]
322
#define        ACS_S7                _acs_char[__UC_CAST('r')]
323
#define        ACS_LEQUAL        _acs_char[__UC_CAST('y')]
324
#define        ACS_GEQUAL        _acs_char[__UC_CAST('z')]
325
#define        ACS_PI                _acs_char[__UC_CAST('{')]
326
#define        ACS_NEQUAL        _acs_char[__UC_CAST('|')]
327
#define        ACS_STERLING        _acs_char[__UC_CAST('}')]
328

    
329
#ifdef HAVE_WCHAR
330
extern cchar_t _wacs_char[NUM_ACS];
331

    
332
#define        WACS_RARROW     (&_wacs_char[(unsigned char)'+'])
333
#define        WACS_LARROW     (&_wacs_char[(unsigned char)','])
334
#define        WACS_UARROW     (&_wacs_char[(unsigned char)'-'])
335
#define        WACS_DARROW     (&_wacs_char[(unsigned char)'.'])
336
#define        WACS_BLOCK      (&_wacs_char[(unsigned char)'0'])
337
#define        WACS_DIAMOND    (&_wacs_char[(unsigned char)'`'])
338
#define        WACS_CKBOARD    (&_wacs_char[(unsigned char)'a'])
339
#define        WACS_DEGREE     (&_wacs_char[(unsigned char)'f'])
340
#define        WACS_PLMINUS    (&_wacs_char[(unsigned char)'g'])
341
#define        WACS_BOARD      (&_wacs_char[(unsigned char)'h'])
342
#define        WACS_LANTERN    (&_wacs_char[(unsigned char)'i'])
343
#define        WACS_LRCORNER   (&_wacs_char[(unsigned char)'j'])
344
#define        WACS_URCORNER   (&_wacs_char[(unsigned char)'k'])
345
#define        WACS_ULCORNER   (&_wacs_char[(unsigned char)'l'])
346
#define        WACS_LLCORNER   (&_wacs_char[(unsigned char)'m'])
347
#define        WACS_PLUS       (&_wacs_char[(unsigned char)'n'])
348
#define        WACS_HLINE      (&_wacs_char[(unsigned char)'q'])
349
#define        WACS_S1         (&_wacs_char[(unsigned char)'o'])
350
#define        WACS_S9         (&_wacs_char[(unsigned char)'s'])
351
#define        WACS_LTEE       (&_wacs_char[(unsigned char)'t'])
352
#define        WACS_RTEE       (&_wacs_char[(unsigned char)'u'])
353
#define        WACS_BTEE       (&_wacs_char[(unsigned char)'v'])
354
#define        WACS_TTEE       (&_wacs_char[(unsigned char)'w'])
355
#define        WACS_VLINE      (&_wacs_char[(unsigned char)'x'])
356
#define        WACS_BULLET     (&_wacs_char[(unsigned char)'~'])
357
#define        WACS_S3                (&_wacs_char[(unsigned char)'p'])
358
#define        WACS_S7                (&_wacs_char[(unsigned char)'r'])
359
#define        WACS_LEQUAL        (&_wacs_char[(unsigned char)'y'])
360
#define        WACS_GEQUAL        (&_wacs_char[(unsigned char)'z'])
361
#define        WACS_PI                (&_wacs_char[(unsigned char)'{'])
362
#define        WACS_NEQUAL        (&_wacs_char[(unsigned char)'|'])
363
#define        WACS_STERLING        (&_wacs_char[(unsigned char)'}'])
364
#endif /* HAVE_WCHAR */
365

    
366
/* System V compatibility */
367
#define        ACS_SBBS        ACS_LRCORNER
368
#define        ACS_BBSS        ACS_URCORNER
369
#define        ACS_BSSB        ACS_ULCORNER
370
#define        ACS_SSBB        ACS_LLCORNER
371
#define        ACS_SSSS        ACS_PLUS
372
#define        ACS_BSBS        ACS_HLINE
373
#define        ACS_SSSB        ACS_LTEE
374
#define        ACS_SBSS        ACS_RTEE
375
#define        ACS_SSBS        ACS_BTEE
376
#define        ACS_BSSS        ACS_TTEE
377
#define        ACS_SBSB        ACS_VLINE
378
#define        _acs_map        _acs_char
379

    
380
/*
381
 * Color definitions (ANSI color numbers)
382
 */
383

    
384
#define        COLOR_BLACK        0x00
385
#define        COLOR_RED        0x01
386
#define        COLOR_GREEN        0x02
387
#define        COLOR_YELLOW        0x03
388
#define        COLOR_BLUE        0x04
389
#define        COLOR_MAGENTA        0x05
390
#define        COLOR_CYAN        0x06
391
#define        COLOR_WHITE        0x07
392

    
393
#ifdef __cplusplus
394
#define __UINT32_CAST(a)        static_cast<u_int32_t>(a)
395
#else
396
#define __UINT32_CAST(a)        (u_int32_t)(a)
397
#endif
398
#define        COLOR_PAIR(n)        (((__UINT32_CAST(n)) << 17) & A_COLOR)
399
#define        PAIR_NUMBER(n)        (((__UINT32_CAST(n)) & A_COLOR) >> 17)
400

    
401
/* Curses external declarations. */
402
extern WINDOW        *curscr;                /* Current screen. */
403
extern WINDOW        *stdscr;                /* Standard screen. */
404

    
405
extern int        __tcaction;                /* If terminal hardware set. */
406

    
407
extern int         COLS;                        /* Columns on the screen. */
408
extern int         LINES;                        /* Lines on the screen. */
409
extern int         COLORS;                /* Max colors on the screen. */
410
extern int         COLOR_PAIRS;                /* Max color pairs on the screen. */
411

    
412
extern int         ESCDELAY;                /* Delay between keys in esc seq's. */
413
extern int         TABSIZE;                /* Size of a tab. */
414

    
415
#ifndef OK
416
#define        ERR        (-1)                        /* Error return. */
417
#define        OK        (0)                        /* Success return. */
418
#endif
419

    
420
/*
421
 * The following have, traditionally, been macros but X/Open say they
422
 * need to be functions.  Keep the old macros for debugging.
423
 */
424
#ifdef _CURSES_USE_MACROS
425
/* Standard screen pseudo functions. */
426
#define        addbytes(s, n)                        __waddbytes(stdscr, s, n, 0)
427
#define        addch(ch)                        waddch(stdscr, ch)
428
#define        addchnstr(s)                        waddchnstr(stdscr, s, n)
429
#define        addchstr(s)                        waddchnstr(stdscr, s, -1)
430
#define        addnstr(s, n)                        waddnstr(stdscr, s, n)
431
#define        addstr(s)                        waddnstr(stdscr, s, -1)
432
#define attr_get(a, p, o)                wattr_get(stdscr, a, p, o)
433
#define attr_off(a, o)                        wattr_off(stdscr, a, o)
434
#define attr_on(a, o)                        wattr_on(stdscr, a, o)
435
#define attr_set(a, p, o)                wattr_set(stdscr, a, p, o)
436
#define        attroff(attr)                        wattroff(stdscr, attr)
437
#define        attron(attr)                        wattron(stdscr, attr)
438
#define        attrset(attr)                        wattrset(stdscr, attr)
439
#define bkgd(ch)                        wbkgd(stdscr, ch)
440
#define bkgdset(ch)                        wbkgdset(stdscr, ch)
441
#define        border(l, r, t, b, tl, tr, bl, br) \
442
        wborder(stdscr, l, r, t, b, tl, tr, bl, br)
443
#define        clear()                                wclear(stdscr)
444
#define        clrtobot()                        wclrtobot(stdscr)
445
#define        clrtoeol()                        wclrtoeol(stdscr)
446
#define color_set(c, o)                        wcolor_set(stdscr, c, o)
447
#define        delch()                                wdelch(stdscr)
448
#define        deleteln()                        wdeleteln(stdscr)
449
#define        echochar(c)                        wechochar(stdscr, c)
450
#define        erase()                                werase(stdscr)
451
#define        getch()                                wgetch(stdscr)
452
#define        getnstr(s, n)                        wgetnstr(stdscr, s, n)
453
#define        getstr(s)                        wgetstr(stdscr, s)
454
#define        inch()                                winch(stdscr)
455
#define        inchnstr(c)                        winchnstr(stdscr, c)
456
#define        inchstr(c)                        winchstr(stdscr, c)
457
#define        innstr(s, n)                        winnstr(stdscr, s, n)
458
#define        insch(ch)                        winsch(stdscr, ch)
459
#define        insdelln(n)                        winsdelln(stdscr, n)
460
#define        insertln()                        winsertln(stdscr)
461
#define        instr(s)                        winstr(stdscr, s)
462
#define        move(y, x)                        wmove(stdscr, y, x)
463
#define        refresh()                        wrefresh(stdscr)
464
#define        scrl(n)                                wscrl(stdscr, n)
465
#define        setscrreg(t, b)                        wsetscrreg(stdscr, t, b)
466
#define        standend()                        wstandend(stdscr)
467
#define        standout()                        wstandout(stdscr)
468
#define        timeout(delay)                        wtimeout(stdscr, delay)
469
#define        underscore()                        wunderscore(stdscr)
470
#define        underend()                        wunderend(stdscr)
471
#define        waddbytes(w, s, n)                __waddbytes(w, s, n, 0)
472
#define        waddstr(w, s)                        waddnstr(w, s, -1)
473

    
474
/* Standard screen plus movement pseudo functions. */
475
#define        mvaddbytes(y, x, s, n)                mvwaddbytes(stdscr, y, x, s, n)
476
#define        mvaddch(y, x, ch)                mvwaddch(stdscr, y, x, ch)
477
#define        mvaddchnstr(y, x, s, n)                mvwaddchnstr(stdscr, y, x, s, n)
478
#define        mvaddchstr(y, x, s)                mvwaddchstr(stdscr, y, x, s)
479
#define        mvaddnstr(y, x, s, n)                mvwaddnstr(stdscr, y, x, s, n)
480
#define        mvaddstr(y, x, s)                mvwaddstr(stdscr, y, x, s)
481
#define        mvdelch(y, x)                        mvwdelch(stdscr, y, x)
482
#define        mvgetch(y, x)                        mvwgetch(stdscr, y, x)
483
#define        mvgetnstr(y, x, s, n)                mvwgetnstr(stdscr, y, x, s, n)
484
#define        mvgetstr(y, x, s)                mvwgetstr(stdscr, y, x, s)
485
#define        mvinch(y, x)                        mvwinch(stdscr, y, x)
486
#define        mvinchnstr(y, x, c, n)                mvwinchnstr(stdscr, y, x, c, n)
487
#define        mvinchstr(y, x, c)                mvwinchstr(stdscr, y, x, c)
488
#define        mvinnstr(y, x, s, n)                mvwinnstr(stdscr, y, x, s, n)
489
#define        mvinsch(y, x, c)                mvwinsch(stdscr, y, x, c)
490
#define        mvinstr(y, x, s)                mvwinstr(stdscr, y, x, s)
491
#define        mvwaddbytes(w, y, x, s, n) \
492
        (wmove(w, y, x) == ERR ? ERR : __waddbytes(w, s, n, 0))
493
#define        mvwaddch(w, y, x, ch) \
494
        (wmove(w, y, x) == ERR ? ERR : waddch(w, ch))
495
#define        mvwaddchnstr(w, y, x, s, n) \
496
        (wmove(w, y, x) == ERR ? ERR : waddchnstr(w, s, n))
497
#define        mvwaddchstr(w, y, x, s) \
498
        (wmove(w, y, x) == ERR ? ERR : waddchnstr(w, s, -1))
499
#define        mvwaddnstr(w, y, x, s, n) \
500
        (wmove(w, y, x) == ERR ? ERR : waddnstr(w, s, n))
501
#define        mvwaddstr(w, y, x, s) \
502
        (wmove(w, y, x) == ERR ? ERR : waddnstr(w, s, -1))
503
#define        mvwdelch(w, y, x) \
504
        (wmove(w, y, x) == ERR ? ERR : wdelch(w))
505
#define        mvwgetch(w, y, x) \
506
        (wmove(w, y, x) == ERR ? ERR : wgetch(w))
507
#define        mvwgetnstr(w, y, x, s, n) \
508
        (wmove(w, y, x) == ERR ? ERR : wgetnstr(w, s, n))
509
#define        mvwgetstr(w, y, x, s) \
510
        (wmove(w, y, x) == ERR ? ERR : wgetstr(w, s))
511
#define        mvwinch(w, y, x) \
512
        (wmove(w, y, x) == ERR ? ERR : winch(w))
513
#define        mvwinchnstr(w, y, x, c, n) \
514
        (wmove(w, y, x) == ERR ? ERR : winchnstr(w, c, n))
515
#define        mvwinchstr(w, y, x, s) \
516
        (wmove(w, y, x) == ERR ? ERR : winchstr(w, c))
517
#define        mvwinnstr(w, y, x, s, n) \
518
        (wmove(w, y, x) == ERR ? ERR : winnstr(w, s, n))
519
#define        mvwinsch(w, y, x, c) \
520
        (wmove(w, y, x) == ERR ? ERR : winsch(w, c))
521
#define        mvwinstr(w, y, x, s) \
522
        (wmove(w, y, x) == ERR ? ERR : winstr(w, s))
523

    
524
/* Miscellaneous. */
525
#define        noqiflush()                intrflush(stdscr, FALSE)
526
#define        qiflush()                intrflush(stdscr, TRUE)
527

    
528
#else
529
/* Use functions not macros... */
530
__BEGIN_DECLS
531
int         addbytes(const char *, int);
532
int         addch(chtype);
533
int         addchnstr(const chtype *, int);
534
int         addchstr(const chtype *);
535
int         addnstr(const char *, int);
536
int         addstr(const char *);
537
int         attr_get(attr_t *, short *, void *);
538
int         attr_off(attr_t, void *);
539
int         attr_on(attr_t, void *);
540
int         attr_set(attr_t, short, void *);
541
int         attroff(int);
542
int         attron(int);
543
int         attrset(int);
544
int         bkgd(chtype);
545
void         bkgdset(chtype);
546
int         border(chtype, chtype, chtype, chtype,
547
           chtype, chtype, chtype, chtype);
548
int         clear(void);
549
int         clrtobot(void);
550
int         clrtoeol(void);
551
int         color_set(short, void *);
552
int         delch(void);
553
int         deleteln(void);
554
int         echochar(const chtype);
555
int         erase(void);
556
int         getch(void);
557
int         getnstr(char *, int);
558
int         getstr(char *);
559
chtype         inch(void);
560
int         inchnstr(chtype *, int);
561
int         inchstr(chtype *);
562
int         innstr(char *, int);
563
int         insch(chtype);
564
int         insdelln(int);
565
int         insertln(void);
566
int         instr(char *);
567
int         move(int, int);
568
int         refresh(void);
569
int         scrl(int);
570
int         setscrreg(int, int);
571
int         standend(void);
572
int         standout(void);
573
void         timeout(int);
574
int         underscore(void);
575
int         underend(void);
576
int         waddbytes(WINDOW *, const char *, int);
577
int         waddstr(WINDOW *, const char *);
578

    
579
/* Standard screen plus movement functions. */
580
int         mvaddbytes(int, int, const char *, int);
581
int         mvaddch(int, int, chtype);
582
int         mvaddchnstr(int, int, const chtype *, int);
583
int         mvaddchstr(int, int, const chtype *);
584
int         mvaddnstr(int, int, const char *, int);
585
int         mvaddstr(int, int, const char *);
586
int         mvdelch(int, int);
587
int         mvgetch(int, int);
588
int         mvgetnstr(int, int, char *, int);
589
int         mvgetstr(int, int, char *);
590
chtype         mvinch(int, int);
591
int         mvinchnstr(int, int, chtype *, int);
592
int         mvinchstr(int, int, chtype *);
593
int         mvinnstr(int, int, char *, int);
594
int         mvinsch(int, int, chtype);
595
int         mvinstr(int, int, char *);
596

    
597
int         mvwaddbytes(WINDOW *, int, int, const char *, int);
598
int         mvwaddch(WINDOW *, int, int, chtype);
599
int         mvwaddchnstr(WINDOW *, int, int, const chtype *, int);
600
int         mvwaddchstr(WINDOW *, int, int, const chtype *);
601
int         mvwaddnstr(WINDOW *, int, int, const char *, int);
602
int         mvwaddstr(WINDOW *, int, int, const char *);
603
int         mvwdelch(WINDOW *, int, int);
604
int         mvwgetch(WINDOW *, int, int);
605
int         mvwgetnstr(WINDOW *, int, int, char *, int);
606
int         mvwgetstr(WINDOW *, int, int, char *);
607
chtype         mvwinch(WINDOW *, int, int);
608
int         mvwinsch(WINDOW *, int, int, chtype);
609
__END_DECLS
610
#endif /* _CURSES_USE_MACROS */
611

    
612
#define        getyx(w, y, x)                (y) = getcury(w), (x) = getcurx(w)
613
#define        getbegyx(w, y, x)        (y) = getbegy(w), (x) = getbegx(w)
614
#define        getmaxyx(w, y, x)        (y) = getmaxy(w), (x) = getmaxx(w)
615
#define        getparyx(w, y, x)        (y) = getpary(w), (x) = getparx(w)
616

    
617
/* Public function prototypes. */
618
__BEGIN_DECLS
619
int         assume_default_colors(short, short);
620
int         baudrate(void);
621
int         beep(void);
622
int         box(WINDOW *, chtype, chtype);
623
bool         can_change_color(void);
624
int         cbreak(void);
625
int         clearok(WINDOW *, bool);
626
int         color_content(short, short *, short *, short *);
627
int         copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, int);
628
int         curs_set(int);
629
int         def_prog_mode(void);
630
int         def_shell_mode(void);
631
int      define_key(char *, int);
632
int         delay_output(int);
633
void     delscreen(SCREEN *);
634
int         delwin(WINDOW *);
635
WINDOW        *derwin(WINDOW *, int, int, int, int);
636
WINDOW        *dupwin(WINDOW *);
637
int         doupdate(void);
638
int         echo(void);
639
int         endwin(void);
640
char     erasechar(void);
641
int         flash(void);
642
int         flushinp(void);
643
int         flushok(WINDOW *, bool);
644
char        *fullname(const char *, char *);
645
chtype         getattrs(WINDOW *);
646
chtype         getbkgd(WINDOW *);
647
int         getcury(WINDOW *);
648
int         getcurx(WINDOW *);
649
int         getbegy(WINDOW *);
650
int         getbegx(WINDOW *);
651
int         getmaxy(WINDOW *);
652
int         getmaxx(WINDOW *);
653
int         getpary(WINDOW *);
654
int         getparx(WINDOW *);
655
int         gettmode(void);
656
WINDOW        *getwin(FILE *);
657
int         halfdelay(int);
658
bool         has_colors(void);
659
bool         has_ic(void);
660
bool         has_il(void);
661
int         hline(chtype, int);
662
int         idcok(WINDOW *, bool);
663
int         idlok(WINDOW *, bool);
664
int         init_color(short, short, short, short);
665
int         init_pair(short, short, short);
666
WINDOW        *initscr(void);
667
int         intrflush(WINDOW *, bool);
668
bool         isendwin(void);
669
bool         is_linetouched(WINDOW *, int);
670
bool         is_wintouched(WINDOW *);
671
int      keyok(int, bool);
672
int         keypad(WINDOW *, bool);
673
char        *keyname(int);
674
char     killchar(void);
675
int         leaveok(WINDOW *, bool);
676
int         meta(WINDOW *, bool);
677
int         mvcur(int, int, int, int);
678
int      mvderwin(WINDOW *, int, int);
679
int         mvhline(int, int, chtype, int);
680
int         mvprintw(int, int, const char *, ...) __printflike(3, 4);
681
int         mvscanw(int, int, const char *, ...) __scanflike(3, 4);
682
int         mvvline(int, int, chtype, int);
683
int         mvwhline(WINDOW *, int, int, chtype, int);
684
int         mvwvline(WINDOW *, int, int, chtype, int);
685
int         mvwin(WINDOW *, int, int);
686
int         mvwinchnstr(WINDOW *, int, int, chtype *, int);
687
int         mvwinchstr(WINDOW *, int, int, chtype *);
688
int         mvwinnstr(WINDOW *, int, int, char *, int);
689
int         mvwinstr(WINDOW *, int, int, char *);
690
int         mvwprintw(WINDOW *, int, int, const char *, ...) __printflike(4, 5);
691
int         mvwscanw(WINDOW *, int, int, const char *, ...) __scanflike(4, 5);
692
int         napms(int);
693
WINDOW        *newpad(int, int);
694
SCREEN  *newterm(char *, FILE *, FILE *);
695
WINDOW        *newwin(int, int, int, int);
696
int         nl(void);
697
attr_t         no_color_attributes(void);
698
int         nocbreak(void);
699
int         nodelay(WINDOW *, bool);
700
int         noecho(void);
701
int         nonl(void);
702
void         noqiflush(void);
703
int         noraw(void);
704
int         notimeout(WINDOW *, bool);
705
int         overlay(const WINDOW *, WINDOW *);
706
int         overwrite(const WINDOW *, WINDOW *);
707
int         pair_content(short, short *, short *);
708
int         pechochar(WINDOW *, const chtype);
709
int         pnoutrefresh(WINDOW *, int, int, int, int, int, int);
710
int         prefresh(WINDOW *, int, int, int, int, int, int);
711
int         printw(const char *, ...) __printflike(1, 2);
712
int         putwin(WINDOW *, FILE *);
713
void         qiflush(void);
714
int         raw(void);
715
int         redrawwin(WINDOW *);
716
int         reset_prog_mode(void);
717
int         reset_shell_mode(void);
718
int         resetty(void);
719
int      resizeterm(int, int);
720
int         savetty(void);
721
int         scanw(const char *, ...) __scanflike(1, 2);
722
int         scroll(WINDOW *);
723
int         scrollok(WINDOW *, bool);
724
int         setterm(char *);
725
SCREEN  *set_term(SCREEN *);
726
int         start_color(void);
727
WINDOW        *subpad(WINDOW *, int, int, int, int);
728
WINDOW        *subwin(WINDOW *, int, int, int, int);
729
chtype         termattrs(void);
730
attr_t         term_attrs(void);
731
int         touchline(WINDOW *, int, int);
732
int         touchoverlap(WINDOW *, WINDOW *);
733
int         touchwin(WINDOW *);
734
int         ungetch(int);
735
int         untouchwin(WINDOW *);
736
int         use_default_colors(void);
737
int         vline(chtype, int);
738
int         vw_printw(WINDOW *, const char *, __va_list) __printflike(2, 0);
739
int         vw_scanw(WINDOW *, const char *, __va_list) __scanflike(2, 0);
740
int         vwprintw(WINDOW *, const char *, __va_list) __printflike(2, 0);
741
int         vwscanw(WINDOW *, const char *, __va_list) __scanflike(2, 0);
742
int         waddch(WINDOW *, chtype);
743
int         waddchnstr(WINDOW *, const chtype *, int);
744
int         waddchstr(WINDOW *, const chtype *);
745
int         waddnstr(WINDOW *, const char *, int);
746
int         wattr_get(WINDOW *, attr_t *, short *, void *);
747
int         wattr_off(WINDOW *, attr_t, void *);
748
int         wattr_on(WINDOW *, attr_t, void *);
749
int         wattr_set(WINDOW *, attr_t, short, void *);
750
int         wattroff(WINDOW *, int);
751
int         wattron(WINDOW *, int);
752
int         wattrset(WINDOW *, int);
753
int         wbkgd(WINDOW *, chtype);
754
void         wbkgdset(WINDOW *, chtype);
755
int         wborder(WINDOW *, chtype, chtype, chtype, chtype, chtype, chtype,
756
                chtype, chtype);
757
int         wclear(WINDOW *);
758
int         wclrtobot(WINDOW *);
759
int         wclrtoeol(WINDOW *);
760
int         wcolor_set(WINDOW *, short, void *);
761
void         wcursyncup(WINDOW *);
762
int         wdelch(WINDOW *);
763
int         wdeleteln(WINDOW *);
764
int         wechochar(WINDOW *, const chtype);
765
int         werase(WINDOW *);
766
int         wgetch(WINDOW *);
767
int         wgetnstr(WINDOW *, char *, int);
768
int         wgetstr(WINDOW *, char *);
769
int         whline(WINDOW *, chtype, int);
770
chtype         winch(WINDOW *);
771
int         winchnstr(WINDOW *, chtype *, int);
772
int         winchstr(WINDOW *, chtype *);
773
int         winnstr(WINDOW *, char *, int);
774
int         winsch(WINDOW *, chtype);
775
int         winsdelln(WINDOW *, int);
776
int         winsertln(WINDOW *);
777
int         winstr(WINDOW *, char *);
778
int         wmove(WINDOW *, int, int);
779
int         wnoutrefresh(WINDOW *);
780
int         wprintw(WINDOW *, const char *, ...)  __printflike(2, 3);
781
int         wredrawln(WINDOW *, int, int);
782
int         wrefresh(WINDOW *);
783
int      wresize(WINDOW *, int, int);
784
int         wscanw(WINDOW *, const char *, ...) __scanflike(2, 3);
785
int         wscrl(WINDOW *, int);
786
int         wsetscrreg(WINDOW *, int, int);
787
int         wstandend(WINDOW *);
788
int         wstandout(WINDOW *);
789
void         wsyncdown(WINDOW *);
790
void         wsyncup(WINDOW *);
791
void         wtimeout(WINDOW *, int);
792
int         wtouchln(WINDOW *, int, int, int);
793
int         wunderend(WINDOW *);
794
int         wunderscore(WINDOW *);
795
int         wvline(WINDOW *, chtype, int);
796

    
797
int insnstr(const char *, int);
798
int insstr(const char *);
799
int mvinsnstr(int, int, const char *, int);
800
int mvinsstr(int, int, const char *);
801
int mvwinsnstr(WINDOW *, int, int, const char *, int);
802
int mvwinsstr(WINDOW *, int, int, const char *);
803
int winsnstr(WINDOW *, const char *, int);
804
int winsstr(WINDOW *, const char *);
805

    
806
int chgat(int, attr_t, short, const void *);
807
int wchgat(WINDOW *, int, attr_t, short, const void *);
808
int mvchgat(int, int, int, attr_t, short, const void *);
809
int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *);
810

    
811
/* wide-character support routines */
812
/* return ERR when HAVE_WCHAR is not defined */
813
/* add */
814
int add_wch(const cchar_t *);
815
int wadd_wch(WINDOW *, const cchar_t *);
816
int mvadd_wch(int, int, const cchar_t *);
817
int mvwadd_wch(WINDOW *, int, int, const cchar_t *);
818

    
819
int add_wchnstr(const cchar_t *, int);
820
int add_wchstr(const cchar_t *);
821
int wadd_wchnstr(WINDOW *, const cchar_t *, int);
822
int wadd_wchstr(WINDOW *, const cchar_t *);
823
int mvadd_wchnstr(int, int, const cchar_t *, int);
824
int mvadd_wchstr(int, int, const cchar_t *);
825
int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int);
826
int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *);
827

    
828
int addnwstr(const wchar_t *, int);
829
int addwstr(const wchar_t *);
830
int mvaddnwstr(int, int x, const wchar_t *, int);
831
int mvaddwstr(int, int x, const wchar_t *);
832
int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int);
833
int mvwaddwstr(WINDOW *, int, int, const wchar_t *);
834
int waddnwstr(WINDOW *, const wchar_t *, int);
835
int waddwstr(WINDOW *, const wchar_t *);
836

    
837
int echo_wchar(const cchar_t *);
838
int wecho_wchar(WINDOW *, const cchar_t *);
839
int pecho_wchar(WINDOW *, const cchar_t *);
840

    
841
/* insert */
842
int ins_wch(const cchar_t *);
843
int wins_wch(WINDOW *, const cchar_t *);
844
int mvins_wch(int, int, const cchar_t *);
845
int mvwins_wch(WINDOW *, int, int, const cchar_t *);
846

    
847
int ins_nwstr(const wchar_t *, int);
848
int ins_wstr(const wchar_t *);
849
int mvins_nwstr(int, int, const wchar_t *, int);
850
int mvins_wstr(int, int, const wchar_t *);
851
int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int);
852
int mvwins_wstr(WINDOW *, int, int, const wchar_t *);
853
int wins_nwstr(WINDOW *, const wchar_t *, int);
854
int wins_wstr(WINDOW *, const wchar_t *);
855

    
856
/* input */
857
int get_wch(wint_t *);
858
int unget_wch(const wchar_t);
859
int mvget_wch(int, int, wint_t *);
860
int mvwget_wch(WINDOW *, int, int, wint_t *);
861
int wget_wch(WINDOW *, wint_t *);
862

    
863
int getn_wstr(wchar_t *, int);
864
int get_wstr(wchar_t *);
865
int mvgetn_wstr(int, int, wchar_t *, int);
866
int mvget_wstr(int, int, wchar_t *);
867
int mvwgetn_wstr(WINDOW *, int, int, wchar_t *, int);
868
int mvwget_wstr(WINDOW *, int, int, wchar_t *);
869
int wgetn_wstr(WINDOW *, wchar_t *, int);
870
int wget_wstr(WINDOW *, wchar_t *);
871

    
872
int in_wch(cchar_t *);
873
int mvin_wch(int, int, cchar_t *);
874
int mvwin_wch(WINDOW *, int, int, cchar_t *);
875
int win_wch(WINDOW *, cchar_t *);
876

    
877
int in_wchnstr(cchar_t *, int);
878
int in_wchstr(cchar_t *);
879
int mvin_wchnstr(int, int, cchar_t *, int);
880
int mvin_wchstr(int, int, cchar_t *);
881
int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int);
882
int mvwin_wchstr(WINDOW *, int, int, cchar_t *);
883
int win_wchnstr(WINDOW *, cchar_t *, int);
884
int win_wchstr(WINDOW *, cchar_t *);
885

    
886
int innwstr(wchar_t *, int);
887
int inwstr(wchar_t *);
888
int mvinnwstr(int, int, wchar_t *, int);
889
int mvinwstr(int, int, wchar_t *);
890
int mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
891
int mvwinwstr(WINDOW *, int, int, wchar_t *);
892
int winnwstr(WINDOW *, wchar_t *, int);
893
int winwstr(WINDOW *, wchar_t *);
894

    
895
/* cchar handlgin */
896
int setcchar(cchar_t *, const wchar_t *, const attr_t, short, const void *);
897
int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *);
898

    
899
/* misc */
900
char *key_name( wchar_t );
901
int border_set(const cchar_t *, const cchar_t *, const cchar_t *,
902
               const cchar_t *, const cchar_t *, const cchar_t *,
903
               const cchar_t *, const cchar_t *);
904
int wborder_set(WINDOW *, const cchar_t *, const cchar_t *,
905
                const cchar_t *, const cchar_t *, const cchar_t *, 
906
                const cchar_t *, const cchar_t *, const cchar_t *);
907
int box_set(WINDOW *, const cchar_t *, const cchar_t *);
908
int erasewchar(wchar_t *);
909
int killwchar(wchar_t *);
910
int hline_set(const cchar_t *, int);
911
int mvhline_set(int, int, const cchar_t *, int);
912
int mvvline_set(int, int, const cchar_t *, int);
913
int mvwhline_set(WINDOW *, int, int, const cchar_t *, int);
914
int mvwvline_set(WINDOW *, int, int, const cchar_t *, int);
915
int vline_set(const cchar_t *, int);
916
int whline_set(WINDOW *, const cchar_t *, int);
917
int wvline_set(WINDOW *, const cchar_t *, int);
918
int bkgrnd(const cchar_t *);
919
void bkgrndset(const cchar_t *);
920
int getbkgrnd(cchar_t *);
921
int wbkgrnd(WINDOW *, const cchar_t *);
922
void wbkgrndset(WINDOW *, const cchar_t *);
923
int wgetbkgrnd(WINDOW *, cchar_t *);
924

    
925
/* Private functions that are needed for user programs prototypes. */
926
int         __cputchar(int);
927
int         __waddbytes(WINDOW *, const char *, int, attr_t);
928
#ifdef HAVE_WCHAR
929
int __cputwchar( wchar_t );
930
#endif /* HAVE_WCHAR */
931
__END_DECLS
932

    
933
#endif /* !_CURSES_H_ */