]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - include/curses.wide
ncurses 5.9 - patch 20120218
[ncurses.git] / include / curses.wide
index ac03151be62acf929683b30fde70265c4348fb1b..6bd102fdb050f14b778fdacaafd0c16c642fd08d 100644 (file)
@@ -1,21 +1,28 @@
+/* $Id: curses.wide,v 1.44 2011/10/29 20:08:19 tom Exp $ */
+/*
+ * vile:cmode:
+ * This file is part of ncurses, designed to be appended after curses.h.in
+ * (see that file for the relevant copyright).
+ */
+#define _XOPEN_CURSES 1
 
-#ifdef _XOPEN_SOURCE_EXTENDED
-
-/* $Id: curses.wide,v 1.25 2002/08/31 17:48:53 tom Exp $ */
+#if NCURSES_WIDECHAR
 
 extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
 
-#define WACS_BSSB      (&_nc_wacs['l'])
-#define WACS_SSBB      (&_nc_wacs['m'])
-#define WACS_BBSS      (&_nc_wacs['k'])
-#define WACS_SBBS      (&_nc_wacs['j'])
-#define WACS_SBSS      (&_nc_wacs['u'])
-#define WACS_SSSB      (&_nc_wacs['t'])
-#define WACS_SSBS      (&_nc_wacs['v'])
-#define WACS_BSSS      (&_nc_wacs['w'])
-#define WACS_BSBS      (&_nc_wacs['q'])
-#define WACS_SBSB      (&_nc_wacs['x'])
-#define WACS_SSSS      (&_nc_wacs['n'])
+#define NCURSES_WACS(c)        (&_nc_wacs[(unsigned char)c])
+
+#define WACS_BSSB      NCURSES_WACS('l')
+#define WACS_SSBB      NCURSES_WACS('m')
+#define WACS_BBSS      NCURSES_WACS('k')
+#define WACS_SBBS      NCURSES_WACS('j')
+#define WACS_SBSS      NCURSES_WACS('u')
+#define WACS_SSSB      NCURSES_WACS('t')
+#define WACS_SSBS      NCURSES_WACS('v')
+#define WACS_BSSS      NCURSES_WACS('w')
+#define WACS_BSBS      NCURSES_WACS('q')
+#define WACS_SBSB      NCURSES_WACS('x')
+#define WACS_SSSS      NCURSES_WACS('n')
 
 #define WACS_ULCORNER  WACS_BSSB
 #define WACS_LLCORNER  WACS_SSBB
@@ -29,31 +36,81 @@ extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
 #define WACS_VLINE     WACS_SBSB
 #define WACS_PLUS      WACS_SSSS
 
-#define WACS_S1                (&_nc_wacs['o']) /* scan line 1 */
-#define WACS_S9        (&_nc_wacs['s']) /* scan line 9 */
-#define WACS_DIAMOND   (&_nc_wacs['`']) /* diamond */
-#define WACS_CKBOARD   (&_nc_wacs['a']) /* checker board */
-#define WACS_DEGREE    (&_nc_wacs['f']) /* degree symbol */
-#define WACS_PLMINUS   (&_nc_wacs['g']) /* plus/minus */
-#define WACS_BULLET    (&_nc_wacs['~']) /* bullet */
+#define WACS_S1                NCURSES_WACS('o') /* scan line 1 */
+#define WACS_S9        NCURSES_WACS('s') /* scan line 9 */
+#define WACS_DIAMOND   NCURSES_WACS('`') /* diamond */
+#define WACS_CKBOARD   NCURSES_WACS('a') /* checker board */
+#define WACS_DEGREE    NCURSES_WACS('f') /* degree symbol */
+#define WACS_PLMINUS   NCURSES_WACS('g') /* plus/minus */
+#define WACS_BULLET    NCURSES_WACS('~') /* bullet */
 
        /* Teletype 5410v1 symbols */
-#define WACS_LARROW    (&_nc_wacs[',']) /* arrow left */
-#define WACS_RARROW    (&_nc_wacs['+']) /* arrow right */
-#define WACS_DARROW    (&_nc_wacs['.']) /* arrow down */
-#define WACS_UARROW    (&_nc_wacs['-']) /* arrow up */
-#define WACS_BOARD     (&_nc_wacs['h']) /* board of squares */
-#define WACS_LANTERN   (&_nc_wacs['i']) /* lantern symbol */
-#define WACS_BLOCK     (&_nc_wacs['0']) /* solid square block */
+#define WACS_LARROW    NCURSES_WACS(',') /* arrow left */
+#define WACS_RARROW    NCURSES_WACS('+') /* arrow right */
+#define WACS_DARROW    NCURSES_WACS('.') /* arrow down */
+#define WACS_UARROW    NCURSES_WACS('-') /* arrow up */
+#define WACS_BOARD     NCURSES_WACS('h') /* board of squares */
+#define WACS_LANTERN   NCURSES_WACS('i') /* lantern symbol */
+#define WACS_BLOCK     NCURSES_WACS('0') /* solid square block */
 
        /* ncurses extensions */
-#define WACS_S3                (&_nc_wacs['p']) /* scan line 3 */
-#define WACS_S7                (&_nc_wacs['r']) /* scan line 7 */
-#define WACS_LEQUAL    (&_nc_wacs['y']) /* less/equal */
-#define WACS_GEQUAL    (&_nc_wacs['z']) /* greater/equal */
-#define WACS_PI                (&_nc_wacs['{']) /* Pi */
-#define WACS_NEQUAL    (&_nc_wacs['|']) /* not equal */
-#define WACS_STERLING  (&_nc_wacs['}']) /* UK pound sign */
+#define WACS_S3                NCURSES_WACS('p') /* scan line 3 */
+#define WACS_S7                NCURSES_WACS('r') /* scan line 7 */
+#define WACS_LEQUAL    NCURSES_WACS('y') /* less/equal */
+#define WACS_GEQUAL    NCURSES_WACS('z') /* greater/equal */
+#define WACS_PI                NCURSES_WACS('{') /* Pi */
+#define WACS_NEQUAL    NCURSES_WACS('|') /* not equal */
+#define WACS_STERLING  NCURSES_WACS('}') /* UK pound sign */
+
+       /* double lines */
+#define WACS_BDDB      NCURSES_WACS('C')
+#define WACS_DDBB      NCURSES_WACS('D')
+#define WACS_BBDD      NCURSES_WACS('B')
+#define WACS_DBBD      NCURSES_WACS('A')
+#define WACS_DBDD      NCURSES_WACS('G')
+#define WACS_DDDB      NCURSES_WACS('F')
+#define WACS_DDBD      NCURSES_WACS('H')
+#define WACS_BDDD      NCURSES_WACS('I')
+#define WACS_BDBD      NCURSES_WACS('R')
+#define WACS_DBDB      NCURSES_WACS('Y')
+#define WACS_DDDD      NCURSES_WACS('E')
+
+#define WACS_D_ULCORNER        WACS_BDDB
+#define WACS_D_LLCORNER        WACS_DDBB
+#define WACS_D_URCORNER        WACS_BBDD
+#define WACS_D_LRCORNER        WACS_DBBD
+#define WACS_D_RTEE    WACS_DBDD
+#define WACS_D_LTEE    WACS_DDDB
+#define WACS_D_BTEE    WACS_DDBD
+#define WACS_D_TTEE    WACS_BDDD
+#define WACS_D_HLINE   WACS_BDBD
+#define WACS_D_VLINE   WACS_DBDB
+#define WACS_D_PLUS    WACS_DDDD
+
+       /* thick lines */
+#define WACS_BTTB      NCURSES_WACS('L')
+#define WACS_TTBB      NCURSES_WACS('M')
+#define WACS_BBTT      NCURSES_WACS('K')
+#define WACS_TBBT      NCURSES_WACS('J')
+#define WACS_TBTT      NCURSES_WACS('U')
+#define WACS_TTTB      NCURSES_WACS('T')
+#define WACS_TTBT      NCURSES_WACS('V')
+#define WACS_BTTT      NCURSES_WACS('W')
+#define WACS_BTBT      NCURSES_WACS('Q')
+#define WACS_TBTB      NCURSES_WACS('X')
+#define WACS_TTTT      NCURSES_WACS('N')
+
+#define WACS_T_ULCORNER        WACS_BTTB
+#define WACS_T_LLCORNER        WACS_TTBB
+#define WACS_T_URCORNER        WACS_BBTT
+#define WACS_T_LRCORNER        WACS_TBBT
+#define WACS_T_RTEE    WACS_TBTT
+#define WACS_T_LTEE    WACS_TTTB
+#define WACS_T_BTEE    WACS_TTBT
+#define WACS_T_TTEE    WACS_BTTT
+#define WACS_T_HLINE   WACS_BTBT
+#define WACS_T_VLINE   WACS_TBTB
+#define WACS_T_PLUS    WACS_TTTT
 
 /*
  * Function prototypes for wide-character operations.
@@ -127,13 +184,13 @@ extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *);      /*
 extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *);  /* generated:WIDEC */
 extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *);          /* generated:WIDEC */
 extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *);    /* missing */
+extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *);    /* implemented */
 extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *);   /* implemented */
-extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int);       /* missing */
+extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int);       /* implemented */
 extern NCURSES_EXPORT(attr_t) term_attrs (void);                       /* implemented */
 extern NCURSES_EXPORT(int) unget_wch (const wchar_t);                  /* implemented */
 extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *);           /* implemented */
-extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, int (*)(int)); /* implemented */
+extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, NCURSES_OUTC); /* implemented */
 extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int);           /* generated:WIDEC */
 extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *);                /* implemented */
 extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int);        /* implemented */
@@ -146,7 +203,7 @@ extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,c
 extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *);    /* implemented */
 extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *);              /* implemented */
 extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *);             /* generated:WIDEC */
-extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *);           /* implemented */
+extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *);           /* generated:WIDEC */
 extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *,wint_t *, int);                /* implemented */
 extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int);        /* implemented */
 extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *);              /* implemented */
@@ -160,6 +217,16 @@ extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *);          /* implemented */
 extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *);                   /* implemented */
 extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int);        /* implemented */
 
+#if NCURSES_SP_FUNCS
+extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(term_attrs) (SCREEN*);           /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(unget_wch) (SCREEN*, const wchar_t);        /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_attr) (SCREEN*, attr_t, short, void *); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, short, void *, NCURSES_SP_OUTC);        /* implemented:SP_FUNC */
+#endif
+
+#ifndef NCURSES_NOMACROS
+
 /*
  * XSI curses macros for XPG4 conformance.
  */
@@ -186,16 +253,17 @@ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int);   /* imple
 #define ins_wch(c)                     wins_wch(stdscr,c)
 #define ins_wstr(t)                    wins_wstr(stdscr,t)
 #define inwstr(c)                      winwstr(stdscr,c)
-#define vid_attr(a,pair,opts)          vidattr(a)
 #define vline_set(c,n)                 wvline_set(stdscr,c,n)
 #define wadd_wchstr(win,str)           wadd_wchnstr(win,str,-1)
 #define waddwstr(win,wstr)             waddnwstr(win,wstr,-1)
-#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
 #define wget_wstr(w,t)                 wgetn_wstr(w,t,-1)
-#define wgetbkgrnd(win,wch)            (*wch = win->_bkgrnd, OK)
 #define win_wchstr(w,c)                        win_wchnstr(w,c,-1)
 #define wins_wstr(w,t)                 wins_nwstr(w,t,-1)
 
+#if !NCURSES_OPAQUE
+#define wgetbkgrnd(win,wch)            ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK)
+#endif
+
 #define mvadd_wch(y,x,c)               mvwadd_wch(stdscr,y,x,c)
 #define mvadd_wchnstr(y,x,s,n)         mvwadd_wchnstr(stdscr,y,x,s,n)
 #define mvadd_wchstr(y,x,s)            mvwadd_wchstr(stdscr,y,x,s)
@@ -234,4 +302,11 @@ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int);    /* imple
 #define mvwinwstr(win,y,x,c)           (wmove(win,y,x) == ERR ? ERR : winwstr(win,c))
 #define mvwvline_set(win,y,x,c,n)      (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n))
 
-#endif /* _XOPEN_SOURCE_EXTENDED */
+#endif /* NCURSES_NOMACROS */
+
+#if defined(TRACE) || defined(NCURSES_TEST)
+extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
+extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *);
+#endif
+
+#endif /* NCURSES_WIDECHAR */