#ifndef _G_curses_h #include <_G_config.h> #if _G_HAVE_CURSES #ifdef __curses_h_recursive #include_next #else #define __curses_h_recursive extern "C" { #include_next /* Some systems (SVR4 for example) allow the definition of CHTYPE to set the type of some arguments to the curses functions. It can be set to "char" to save space, or it can be set to something longer to store both a character and some attributes. By default they do not define CHTYPE, and when CHTYPE is not defined, the default type is "unsigned long" instead of the traditional "char". However, SVR4 does define _VR3_COMPAT_CODE, so we can use that to detect when we should use the SVR4 default if CHTYPE is not defined. For other systems, just default to the traditional default "char". */ #ifdef CHTYPE typedef CHTYPE _G_chtype; /* Use specified type. */ #else #ifdef _VR3_COMPAT_CODE typedef unsigned long _G_chtype; /* SVR4 default is "unsigned long" */ #elif defined(hpux) typedef unsigned int _G_chtype; #else typedef char _G_chtype; /* Traditional default is "char" */ #endif #endif /* Some args are conceptually const, but SVR4 (and others?) get it wrong. */ #define _C_const /* const */ WINDOW * (newwin)(int lines, int cols, int sy, int sx); WINDOW * (subwin)(WINDOW *w, int lines, int cols, int sy, int sx); WINDOW * (initscr)(); int (box) (WINDOW*, int, int); int (delwin)(WINDOW*); int (getcurx)(WINDOW*); int (getcury)(WINDOW*); int (mvcur)(int, int, int, int); int (overlay)(WINDOW*, WINDOW*); int (overwrite)(WINDOW*, WINDOW*); int (scroll)(WINDOW*); int (touchwin)(WINDOW*); int (waddch)(WINDOW*, int); int (waddstr)(WINDOW*, _C_const char*); int (wclear)(WINDOW*); int (wclrtobot)(WINDOW*); int (wclrtoeol)(WINDOW*); int (wdelch)(WINDOW*); int (wdeleteln)(WINDOW*); int (werase)(WINDOW*); int (wgetch)(WINDOW*); int (wgetstr)(WINDOW*, char*); int (winsch)(WINDOW*, int); int (winsertln)(WINDOW*); int (wmove)(WINDOW*, int, int); int (wrefresh)(WINDOW*); char *(wstandend)(WINDOW*); char *(wstandout)(WINDOW*); // SVR4 rather inanely bundles the format-string parameter with the '...'. // This breaks VMS, and I don't want to penalize VMS for being right for once! #ifdef _VR3_COMPAT_CODE /* Magic cookie to recognize SVR4 */ #define _CURSES_FORMAT_ARG /*const char* fmt, */ #else #define _CURSES_FORMAT_ARG const char* fmt, #endif int (wprintw)(WINDOW*, _CURSES_FORMAT_ARG ...); int (mvwprintw)(WINDOW*, int y, int x, _CURSES_FORMAT_ARG ...); int (wscanw)(WINDOW*, _CURSES_FORMAT_ARG ...); int (mvwscanw)(WINDOW*, int, int, _CURSES_FORMAT_ARG ...); int (endwin)(); } #define _G_curses_h #endif #endif /* _G_HAVE_CURSES */ #endif /* _G_curses_h */