8354 sync regcomp(3C) with upstream (fix make catalog)
[unleashed/tickless.git] / usr / src / lib / libcurses / screen / curses.ed
bloba1f607e658769e391df6901cbd820335229249bb
1 e keycaps
3 g/.*KEY_/s//KEY_/
4 g/KEY_F([1-9]/d
5 g'\(KEY_[^,]*\),[       ]*\([0-9][0-9]*\),[     ]*\(.*\)'s''#define     \1      \2              /* \3 */'
6 w ./tmp/keycaps
7 e !sort +2n ./tmp/keycaps
8 g'\(KEY_[^      ]       \)'s''\1        '
9 g'\(KEY_[^      ][^     ]       \)'s''\1        '
10 g'\(KEY_[^      ][^     ][^     ]       \)'s''\1        '
12 /* Funny "characters" enabled for various special function keys for input */
13 /* This list is created from caps and curses.ed. Do not edit it! */
14 #define KEY_MIN         0401            /* Minimum curses key */
15 #define KEY_BREAK       0401            /* break key (unreliable) */
17 /KEY_F(0)/s//KEY_F0     /
19 #define KEY_F(n)        (KEY_F0+(n))    /* Space for 64 function keys */
20                                         /* is reserved. */
22 /KEY_ENTER/a
23 #define KEY_SRESET      0530            /* soft (partial) reset (unreliable) */
24 #define KEY_RESET       0531            /* reset or hard reset (unreliable) */
26 /KEY_A1/i
27                                         /* The keypad is arranged like this: */
28                                         /*    a1    up    a3   */
29                                         /*   left   b2  right  */
30                                         /*    c1   down   c3   */
33 #define KEY_MAX         0777            /* Maximum curses key */
36 #ifndef _CURSES_H
37 #define _CURSES_H
40  * curses.h - this file is automatically made from caps and
41  *      curses.ed. Don't make changes directly to curses.h!
42  */
44 #include <widec.h>
46 #include <stdio.h>
48 #ifdef  __cplusplus
49 extern "C" {
50 #endif
52 #define CSMAX   4
55  * This trick is used to distinguish between SYSV and V7 systems.
56  * We assume that L_ctermid is only defined in stdio.h in SYSV
57  * systems, but not in V7 or Berkeley UNIX.
58  */
59 #ifdef L_ctermid
60 #ifdef SYSV
61 #undef SYSV
62 #endif
63 #define SYSV
64 #endif
65 /* Some V7 systems define       L_ctermid - we list those here */
66 #ifdef BSD
67 #undef SYSV
68 #endif
70 #ifdef SYSV
72 #include <termio.h>
73 typedef struct termio SGTTY;
74 typedef struct termios SGTTYS;
76 #else /* !SYSV */
78 #ifndef _SGTTYB_
79 #include <sgtty.h>
80 #endif /* _SGTTYB_ */
81 typedef struct sgttyb SGTTY;
83 #endif /* SYSV */
86  * bool is a built-in type in standard C++ and as such is not
87  * defined here when using standard C++. However, the GNU compiler
88  * fixincludes utility nonetheless creates it's own version of this
89  * header for use by gcc and g++. In that version it adds a redundant
90  * guard for __cplusplus. To avoid the creation of a gcc/g++ specific
91  * header we need to include the following magic comment:
92  *
93  * we must use the C++ compiler's type
94  *
95  * The above comment should not be removed or changed until GNU
96  * gcc/fixinc/inclhack.def is updated to bypass this header.
97  */
98 #if !defined(__cplusplus) && !defined(_BOOL)
99 typedef char bool;
100 #endif /* !defined(__cplusplus) && !defined(_BOOL) */
102 #define _VR3_COMPAT_CODE
104  * chtype is the type used to store a character together with attributes.
105  * It can be set to "char" to save space, or "long" to get more attributes.
106  */
107 #ifdef  CHTYPE
108 typedef CHTYPE chtype;
109 #else
110 #ifdef _LP64
111 typedef unsigned int chtype;
112 #else
113 typedef unsigned long chtype;
114 #endif /* _LP64 */
115 #endif /* CHTYPE */
118  *      Define for the 'old' definition of chtype is required
119  *      when we are running in compatibility mode
120  */
121 #ifdef _VR3_COMPAT_CODE
122 typedef unsigned short _ochtype;
123 #endif
125 /* TRUE and FALSE get defined so many times, */
126 /* let's not get in the way of other definitions. */
127 #if     !defined(TRUE) || ((TRUE) != 1)
128 #define TRUE    (1)
129 #endif
130 #if     !defined(FALSE) || ((FALSE) != 0)
131 #define FALSE   (0)
132 #endif
133 #if     !defined(ERR) || ((ERR) != -1)
134 #define ERR     (-1)
135 #endif
136 #if     !defined(OK) || ((OK) != 0)
137 #define OK      (0)
138 #endif
140 /* short-hand notations */
141 typedef struct _win_st  WINDOW;
142 typedef struct screen   SCREEN;
143 typedef struct _Mouse   MOUSE_STATUS;
145 struct _win_st
147         short           _cury, _curx;   /* current coordinates */
148         short           _maxy, _maxx;   /* max coordinates */
149         short           _begy, _begx;   /* (0,0) screen coordinates */
150         char            _flags;
151         short           _yoffset;       /* actual begy is _begy+_yoffset */
152         bool            _clear,         /* clearok() info */
153                         _leave,         /* leaveok() info */
154                         _immed,         /* window in immediate mode */
155                         _sync;          /* auto syncup of parent */
156         WINDOW          *_padwin;       /* "pad" area for current window */
157 #ifdef  _VR3_COMPAT_CODE
158         _ochtype        **_y16;         /* MUST stay at this offset in WINDOW */
159 #endif
160         short           *_firstch;      /* first change in line */
161         short           *_lastch;       /* last change in line */
162         short           _tmarg, _bmarg; /* scrolling region bounds */
163                                         /* MUST stay at this offset in WINDOW */
164         unsigned        _scroll         : 1;    /* scrollok() info */
165         unsigned        _use_idl        : 1;
166         unsigned        _use_keypad     : 1;
167         unsigned        _notimeout      : 1;
168         unsigned        _use_idc        : 1;
169         chtype          _attrs;         /* current window attributes */
170         chtype          _bkgd;          /* background, normally blank */
171         int             _delay;         /* delay period on wgetch */
172                                         /* 0:  for nodelay */
173                                         /* <0: for infinite delay */
174                                         /* >0: delay time in millisec */
175         short           _ndescs;        /* number of descendants */
176         short           _parx, _pary;   /* coords relative to parent (0,0) */
177         WINDOW          *_parent;       /* the parent if this is a subwin */
178         chtype          **_y;           /* lines of data */
179         short           _nbyte;         /* number of bytes to come */
180         short           _index;         /* index to hold coming char */
181         char            _waitc[CSMAX];  /* array to hold partial m-width char */
182         bool            _insmode;       /* TRUE for inserting, */
183                                         /* FALSE for adding */
186 /* _lastch is initially set to this, _firstch is set to win->_maxx */
187 #define _NOCHANGE       -1
188 #define _INFINITY       16000   /* no line can be longer than this */
190 /* values for win->_flags */
191 #define _ISPAD          001
192 #define _WINCHANGED     002
193 #define _WINMOVED       004
194 #define _WINSDEL        010
195 #define _CANT_BE_IMMED  020
196 #define _WIN_ADD_ONE    040
197 #define _WIN_INS_ONE    100
199 struct _Mouse {
200         int x, y;
201         short button[3];
202         int   changes;
205 #define CURS_STUPID     0
206 #define CURS_UNKNOWN    1
207 #define CURS_BAD_MALLOC 2
210  * Various tricks to shut up lint about things that are perfectly fine.
211  */
212 #if defined(__lint) && !defined(CURSES) /* if not internal to curses source */
213 struct screen {
214         int _nobody_;
216 #endif /* __lint */
218 /* common external variables */
220 extern  int     LINES, COLS, TABSIZE, COLORS, COLOR_PAIRS;
222 extern  short   curs_errno;
224 extern WINDOW *stdscr, *curscr;
226 extern  MOUSE_STATUS    Mouse_status;
228 extern char ttytype[];
230 extern char     curs_parm_err[],
231                 *curs_err_strings[];
233 /* Function declarations */
235 #ifdef  _VR3_COMPAT_CODE
237 extern  _ochtype        *acs_map;
238 extern chtype   *acs32map;
240 /* definitions for Vr3 source compatibility */
242 #define initscr         initscr32
243 #define newterm         newterm32
244 #define waddch          w32addch
245 #define wechochar       w32echochar
246 #define pechochar       p32echochar
247 #define winsch          w32insch
248 #define vidputs         vid32puts
249 #define vidattr         vid32attr
250 #define wattroff        w32attroff
251 #define wattron         w32attron
252 #define wattrset        w32attrset
253 #define acs_map         acs32map
254 #define box             box32
256 #ifdef  __STDC__
257 extern WINDOW *initscr(void);
258 extern  SCREEN  *newterm(char *, FILE *, FILE *);
259 #else
260 extern WINDOW *initscr();
261 extern  SCREEN  *newterm();
262 #endif
264 /* declarations for mini-curses */
266 #ifdef  __STDC__
267 extern  WINDOW  *m_initscr(void);
269 extern  SCREEN  *m_newterm(char *, FILE *, FILE *);
271 extern  int     m_addch(int), m_addstr(char *), m_clear(void), m_erase(void),
272                 m_move(int, int), m_refresh(void);
274 #else  /* __STDC__ */
275 extern  WINDOW  *m_initscr();
277 extern  SCREEN  *m_newterm();
279 extern  int     m_addch(), m_addstr(), m_clear(), m_erase(),
280                 m_move(), m_refresh();
282 #endif /* __STDC__ */
284 #else   /* _VR3_COMPAT_CODE */
286 extern chtype *acs_map;
288 #endif  /* _VR3_COMPAT_CODE */
290 #ifdef __STDC__
292 extern SCREEN *newscreen(char *, int, int, int, FILE *, FILE *);
293 extern SCREEN *setcurscreen(SCREEN *);
295 extern WINDOW *initscr(void);
296 extern WINDOW *newwin(int, int, int, int);
297 extern WINDOW *newpad(int, int);
298 extern WINDOW *derwin(WINDOW *, int, int, int, int);
299 extern WINDOW *dupwin(WINDOW *);
300 extern WINDOW *getwin(FILE *);
302 extern int wgetch(WINDOW *); /* it can return KEY_*, for instance. */
304 extern char *longname(void);    /* long name of terminal */
305 extern char *termname(void);    /* effective terminal name */
306 extern char *keyname(int);      /* name of token returned by wgetch() */
307 extern char *slk_label(int);
308 extern char erasechar(void);
309 extern char killchar(void);
310 extern char *unctrl(int);
312 extern chtype termattrs(void);
314 extern void vidupdate(chtype, chtype, int (*)(char));
315 extern void wsyncup(WINDOW *);
316 extern void wsyncdown(WINDOW *);
317 extern void delscreen(SCREEN *);
318 extern void curserr(void);
319 extern void _setqiflush(int);
320 extern void wcursyncup(WINDOW *);
322 extern int cbreak(void);
323 extern int nocbreak(void);
324 extern int reset_prog_mode(void);
325 extern int reset_shell_mode(void);
326 extern int def_prog_mode(void);
327 extern int _setecho(int);
328 extern int _setnonl(int);
329 extern int def_shell_mode(void);
330 extern int raw(void);
331 extern int savetty(void);
332 extern int traceon(void);
333 extern int _meta(int);
334 extern int traceoff(void);
335 extern int noraw(void);
336 extern int flushinp(void);
337 extern int _getsyx(int *, int *);
338 extern int _ring(bool);
339 extern int resetty(void);
340 extern int ripoffline(int, int (*)(WINDOW *, int));
341 extern int setsyx(int, int);
342 extern int slk_refresh(void);
343 extern int slk_restore(void);
344 extern int wstandend(WINDOW *);
345 extern int wstandout(WINDOW *);
346 extern int wattroff(WINDOW *, chtype);
347 extern int wattron(WINDOW *, chtype);
348 extern int wattrset(WINDOW *, chtype);
349 extern int wrefresh(WINDOW *);
351 extern int copywin(WINDOW *, WINDOW *, int, int, int, int, int, int, int);
352 extern int curs_set(int);
353 extern int delay_output(int);
354 extern int delwin(WINDOW *);
355 extern int doupdate(void);
356 extern int drainio(int);
357 extern int endwin(void);
358 extern int isendwin(void);
359 extern int baudrate(void);
360 extern int has_ic(void);
361 extern int has_il(void);
362 extern int keypad(WINDOW *, bool);
363 extern int mvcur(int, int, int, int);
365 extern int mvprintw(int, int, ...);
366 extern int mvscanw(int, int, ...);
367 extern int mvwprintw(WINDOW *, int, int, ...);
368 extern int mvwscanw(WINDOW *, int, int, ...);
369 extern int printw(char *, ...);
370 extern int scanw(char *, ...);
371 extern int wprintw(WINDOW *, ...);
372 extern int wscanw(WINDOW *, ...);
374                 /* __va_list is the ANSI-C safe definition of the       */
375                 /* va_list type as allowed to be defined in stdlib.h.   */
376                 /* <stdio.h> provides the nested include of <va_list.h> */
377                 /* which provides this namespace safe definition.       */
378                 /* Either <stdarg.h> or <varargs.h> must be included to */
379                 /* use these interfaces.                                */
381 extern int vwprintw(WINDOW *, char *, __va_list);
382 extern int vwscanw(WINDOW *, char *, __va_list);
384 extern int mvwin(WINDOW *, int, int);
385 extern int mvderwin(WINDOW *, int, int);
386 extern int napms(int);
387 extern int newkey(char *, short, bool);
388 extern int filter(void);
389 extern int pechochar(WINDOW *, chtype);
390 extern int pnoutrefresh(WINDOW *, int, int, int, int, int, int);
391 extern int prefresh(WINDOW *, int, int, int, int, int, int);
393 extern int putwin(WINDOW *, FILE *);
394 extern int wredrawln(WINDOW *, int, int);
395 extern int scr_dump(char *);
396 extern int setupterm(char *, int, int *);
398 extern int slk_attron(chtype);
399 extern int slk_attroff(chtype);
400 extern int slk_attrset(chtype);
401 extern int slk_clear(void);
402 extern int slk_noutrefresh(void);
403 extern int slk_set(int, char *, int);
404 extern int slk_start(int, int *);
405 extern int slk_touch(void);
406 extern int start_color(void);
407 extern int typeahead(int);
409 extern bool can_change_color(void);
410 extern bool has_colors(void);
412 extern int waddch(WINDOW *, chtype);
413 extern int waddchnstr(WINDOW *, chtype *, int);
414 extern int waddnstr(WINDOW *, char *, int);
415 extern int wbkgd(WINDOW *, chtype);
416 extern int wborder(WINDOW *, chtype, chtype, chtype, chtype,
417                 chtype, chtype, chtype, chtype);
418 extern int wclrtobot(WINDOW *);
419 extern int wclrtoeol(WINDOW *);
420 extern int wdelch(WINDOW *);
421 extern int wechochar(WINDOW *, chtype);
422 extern int wgetstr(WINDOW *, char *);
423 extern int wgetnstr(WINDOW *, char *, int);
424 extern int whline(WINDOW *, chtype, int);
425 extern int wvline(WINDOW *, chtype, int);
426 extern int winchnstr(WINDOW *, chtype *, int);
427 extern int winchstr(WINDOW *, chtype *);
428 extern int winnstr(WINDOW *, char *, int);
429 extern int winsch(WINDOW *, chtype);
430 extern int winsdelln(WINDOW *, int);            /* internal */
431 extern int winsnstr(WINDOW *, char *, int);
432 extern int winstr(WINDOW *, char *);
433 extern int wmove(WINDOW *, int, int);
434 extern int wnoutrefresh(WINDOW *);
435 extern int wredrawln(WINDOW *, int, int);
436 extern int wscrl(WINDOW *, int);
437 extern int wsetscrreg(WINDOW *, int, int);
438 extern int wtouchln(WINDOW *, int, int, int);
440 extern int crmode(void);
441 extern int nocrmode(void);
442 extern int ungetch(int);
444 extern int mouse_set(long int);
445 extern int mouse_on(long int);
446 extern int mouse_off(long int);
447 extern int request_mouse_pos(void);
448 extern int map_button(unsigned long);
450 extern void wmouse_position(WINDOW *, int *, int *);
452 extern unsigned long getmouse(void), getbmap(void);
454                 /* the following declarations take integers as arguments  */
455                 /* to keep the CI5 compiler happy.  what we really want   */
456                 /* to pass is given in comments.  (by the way, we don't   */
457                 /* save anything by passing short or bool, since compiler */
458                 /* expands them to integers any way                       */
460 extern int pair_content(short, short *, short *);
461 extern int color_content(short, short *, short *, short *); /* as above */
462 extern int init_color(short, short, short, short);
463 extern int init_pair(short, short, short);
464 extern int idlok(WINDOW *, bool);
466 extern void immedok(WINDOW *, bool);
468 extern chtype winwch(WINDOW *);
470 extern int pechowchar(WINDOW *, chtype);
471 extern int ungetwch(const wchar_t);
472 extern int waddnwstr(WINDOW *, wchar_t *, int);
473 extern int waddwch(WINDOW *, chtype);
474 extern int waddwchnstr(WINDOW *, chtype *, int);
475 extern int wechowchar(WINDOW *, chtype);
476 extern int wgetnwstr(WINDOW *, wchar_t *, int);
477 extern int wgetwch(WINDOW *);
478 extern int wgetwstr(WINDOW *, wchar_t *);
479 extern int winnwstr(WINDOW *, wchar_t *, int);
480 extern int winsnwstr(WINDOW *, wchar_t *, int);
481 extern int winswch(WINDOW *, chtype);
482 extern int winwchnstr(WINDOW *, chtype *, int);
483 extern int winwstr(WINDOW *, wchar_t *);
485 #else /* __STDC__ */
487 extern  SCREEN  *newscreen(),   /* termname, lines, cols, tabsiz, fout, fin */
488                 *setcurscreen(); /* screenptr */
490 extern  WINDOW  *initscr(),
491                 *newwin(),              /* nlines, ncols, begy, begx */
492                 *newpad(),              /* nlines, ncols */
493                 *derwin(),              /* orig, nlines, ncols, begy, begx */
494                 *dupwin(),              /* orig */
495                 *getwin();              /* file */
497 extern  int     wgetch(); /* because it can return KEY_*, for instance. */
499 extern  char    *longname(),    /* long name of terminal */
500                 *termname(),    /* effective terminal name */
501                 *keyname(),     /* (int)  name of token returned by wgetch() */
502                 *slk_label(),   /* index */
503                 erasechar(),
504                 killchar(),
505                 *unctrl();
507 extern  chtype  termattrs();
509 extern  void    vidupdate(), wsyncup(), wsyncdown(),
510                 delkeymap(),
511                 delscreen(), curserr(),
512                 _setqiflush(),
513                 immedok(),
514                 wcursyncup();
516 extern  int     cbreak(), nocbreak(),
517                 reset_prog_mode(), reset_shell_mode(), def_prog_mode(),
518                 _setecho(), _setnonl(),
519                 def_shell_mode(), raw(),
520                 savetty(), traceon(), _meta(),
521                 traceoff(), noraw(), flushinp(), _getsyx(),
522                 _ring(), resetty(), ripoffline(), setsyx(), slk_refresh(),
523                 slk_restore(), wstandend(), wstandout(),
524                 wattroff(), wattron(), wattrset(), wrefresh();
526 extern  int     color_cont(), copywin(), curs_set(), delay_output(), delwin(),
527                 doupdate(), drainio(), endwin(), isendwin(),
528                 baudrate(), has_ic(), has_il(), idlok(),
529                 init_color(), init_pair(), keypad(), mvcur();
531 extern  int     mvprintw(), mvscanw(), mvwprintw(), mvwscanw(),
532                 printw(), scanw(), wprintw(), wscanw(), vwprintw(), vwscanw();
534 extern  int     mvwin(), mvderwin(), napms(), newkey(), filter(),
535                 pair_content(), pechochar(), pnoutrefresh(), prefresh();
537 extern  int     putwin(), wredrawln(), scr_dump(), setupterm();
539 extern  int     slk_attrof(), slk_attrof(), slk_attrset(),
540                 slk_clear(), slk_noutrefresh(), slk_set(),
541                 slk_start(), slk_touch(), start_color(),
542                 typeahead();
544 extern  bool    can_change_color(), has_colors();
546 extern  int     waddch(), waddchnstr(), waddnstr(), wbkgd(),
547                 wborder(), wclrtobot(), wclrtoeol(), wdelch(), wechochar(),
548                 wgetstr(), wgetnstr(), whline(), wvline(), winchnstr(),
549                 winchstr(), winnstr(), winsch(),
550                 winsdelln(),            /* internal */
551                 winsnstr(), winstr(), wmove(), wnoutrefresh(), wredrawln(),
552                 wscrl(), wsetscrreg(), wtouchln();
554 extern  int     crmode(), nocrmode(), ungetch();
556 extern  int     mouse_set(), mouse_on(), mouse_off(),
557                 request_mouse_pos(), map_button();
559 extern void     wmouse_position();
561 extern unsigned long getmouse(), getbmap();
563 extern chtype   winwch();
565 extern int      pechowchar(), ungetwch(), waddnwstr(), waddwch(),
566                 waddwchnstr(), wechowchar(), wgetnwstr(), wgetwch(),
567                 wgetwstr(), winnwstr(), winsnwstr(), winswch(),
568                 winwchnstr(), winwstr();
570 #endif /* __STDC__ */
572 #define getsyx(y, x)            _getsyx(&(y), &(x))
575  * Functions to get at the window structure.
576  */
578 #define getyx(win, y, x)        ((y) = getcury(win), (x) = getcurx(win))
579 #define getbegyx(win, y, x)     ((y) = getbegy(win), (x) = getbegx(win))
580 #define getmaxyx(win, y, x)     ((y) = getmaxy(win), (x) = getmaxx(win))
581 #define getparyx(win, y, x)     ((y) = getpary(win), (x) = getparx(win))
583 #if     defined(CURS_PERFORMANCE) && !defined(__lint)
584 #define getcury(win)            ((win)->_cury)
585 #define getcurx(win)            ((win)->_curx)
586 #define getbegy(win)            ((win)->_begy)
587 #define getbegx(win)            ((win)->_begx)
588 #define getmaxy(win)            ((win)->_maxy)
589 #define getmaxx(win)            ((win)->_maxx)
590 #define getpary(win)            ((win)->_pary)
591 #define getparx(win)            ((win)->_parx)
592 #define getbkgd(win)            ((win)->_bkgd)
593 #define getattrs(win)           ((win)->_attrs)
594 #else   /* defined(CURS_PERFORMANCE) && !defined(__lint) */
596 #ifdef __STDC__
597 extern int getcury(WINDOW *);
598 extern int getcurx(WINDOW *);
599 extern int getbegy(WINDOW *);
600 extern int getbegx(WINDOW *);
601 extern int getmaxy(WINDOW *);
602 extern int getmaxx(WINDOW *);
603 extern int getpary(WINDOW *);
604 extern int getparx(WINDOW *);
606 extern chtype getbkgd(WINDOW *);
607 extern chtype getattrs(WINDOW *);
609 #else  /* __STDC__ */
610 extern  int     getcury(), getcurx(), getbegy(), getbegx(),
611                 getmaxy(), getmaxx(), getpary(), getparx();
613 extern chtype   getbkgd(), getattrs();
615 #endif  /* __STDC__ */
616 #endif  /* defined(CURS_PERFORMANCE) && !defined(__lint) */
618 #if     defined(NOMACROS) || defined(__lint)
620 #ifdef __STDC__
622 extern  SCREEN  *newterm(char *, FILE *, FILE *);
623 extern  SCREEN  *set_term(SCREEN *);
625 extern WINDOW *subpad(WINDOW *, int, int, int, int);
626 extern WINDOW *subwin(WINDOW *, int, int, int, int);
628 extern char *unctrl(int);
630 extern chtype inch(void);
631 extern chtype winch(WINDOW *);
632 extern chtype mvinch(int, int);
633 extern chtype mvwinch(WINDOW *, int, int);
635 extern int addch(chtype);
636 extern int addchnstr(chtype *, int);
637 extern int addchstr(chtype *);
638 extern int addnstr(char *, int);
639 extern int addstr(char *);
640 extern int attroff(chtype);
641 extern int attron(chtype);
642 extern int attrset(chtype);
643 extern int beep(void);
644 extern int bkgd(chtype);
645 extern int border(chtype, chtype, chtype, chtype,
646                 chtype, chtype, chtype, chtype);
647 extern int box(WINDOW *, chtype, chtype);
648 extern int clear(void);
649 extern int clearok(WINDOW *, bool);
650 extern int clrtobot(void);
651 extern int clrtoeol(void);
652 extern int crmode(void);
653 extern int delch(void);
654 extern int deleteln(void);
655 extern int echo(void);
656 extern int echochar(chtype);
657 extern int erase(void);
658 extern int fixterm(void);
659 extern int flash(void);
660 extern int garbagedlines(WINDOW *, int, int);
661 extern int garbagedwin(WINDOW *);
662 extern int getch(void);
663 extern int getstr(char *);
664 extern int gettmode(void);
665 extern int halfdelay(int);
666 extern int hline(chtype, int);
667 extern int inchnstr(chtype *, int);
668 extern int inchstr(chtype *);
669 extern int innstr(char *, int);
670 extern int insch(chtype);
671 extern int insdelln(int);
672 extern int insertln(void);
673 extern int insnstr(char *, int);
674 extern int insstr(char *);
675 extern int instr(char *);
676 extern int intrflush(WINDOW *, int);
677 extern int is_linetouched(WINDOW *, int);
678 extern int is_wintouched(WINDOW *);
679 extern int leaveok(WINDOW *, bool);
680 extern int meta(WINDOW *, int);
681 extern int move(int, int);
682 extern int mvaddch(int, int, chtype);
683 extern int mvaddchnstr(int, int, chtype *, int);
684 extern int mvaddchstr(int, int, chtype *);
685 extern int mvaddnstr(int, int, char *, int);
686 extern int mvaddstr(int, int, char *);
687 extern int mvdelch(int, int);
688 extern int mvgetch(int, int);
689 extern int mvgetstr(int, int, char *);
690 extern int mvhline(int, int, chtype, int);
691 extern int mvinchnstr(int, int, chtype *, int);
692 extern int mvinchstr(int, int, chtype *);
693 extern int mvinnstr(int, int, char *, int);
694 extern int mvinsch(int, int, chtype);
695 extern int mvinsnstr(int, int, char *, int);
696 extern int mvinsstr(int, int, char *);
697 extern int mvinstr(int, int, char *);
698 extern int mvvline(int, int, chtype, int);
699 extern int mvwaddch(WINDOW *, int, int, chtype);
700 extern int mvwaddchnstr(WINDOW *, int, int, chtype *, int);
701 extern int mvwaddchstr(WINDOW *, int, int, chtype *);
702 extern int mvwaddnstr(WINDOW *, int, int, char *, int);
703 extern int mvwaddstr(WINDOW *, int, int, char *);
704 extern int mvwdelch(WINDOW *, int, int);
705 extern int mvwgetch(WINDOW *, int, int);
706 extern int mvwgetstr(WINDOW *, int, int, char *);
707 extern int mvwhline(WINDOW *, int, int, chtype, int);
708 extern int mvwinchnstr(WINDOW *, int, int, chtype *, int);
709 extern int mvwinchstr(WINDOW *, int, int, chtype *);
710 extern int mvwinnstr(WINDOW *, int, int, char *, int);
711 extern int mvwinsch(WINDOW *, int, int, chtype);
712 extern int mvwinsnstr(WINDOW *, int, int, char *, int);
713 extern int mvwinsstr(WINDOW *, int, int, char *);
714 extern int mvwinstr(WINDOW *, int, int, char *);
715 extern int mvwvline(WINDOW *, int, int, chtype, int);
716 extern int nl(void);
717 extern int nocrmode(void);
718 extern int nodelay(WINDOW *, bool);
719 extern int noecho(void);
720 extern int nonl(void);
721 extern int notimeout(WINDOW *, bool);
722 extern int overlay(WINDOW *, WINDOW *);
723 extern int overwrite(WINDOW *, WINDOW *);
724 extern int redrawwin(WINDOW *);
725 extern int refresh(void);
726 extern int resetterm(void);
727 extern int saveterm(void);
728 extern int scr_init(char *);
729 extern int scr_restore(char *);
730 extern int scr_set(char *);
731 extern int scrl(int);
732 extern int scroll(WINDOW *);
733 extern int scrollok(WINDOW *, bool);
734 extern int setscrreg(int, int);
735 extern int setterm(char *);
736 extern int slk_init(int);
737 extern int standend(void);
738 extern int standout(void);
739 extern int syncok(WINDOW *, bool);
740 extern int touchline(WINDOW *, int, int);
741 extern int touchwin(WINDOW *);
742 extern int untouchwin(WINDOW *);
743 extern int vline(chtype, int);
744 extern int waddchstr(WINDOW *, chtype *);
745 extern int waddstr(WINDOW *, char *);
746 extern int wclear(WINDOW *);
747 extern int wdeleteln(WINDOW *);
748 extern int werase(WINDOW *);
749 extern int winchstr(WINDOW *, chtype *);
750 extern int winsertln(WINDOW *);
751 extern int winsstr(WINDOW *, char *);
752 extern int winstr(WINDOW *, char *);
753 extern int wstandend(WINDOW *);
754 extern int wstandout(WINDOW *);
756 extern void bkgdset(chtype);
757 extern void idcok(WINDOW *, bool);
758 extern void noqiflush(void);
759 extern void wbkgdset(WINDOW *, chtype);
760 extern void qiflush(void);
761 extern void timeout(int);
762 extern void wtimeout(WINDOW *, int);
763 extern void use_env(int);                       /* int sb. char */
765 extern chtype inwch(void);
766 extern chtype mvinwch(int, int);
767 extern chtype mvwinwch(WINDOW *, int, int);
769 extern int addnwstr(wchar_t *, int);
770 extern int addwch(chtype);
771 extern int addwchnstr(chtype *, int);
772 extern int addwchstr(chtype *);
773 extern int addwstr(wchar_t *);
774 extern int echowchar(chtype);
775 extern int getnwstr(wchar_t *, int);
776 extern int getwch(void);
777 extern int getwstr(wchar_t *);
778 extern int innwstr(wchar_t *, int);
779 extern int insnwstr(wchar_t *, int);
780 extern int inswch(chtype);
781 extern int inswstr(wchar_t *);
782 extern int inwchnstr(chtype *, int);
783 extern int inwchstr(chtype *);
784 extern int inwstr(wchar_t *);
785 extern int mvaddnwstr(int, int, wchar_t *, int);
786 extern int mvaddwch(int, int, chtype);
787 extern int mvaddwchnstr(int, int, chtype *, int);
788 extern int mvaddwchstr(int, int, chtype *);
789 extern int mvaddwstr(int, int, wchar_t *);
790 extern int mvgetnwstr(int, int, wchar_t *, int);
791 extern int mvgetwch(int, int);
792 extern int mvgetwstr(int, int, wchar_t *);
793 extern int mvinnwstr(int, int, wchar_t *, int);
794 extern int mvinsnwstr(int, int, wchar_t *, int);
795 extern int mvinswch(int, int, chtype);
796 extern int mvinswstr(int, int, wchar_t *);
797 extern int mvinwchnstr(int, int, chtype *, int);
798 extern int mvinwchstr(int, int, chtype *);
799 extern int mvinwstr(int, int, wchar_t *);
800 extern int mvwaddnwstr(WINDOW *, int, int, wchar_t *, int);
801 extern int mvwaddwch(WINDOW *, int, int, chtype);
802 extern int mvwaddwchnstr(WINDOW *, int, int, chtype *, int);
803 extern int mvwaddwchstr(WINDOW *, int, int, chtype *);
804 extern int mvwaddwstr(WINDOW *, int, int, wchar_t *);
805 extern int mvwgetnwstr(WINDOW *, int, int, wchar_t *, int);
806 extern int mvwgetwch(WINDOW *, int, int);
807 extern int mvwgetwstr(WINDOW *, int, int, wchar_t *);
808 extern int mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
809 extern int mvwinsnwstr(WINDOW *, int, int, wchar_t *, int);
810 extern int mvwinswch(WINDOW *, int, int, chtype);
811 extern int mvwinswstr(WINDOW *, int, int, wchar_t *);
812 extern int mvwinwchnstr(WINDOW *, int, int, chtype *, int);
813 extern int mvwinwchstr(WINDOW *, int, int, chtype *);
814 extern int mvwinwstr(WINDOW *, int, int, wchar_t *);
815 extern int waddwchstr(WINDOW *, chtype *);
816 extern int waddwstr(WINDOW *, wchar_t *);
817 extern int winswstr(WINDOW *, wchar_t *);
818 extern int winwchstr(WINDOW *, chtype *);
820 #else /* __STDC__ */
822 extern  SCREEN  *newterm(),             /* termname, fout, fin */
823 extern  SCREEN  *set_term();            /* screenptr */
825 extern  WINDOW  *subpad(),
826 extern  WINDOW  *subwin();
828 extern  chtype  inch(), winch(), mvinch(), mvwinch();
830 extern  char    *unctrl();
832 extern  int     addch(), addchnstr(), addchstr(), addnstr(), addstr(),
833                 attroff(), attron(), attrset(), beep(), bkgd(),
834                 border(), box(), clear(), clearok(), clrtobot(), clrtoeol(),
835                 crmode(), delch(), deleteln(), echo(), echochar(),
836                 erase(),
837 /* MORE */      fixterm(),
838                 flash(), garbagedlines(), garbagedwin(),
839                 getch(), getstr(), gettmode(), halfdelay(), hline(),
840                 inchnstr(), inchstr(), innstr(), insch(),
841                 insdelln(), insertln(), insnstr(), insstr(), instr(),
842                 intrflush(),
843                 is_linetouched(), is_wintouched(), leaveok(), meta(),
844                 move(), mvaddch(), mvaddchnstr(), mvaddchstr(), mvaddnstr(),
845                 mvaddstr(), mvdelch(), mvgetch(), mvgetstr(), mvhline(),
846                 mvinchnstr(), mvinchstr(), mvinnstr(), mvinsch(), mvinsnstr(),
847                 mvinsstr(), mvinstr(), mvvline(), mvwaddch(), mvwaddchnstr(),
848                 mvwaddchstr(), mvwaddnstr(), mvwaddstr(), mvwdelch(),
849                 mvwgetch(), mvwgetstr(), mvwhline(), mvwinchnstr(),
850                 mvwinchstr(), mvwinnstr(), mvwinsch(), mvwinsnstr(),
851                 mvwinsstr(), mvwinstr(), mvwvline(),
852                 nl(), nocrmode(), nodelay(),
853                 noecho(), nonl(), notimeout(),
854                 overlay(), overwrite(), redrawwin(), refresh(),
855                 resetterm(), saveterm(), scr_init(),
856                 scr_restore(), scr_set(), scrl(),
857                 scroll(), scrollok(), setscrreg(), setterm(),
858                 slk_init(), standend(), standout(),
859                 syncok(), touchline(), touchwin(), untouchwin(), vline(),
860                 waddchstr(), waddstr(), wclear(),
861                 wdeleteln(), werase(), winchstr(), winsertln(),
862                 winsstr(), winstr(), wstandend(), wstandout();
864 extern  void    bkgdset(), wbkgdset(), idcok(), noqiflush(),
865                 qiflush(), timeout(), wtimeout(), use_env();
867 extern unsigned long getmouse(), getbmap();
869 extern chtype   inwch(), mvinwch(), mvwinwch();
871 extern int      addnwstr(), addwch(), addwchnstr(), addwchstr(),
872                 addwstr(), echowchar(), getnwstr(), getwch(),
873                 getwstr(), innwstr(), insnwstr(), inswch(),
874                 inswstr(), inwchnstr(), inwchstr(), inwstr(),
875                 mvaddnwstr(), mvaddwch(), mvaddwchnstr(), mvaddwchstr(),
876                 mvaddwstr(), mvgetnwstr(), mvgetwch(), mvgetwstr(),
877                 mvinnwstr(), mvinsnwstr(), mvinswch(), mvinswstr(),
878                 mvinwchnstr(), mvinwchstr(), mvinwstr(), mvwaddnwstr(),
879                 mvwaddwch(), mvwaddwchnstr(), mvwaddwchstr(), mvwaddwstr(),
880                 mvwgetnwstr(), mvwgetwch(), mvwgetwstr(), mvwinnwstr(),
881                 mvwinsnwstr(), mvwinswch(), mvwinswstr(), mvwinwchnstr(),
882                 mvwinwchstr(), mvwinwstr(), waddwchstr(), waddwstr(),
883                 winswstr(), winwchstr();
885 #endif /* __STDC__ */
887 #else   /* NOMACROS || __lint */
890  * The defines from here down to the #endif for NOMACROS
891  * define       macros, which may be more efficient than their
892  * function versions. The functions may be accessed by defining
893  * NOMACROS in C code. This is useful for debugging purposes.
894  */
896 #include  <unctrl.h>
898 /* pseudo functions for stdscr */
899 #define addch(ch)       waddch(stdscr, ch)
900 #define addnstr(s, n)   waddnstr(stdscr, s, n)
901 #define addstr(str)     waddstr(stdscr, str)
902 #define attroff(at)     wattroff(stdscr, at)
903 #define attron(at)      wattron(stdscr, at)
904 #define attrset(at)     wattrset(stdscr, at)
905 #define bkgd(c)         wbkgd(stdscr, c)
906 #define border(ls, rs, ts, bs, tl, tr, bl, br) \
907         wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
908 #define clear()         wclear(stdscr)
909 #define clrtobot()      wclrtobot(stdscr)
910 #define clrtoeol()      wclrtoeol(stdscr)
911 #define delch()         wdelch(stdscr)
912 #define deleteln()      wdeleteln(stdscr)
913 #define echochar(ch)    wechochar(stdscr, ch)
914 #define erase()         werase(stdscr)
915 #define getch()         wgetch(stdscr)
916 #define getstr(str)     wgetstr(stdscr, str)
917 #define inch()          winch(stdscr)
918 #define insch(c)        winsch(stdscr, c)
919 #define insdelln(id)    winsdelln(stdscr, id)
920 #define insertln()      winsertln(stdscr)
921 #define insnstr(s, n)   winsnstr(stdscr, s, n)
922 #define insstr(s)       winsstr(stdscr, s)
923 #define move(y, x)      wmove(stdscr, y, x)
924 #define refresh()       wrefresh(stdscr)
925 #define scrl(n)         wscrl(stdscr, n)
926 #define setscrreg(t, b) wsetscrreg(stdscr, t, b)
927 #define standend()      wstandend(stdscr)
928 #define standout()      wstandout(stdscr)
929 #define timeout(tm)     wtimeout(stdscr, tm)
930 #define hline(c, num)   whline(stdscr, c, num)
931 #define vline(c, num)   wvline(stdscr, c, num)
932 #define addchstr(str)   waddchstr(stdscr, str)
933 #define addchnstr(str, n)       waddchnstr(stdscr, str, n)
934 #define instr(str)      winstr(stdscr, (str))
935 #define innstr(str, n)  winnstr(stdscr, (str), (n))
936 #define inchstr(str)    winchstr(stdscr, str)
937 #define inchnstr(str, n)        winchnstr(stdscr, str, n)
938 #define bkgdset(c)      wbkgdset(stdscr, c)
940 #define addnwstr(ws, n) waddnwstr(stdscr, ws, n)
941 #define addwch(ch)      waddwch(stdscr, ch)
942 #define addwchnstr(str, n)      waddwchnstr(stdscr, str, n)
943 #define addwchstr(str)  waddwchstr(stdscr, str)
944 #define addwstr(ws)     waddwstr(stdscr, ws)
945 #define echowchar(ch)   wechowchar(stdscr, ch)
946 #define getnwstr(ws, n) wgetnwstr(stdscr, ws, n)
947 #define getwch()        wgetwch(stdscr)
948 #define getwstr(ws)     wgetwstr(stdscr, ws)
949 #define innwstr(ws, n)  winnwstr(stdscr, ws, n)
950 #define insnwstr(ws, n) winsnwstr(stdscr, ws, n)
951 #define inswch(c)       winswch(stdscr, c)
952 #define inswstr(ws)     winswstr(stdscr, ws)
953 #define inwch() winwch(stdscr)
954 #define inwchnstr(str, n)       winwchnstr(stdscr, str, n)
955 #define inwchstr(str)   winwchstr(stdscr, str)
956 #define inwstr(ws)      winwstr(stdscr, ws)
958 #define adjcurspos()    wadjcurspos(stdscr)
959 #define movenextch()    wmovenextch(stdscr)
960 #define moveprevch()    wmoveprevch(stdscr)
962 /* functions to define  environment flags of a window */
963 #ifdef  CURS_PERFORMANCE
964 #define wbkgdset(win, c) \
965         (((win)->_attrs = (((win)->_attrs & ~((win)->_bkgd & A_ATTRIBUTES)) | \
966             (c & A_ATTRIBUTES))), ((win)->_bkgd = (c)))
967 #define syncok(win, bf)         ((win)->_parent ? (win)->_sync = (bf) : ERR)
968 #define notimeout(win, bf) \
969         (((win)->_notimeout = ((bf) ? TRUE : FALSE)), OK)
970 #define clearok(win, bf)        (((win)->_clear = (bf)), OK)
971 #define leaveok(win, bf)        (((win)->_leave = (bf)), OK)
972 #define scrollok(win, bf)       (((win)->_scroll = ((bf) ? TRUE : FALSE)), OK)
973 #define idcok(win, bf)          ((win)->_use_idc = ((bf) ? TRUE : FALSE))
974 #define nodelay(win, bf)        (((win)->_delay = (bf) ? 0 : -1), OK)
975 #define is_wintouched(win)      ((win)->_flags & _WINCHANGED)
976 #define is_linetouched(win, line) \
977         ((((line) >= (win)->_maxy) || ((line) < 0)) ? ERR : \
978             (((win)->_firstch[(line)] == _INFINITY) ? FALSE : TRUE))
980 #define subwin(win, nl, nc, by, bx) \
981         derwin((win), (nl), (nc), (by-win->_begy), (bx-win->_begx))
982 #define touchwin(win)           wtouchln((win), 0, (win)->_maxy, TRUE)
983 #define redrawwin(win)          wredrawln((win), 0, (win)->_maxy)
984 #define winchstr(win, str) \
985         winchnstr((win), str, ((win)->_maxx - (win)->_curx))
986 #define winstr(win, str) \
987         winnstr((win), str, ((win)->_maxx - (win)->_curx))
988 #define untouchwin(win)         wtouchln((win), 0, ((win)->_maxy), FALSE)
989 #define winch(win)              ((win)->_y[(win)->_cury][(win)->_curx])
991 #define wtimeout(win, tm)       ((win)->_delay = (tm))
992 #define use_env(bf)             (_use_env = (bf))
994 #else   /* CURS_PERFORMANCE */
996 #ifdef __STDC__
998 extern void wbkgdset(WINDOW *, chtype);
999 extern void idcok(WINDOW *, bool);
1000 extern void wtimeout(WINDOW *, int);
1001 extern void use_env(int);                        /* int sb. char */
1003 extern int syncok(WINDOW *, bool);
1004 extern int notimeout(WINDOW *, bool);
1005 extern int clearok(WINDOW *, bool);
1006 extern int leaveok(WINDOW *, bool);
1007 extern int scrollok(WINDOW *, bool);
1008 extern int nodelay(WINDOW *, bool);
1009 extern int is_linetouched(WINDOW *, int);
1010 extern int is_wintouched(WINDOW *);
1011 extern int touchwin(WINDOW *);
1012 extern int redrawwin(WINDOW *);
1013 extern int winchstr(WINDOW *, chtype *);
1014 extern int winstr(WINDOW *, char *);
1015 extern int untouchwin(WINDOW *);
1017 extern chtype winch(WINDOW *);
1019 extern WINDOW *subwin(WINDOW *, int, int, int, int);
1021 #else  /* __STDC__ */
1023 extern  void    wbkgdset(), idcok(), wtimeout(), use_env();
1025 extern  int     syncok(), notimeout(), clearok(), leaveok(),
1026                 scrollok(), nodelay(), is_linetouched(), is_wintouched(),
1027                 touchwin(), redrawwin(), winchstr(), winstr(),
1028                 untouchwin();
1030 extern  chtype  winch();
1032 extern WINDOW *subwin();
1034 #endif /* __STDC__ */
1036 #endif  /* CURS_PERFORMANCE */
1038 /* functions for move and update */
1039 #define mvaddch(y, x, ch) \
1040         mvwaddch(stdscr, y, x, ch)
1041 #define mvaddnstr(y, x, s, n) \
1042         mvwaddnstr(stdscr, y, x, s, n)
1043 #define mvaddstr(y, x, str) \
1044         mvwaddstr(stdscr, y, x, str)
1045 #define mvdelch(y, x) \
1046         mvwdelch(stdscr, y, x)
1047 #define mvgetch(y, x) \
1048         mvwgetch(stdscr, y, x)
1049 #define mvgetstr(y, x, str) \
1050         mvwgetstr(stdscr, y, x, str)
1051 #define mvinch(y, x) \
1052         mvwinch(stdscr, y, x)
1053 #define mvinsch(y, x, c) \
1054         mvwinsch(stdscr, y, x, c)
1055 #define mvinsnstr(y, x, s, n) \
1056         mvwinsnstr(stdscr, y, x, s, n)
1057 #define mvinsstr(y, x, s) \
1058         mvwinsstr(stdscr, y, x, s)
1059 #define mvaddchstr(y, x, str) \
1060         mvwaddchstr(stdscr, y, x, str)
1061 #define mvaddchnstr(y, x, str, n) \
1062         mvwaddchnstr(stdscr, y, x, str, n)
1063 #define mvinstr(y, x, str) \
1064         mvwinstr(stdscr, y, x, (str))
1065 #define mvinnstr(y, x, str, n) \
1066         mvwinnstr(stdscr, y, x, (str), (n))
1067 #define mvinchstr(y, x, str) \
1068         mvwinchstr(stdscr, y, x, str)
1069 #define mvinchnstr(y, x, str, n) \
1070         mvwinchnstr(stdscr, y, x, str, n)
1071 #define mvhline(y, x, c, num) \
1072         mvwhline(stdscr, y, x, c, num)
1073 #define mvvline(y, x, c, num) \
1074         mvwvline(stdscr, y, x, c, num)
1076 #define mvaddnwstr(y, x, ws, n) \
1077         mvwaddnwstr(stdscr, y, x, ws, n)
1078 #define mvaddwch(y, x, ch) \
1079         mvwaddwch(stdscr, y, x, ch)
1080 #define mvaddwchnstr(y, x, str, n) \
1081         mvwaddwchnstr(stdscr, y, x, str, n)
1082 #define mvaddwchstr(y, x, str) \
1083         mvwaddwchstr(stdscr, y, x, str)
1084 #define mvaddwstr(y, x, ws) \
1085         mvwaddwstr(stdscr, y, x, ws)
1086 #define mvgetnwstr(y, x, ws, n) \
1087         mvwgetnwstr(stdscr, y, x, ws, n)
1088 #define mvgetwch(y, x) \
1089         mvwgetwch(stdscr, y, x)
1090 #define mvgetwstr(y, x, ws) \
1091         mvwgetwstr(stdscr, y, x, ws)
1092 #define mvinnwstr(y, x, ws, n) \
1093         mvwinnwstr(stdscr, y, x, ws, n)
1094 #define mvinsnwstr(y, x, ws, n) \
1095         mvwinsnwstr(stdscr, y, x, ws, n)
1096 #define mvinswch(y, x, c) \
1097         mvwinswch(stdscr, y, x, c)
1098 #define mvinswstr(y, x, ws) \
1099         mvwinswstr(stdscr, y, x, ws)
1100 #define mvinwch(y, x) \
1101         mvwinwch(stdscr, y, x)
1102 #define mvinwchnstr(y, x, str, n) \
1103         mvwinwchnstr(stdscr, y, x, str, n)
1104 #define mvinwchstr(y, x, str) \
1105         mvwinwchstr(stdscr, y, x, str)
1106 #define mvinwstr(y, x, ws) \
1107         mvwinwstr(stdscr, y, x, ws)
1109 #define mvwaddch(win, y, x, ch) \
1110         (wmove(win, y, x) == ERR ? ERR : waddch(win, ch))
1111 #define mvwaddnstr(win, y, x, s, n) \
1112         (wmove(win, y, x) == ERR ? ERR : waddnstr(win, s, n))
1113 #define mvwaddstr(win, y, x, str) \
1114         (wmove(win, y, x) == ERR ? ERR : waddstr(win, str))
1115 #define mvwdelch(win, y, x) \
1116         (wmove(win, y, x) == ERR ? ERR : wdelch(win))
1117 #define mvwgetch(win, y, x) \
1118         (wmove(win, y, x) == ERR ? ERR : wgetch(win))
1119 #define mvwgetstr(win, y, x, str) \
1120         (wmove(win, y, x) == ERR ? ERR : wgetstr(win, str))
1121 #define mvwinch(win, y, x) \
1122         (wmove(win, y, x) == ERR ? (chtype)ERR : winch(win))
1123 #define mvwinsch(win, y, x, c) \
1124         (wmove(win, y, x) == ERR ? ERR : winsch(win, c))
1125 #define mvwinsnstr(win, y, x, s, n) \
1126         (wmove(win, y, x) == ERR ? ERR : winsnstr(win, s, n))
1127 #define mvwinsstr(win, y, x, s) \
1128         (wmove(win, y, x) == ERR ? ERR : winsstr(win, s))
1129 #define mvwhline(win, y, x, c, num) \
1130         (wmove(win, y, x) == ERR ? ERR : whline(win, c, num))
1131 #define mvwvline(win, y, x, c, num) \
1132         (wmove(win, y, x) == ERR ? ERR : wvline(win, c, num))
1133 #define mvwaddchstr(win, y, x, str) \
1134         (wmove(win, y, x) == ERR ? ERR : waddchstr(win, str))
1135 #define mvwaddchnstr(win, y, x, str, n) \
1136         (wmove(win, y, x) == ERR ? ERR : waddchnstr(win, str, n))
1137 #define mvwinstr(win, y, x, str) \
1138         (wmove(win, y, x) == ERR ? ERR : winstr(win, str))
1139 #define mvwinnstr(win, y, x, str, n) \
1140         (wmove(win, y, x) == ERR ? ERR : winnstr(win, str, n))
1141 #define mvwinchstr(win, y, x, str) \
1142         (wmove(win, y, x) == ERR ? ERR : winchstr(win, str))
1143 #define mvwinchnstr(win, y, x, str, n) \
1144         (wmove(win, y, x) == ERR ? ERR : winchnstr(win, str, n))
1145 #define mvwaddnwstr(win, y, x, ws, n) \
1146         (wmove(win, y, x) == ERR ? ERR : waddnwstr(win, ws, n))
1147 #define mvwaddwch(win, y, x, ch) \
1148         (wmove(win, y, x) == ERR ? ERR : waddwch(win, ch))
1149 #define mvwaddwchnstr(win, y, x, str, n) \
1150         (wmove(win, y, x) == ERR ? ERR : waddwchnstr(win, str, n))
1151 #define mvwaddwchstr(win, y, x, str) \
1152         (wmove(win, y, x) == ERR ? ERR : waddwchstr(win, str))
1153 #define mvwaddwstr(win, y, x, ws) \
1154         (wmove(win, y, x) == ERR ? ERR : waddwstr(win, ws))
1155 #define mvwgetnwstr(win, y, x, ws, n) \
1156         (wmove(win, y, x) == ERR ? ERR : wgetnwstr(win, ws, n))
1157 #define mvwgetwch(win, y, x) \
1158         (wmove(win, y, x) == ERR ? ERR : wgetwch(win))
1159 #define mvwgetwstr(win, y, x, ws) \
1160         (wmove(win, y, x) == ERR ? ERR : wgetwstr(win, ws))
1161 #define mvwinnwstr(win, y, x, ws, n) \
1162         (wmove(win, y, x) == ERR ? ERR : winnwstr(win, ws, n))
1163 #define mvwinsnwstr(win, y, x, ws, n) \
1164         (wmove(win, y, x) == ERR ? ERR : winsnwstr(win, ws, n))
1165 #define mvwinswch(win, y, x, c) \
1166         (wmove(win, y, x) == ERR ? ERR : winswch(win, c))
1167 #define mvwinswstr(win, y, x, ws) \
1168         (wmove(win, y, x) == ERR ? ERR : winswstr(win, ws))
1169 #define mvwinwch(win, y, x) \
1170         (wmove(win, y, x) == ERR ?(chtype) ERR : winwch(win))
1171 #define mvwinwchnstr(win, y, x, str, n) \
1172         (wmove(win, y, x) == ERR ? ERR : winwchnstr(win, str, n))
1173 #define mvwinwchstr(win, y, x, str) \
1174         (wmove(win, y, x) == ERR ? ERR : winwchstr(win, str))
1175 #define mvwinwstr(win, y, x, ws) \
1176         (wmove(win, y, x) == ERR ? ERR : winwstr(win, ws))
1178 #define waddwchstr(win, str)    waddwchnstr(win, str, -1)
1179 #define winwchstr(win, str)     winwchnstr(win, str, -1)
1180 #define waddwstr(win, ws)       waddnwstr(win, ws, -1)
1181 #define winswstr(win, ws)       winsnwstr(win, ws, -1)
1183 #ifdef CURS_MACROS
1184 #define overlay(src, dst)       _overlap((src), (dst), TRUE)
1185 #define overwrite(src, dst)     _overlap((src), (dst), FALSE)
1186 #define wdeleteln(win)          winsdelln((win), -1)
1187 #define winsertln(win)          winsdelln((win), 1)
1188 #define wstandend(win)          wattrset((win), A_NORMAL)
1189 #define wstandout(win)          wattron((win), A_STANDOUT)
1190 #define beep()                  _ring(TRUE)
1191 #define flash()                 _ring(FALSE)
1192 #define scroll(win)             wscrl((win), 1)
1193 #define slk_init(f)             slk_start(((f == 0) ? 3 : 2), NULL)
1194 #define scr_init(file)          _scr_all(file, 0)
1195 #define scr_restore(file)       _scr_all(file, 1)
1196 #define scr_set(file)           _scr_all(file, 2)
1197 #define subpad(win, nl, nc, by, bx) derwin((win), (nl), (nc), (by), (bx))
1198 #define box(win, v, h)          wborder((win), (v), (v), (h), (h), 0, 0, 0, 0)
1199 #define newterm(type, fout, fin) newscreen((type), 0, 0, 0, (fout), (fin))
1200 #define touchline(win, y, n)    wtouchln((win), (y), (n), TRUE)
1202 #define waddstr(win, str)       waddnstr((win), (str), -1)
1203 #define werase(win)             (wmove((win), 0, 0), wclrtobot(win))
1204 #define wclear(win)             (clearok((win), TRUE), werase(win))
1205 #define intrflush(win, flag)    _setqiflush(flag)
1206 #define meta(win, flag)         _meta(flag)
1208 #define setterm(name)           setupterm((name), 1, (char *)NULL)
1209 #define gettmode()              (OK)
1210 #define halfdelay(tens)         ttimeout((tens)*100)
1212 #define echo()                  _setecho(TRUE)
1213 #define noecho()                _setecho(FALSE)
1214 #define nl()                    _setnonl(FALSE)
1215 #define nonl()                  _setnonl(TRUE)
1217 #else /* CURS_MACROS */
1219 #ifdef __STDC__
1221 extern int overlay(WINDOW *, WINDOW *);
1222 extern int overwrite(WINDOW *, WINDOW *);
1223 extern int wdeleteln(WINDOW *);
1224 extern int winsertln(WINDOW *);
1225 extern int wstandend(WINDOW *);
1226 extern int wstandout(WINDOW *);
1227 extern int beep(void);
1228 extern int flash(void);
1229 extern int scroll(WINDOW *);
1230 extern int slk_init(int);
1231 extern int scr_init(char *);
1232 extern int scr_restore(char *);
1233 extern int box(WINDOW *, chtype, chtype);
1234 extern int touchline(WINDOW *, int, int);
1235 extern int waddstr(WINDOW *, char *);
1236 extern int werase(WINDOW *);
1237 extern int wclear(WINDOW *);
1238 extern int intrflush(WINDOW *, int);
1239 extern int meta(WINDOW *, int);
1240 extern int setterm(char *);
1241 extern int gettmode(void);
1242 extern int halfdelay(int);
1243 extern int echo(void);
1244 extern int noecho(void);
1245 extern int nl(void);
1246 extern int nonl(void);
1248 extern WINDOW *subpad(WINDOW *, int, int, int, int);
1250 extern  SCREEN *newterm(char *, FILE *, FILE *);
1252 #else  /* __STDC__ */
1254 extern  int     overlay(), overwrite(), wdeleteln(), winsertln(),
1255                 wstandend(), wstandout(), beep(), flash(),
1256                 scroll(), slk_init(), scr_init(), scr_restore(),
1257                 box(), touchline(), waddstr(), werase(),
1258                 wclear(), intrflush(), meta(), setterm(), gettmode(),
1259                 halfdelay(), echo(), noecho(), nl(), nonl();
1261 extern  WINDOW *subpad();
1263 extern  SCREEN  *newterm();
1265 #endif /* __STDC__ */
1266 #endif /* CURS_MACROS */
1268 #define garbagedlines           wredrawln
1269 #define garbagedwin             redrawwin
1271 #define crmode                  cbreak
1272 #define nocrmode                nocbreak
1273 #define saveterm                def_prog_mode
1274 #define fixterm                 reset_prog_mode
1275 #define resetterm               reset_shell_mode
1277 #define waddchstr(win, str)     waddchnstr((win), (str), -1)
1278 #define winsstr(win, str)       winsnstr((win), (str), -1)
1280 /* iocontrol functions */
1281 #define qiflush()               _setqiflush(TRUE)
1282 #define noqiflush()             _setqiflush(FALSE)
1284 #define set_term                setcurscreen
1286 #endif  /* NOMACROS || __lint */
1289  * Standard alternate character set.  The current ACS world is evolving,
1290  * so we support only a widely available subset: the line drawing characters
1291  * from the VT100, plus a few from the Teletype 5410v1.  Eventually there
1292  * may be support of more sophisticated ACS line drawing, such as that
1293  * in the Teletype 5410, the HP line drawing set, and the like.  There may
1294  * be support for some non line oriented characters as well.
1296  * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
1297  * is the right, b is the bottom, and l is the left.  t, r, b, and l might
1298  * be B (blank), S (single), D (double), or T (thick).  The subset defined
1299  * here only uses B and S.
1300  */
1302 #define ACS_BSSB        (acs_map['l'])
1303 #define ACS_SSBB        (acs_map['m'])
1304 #define ACS_BBSS        (acs_map['k'])
1305 #define ACS_SBBS        (acs_map['j'])
1306 #define ACS_SBSS        (acs_map['u'])
1307 #define ACS_SSSB        (acs_map['t'])
1308 #define ACS_SSBS        (acs_map['v'])
1309 #define ACS_BSSS        (acs_map['w'])
1310 #define ACS_BSBS        (acs_map['q'])
1311 #define ACS_SBSB        (acs_map['x'])
1312 #define ACS_SSSS        (acs_map['n'])
1315  * Human readable names for the most commonly used characters.
1316  * "Upper", "right", etc. are chosen to be consistent with the vt100 manual.
1317  */
1319 #define ACS_ULCORNER    ACS_BSSB
1320 #define ACS_LLCORNER    ACS_SSBB
1321 #define ACS_URCORNER    ACS_BBSS
1322 #define ACS_LRCORNER    ACS_SBBS
1323 #define ACS_RTEE        ACS_SBSS
1324 #define ACS_LTEE        ACS_SSSB
1325 #define ACS_BTEE        ACS_SSBS
1326 #define ACS_TTEE        ACS_BSSS
1327 #define ACS_HLINE       ACS_BSBS
1328 #define ACS_VLINE       ACS_SBSB
1329 #define ACS_PLUS        ACS_SSSS
1330 #define ACS_S1          (acs_map['o'])  /* scan line 1 */
1331 #define ACS_S9          (acs_map['s'])  /* scan line 9 */
1332 #define ACS_DIAMOND     (acs_map['`'])  /* diamond */
1333 #define ACS_CKBOARD     (acs_map['a'])  /* checker board (stipple) */
1334 #define ACS_DEGREE      (acs_map['f'])  /* degree symbol */
1335 #define ACS_PLMINUS     (acs_map['g'])  /* plus/minus */
1336 #define ACS_BULLET      (acs_map['~'])  /* bullet */
1337         /* Teletype 5410v1 symbols */
1338 #define ACS_LARROW      (acs_map[','])  /* arrow pointing left */
1339 #define ACS_RARROW      (acs_map['+'])  /* arrow pointing right */
1340 #define ACS_DARROW      (acs_map['.'])  /* arrow pointing down */
1341 #define ACS_UARROW      (acs_map['-'])  /* arrow pointing up */
1342 #define ACS_BOARD       (acs_map['h'])  /* board of squares */
1343 #define ACS_LANTERN     (acs_map['i'])  /* lantern symbol */
1344 #define ACS_BLOCK       (acs_map['0'])  /* solid square block */
1350  *      The definition for 'reg' is not standard, and is provided for
1351  *      compatibility reasons. User's are discouraged from using this.
1352  */
1353 #define reg     register
1355 /* Various video attributes */
1356 #define A_STANDOUT      000010000000
1357 #define _STANDOUT       A_STANDOUT    /* for compatability with old curses */
1358 #define A_UNDERLINE     000020000000
1359 #define A_REVERSE       000040000000
1360 #define A_BLINK         000100000000
1361 #define A_DIM           000200000000
1362 #define A_BOLD          000400000000
1363 #define A_ALTCHARSET    001000000000
1365 /* The next two are subject to change so don't depend on them */
1366 #define A_INVIS         010000000000
1367 #define A_PROTECT       020000000000U
1369 #define A_NORMAL        000000000000
1370 #define A_ATTRIBUTES    031777700000U   /* 0xCFFF8000 */
1371 #define A_CHARTEXT      006000077777    /* 0x30007FFF */
1372 #define A_COLOR         000007700000
1374 #define A_WATTRIBUTES   031770000000U   /* 0xCFE00000 */
1375 #define A_WCHARTEXT     006007777777    /* 0x301FFFFF */
1377 #define COLOR_PAIR(n)   ((n) << 15)
1378 #define PAIR_NUMBER(n)  (((n) & A_COLOR) >> 15)
1380 /* definition of 8 basic color  */
1381 #define COLOR_BLACK     0
1382 #define COLOR_RED       1
1383 #define COLOR_GREEN     2
1384 #define COLOR_YELLOW    3
1385 #define COLOR_BLUE      4
1386 #define COLOR_MAGENTA   5
1387 #define COLOR_CYAN      6
1388 #define COLOR_WHITE     7
1390 /* mouse related macros: don't change these definitions or bit-masks.   */
1391 /* they are interdependent (used by _map_button() in tgetch()           */
1392 #define BUTTON_RELEASED         0
1393 #define BUTTON_PRESSED          1
1394 #define BUTTON_CLICKED          2
1395 #define BUTTON_DOUBLE_CLICKED   3
1396 #define BUTTON_TRIPLE_CLICKED   4
1398 #define MOUSE_X_POS             (Mouse_status.x)
1399 #define MOUSE_Y_POS             (Mouse_status.y)
1400 #define A_BUTTON_CHANGED        (Mouse_status.changes & 7)
1401 #define MOUSE_MOVED             (Mouse_status.changes & 8)
1402 #define MOUSE_POS_REPORT        (Mouse_status.changes & 16)
1403 #define BUTTON_CHANGED(x)       (Mouse_status.changes & (1 << ((x) - 1)))
1404 #define BUTTON_STATUS(x)        (Mouse_status.button[(x)-1])
1406 /* definition of mouse bit-masks        */
1407 #define BUTTON1_RELEASED        000000000001
1408 #define BUTTON1_PRESSED         000000000002
1409 #define BUTTON1_CLICKED         000000000004
1410 #define BUTTON1_DOUBLE_CLICKED  000000000010
1411 #define BUTTON1_TRIPLE_CLICKED  000000000020
1412 #define BUTTON2_RELEASED        000000000040
1413 #define BUTTON2_PRESSED         000000000100
1414 #define BUTTON2_CLICKED         000000000200
1415 #define BUTTON2_DOUBLE_CLICKED  000000000400
1416 #define BUTTON2_TRIPLE_CLICKED  000000001000
1417 #define BUTTON3_RELEASED        000000002000
1418 #define BUTTON3_PRESSED         000000004000
1419 #define BUTTON3_CLICKED         000000010000
1420 #define BUTTON3_DOUBLE_CLICKED  000000020000
1421 #define BUTTON3_TRIPLE_CLICKED  000000040000
1422 #define ALL_MOUSE_EVENTS        000000077777
1423 #define REPORT_MOUSE_POSITION   000000100000
1425 #ifdef  __cplusplus
1427 #endif
1429 #endif  /* _CURSES_H */
1431 0r copyright.h
1432 g/\@(\#)curses\.ed/s//\@(\#)curses\.h/
1433 w curses.h