1
0
mirror of https://github.com/UzixLS/pdcurses.git synced 2025-07-18 23:01:21 +03:00
This commit is contained in:
UzixLS
2016-03-24 08:41:35 +03:00
commit a215a18f76
46 changed files with 11288 additions and 0 deletions

638
curses.h Normal file
View File

@ -0,0 +1,638 @@
/* Public Domain Curses */
/* $Id: curses.h,v 1.295 2008/07/15 17:13:25 wmcbrine Exp $ */
/*----------------------------------------------------------------------*
* PDCurses *
*----------------------------------------------------------------------*/
#ifndef __PDCURSES__
#define __PDCURSES__ 1
/*man-start**************************************************************
PDCurses definitions list: (Only define those needed)
PDC_RGB True if you want to use RGB color definitions
(Red = 1, Green = 2, Blue = 4) instead of BGR.
NCURSES_MOUSE_VERSION Use the ncurses mouse API instead
of PDCurses' traditional mouse API.
PDCurses portable platform definitions list:
PDC_BUILD Defines API build version.
**man-end****************************************************************/
#define PDC_BUILD 3401
#define PDCURSES 1
//#define CHTYPE_LONG 1 /* size of chtype; long */
/*----------------------------------------------------------------------*/
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h> /* Required by X/Open usage below */
#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
extern "C"
{
# define bool _bool
#endif
#include "src/chars.h"
#include "src/keys.h"
/*----------------------------------------------------------------------
*
* PDCurses Manifest Constants
*
*/
#ifndef FALSE
# define FALSE 0
#endif
#ifndef TRUE
# define TRUE 1
#endif
#ifndef NULL
# define NULL (void *)0
#endif
#ifndef ERR
# define ERR (-1)
#endif
#ifndef OK
# define OK 0
#endif
/*----------------------------------------------------------------------
*
* PDCurses Type Declarations
*
*/
#ifdef CHTYPE_LONG
# if _LP64
typedef unsigned int chtype;
# else
typedef unsigned long chtype; /* 16-bit attr + 16-bit char */
# endif
#else
typedef unsigned short chtype; /* 8-bit attr + 8-bit char */
#endif
typedef chtype attr_t;
/*----------------------------------------------------------------------
*
* PDCurses Mouse Interface -- SYSVR4, with extensions
*
*/
typedef struct
{
int x; /* absolute column, 0 based, measured in characters */
int y; /* absolute row, 0 based, measured in characters */
short button[3]; /* state of each button */
int changes; /* flags indicating what has changed with the mouse */
} MOUSE_STATUS;
#define BUTTON_RELEASED 0x0000
#define BUTTON_PRESSED 0x0001
#define BUTTON_CLICKED 0x0002
#define BUTTON_DOUBLE_CLICKED 0x0003
#define BUTTON_TRIPLE_CLICKED 0x0004
#define BUTTON_MOVED 0x0005 /* PDCurses */
#define WHEEL_SCROLLED 0x0006 /* PDCurses */
#define BUTTON_ACTION_MASK 0x0007 /* PDCurses */
#define PDC_BUTTON_SHIFT 0x0008 /* PDCurses */
#define PDC_BUTTON_CONTROL 0x0010 /* PDCurses */
#define PDC_BUTTON_ALT 0x0020 /* PDCurses */
#define BUTTON_MODIFIER_MASK 0x0038 /* PDCurses */
#define MOUSE_X_POS(_S) (Mouse_status(_S)->x)
#define MOUSE_Y_POS(_S) (Mouse_status(_S)->y)
/*
* Bits associated with the .changes field:
* 3 2 1 0
* 210987654321098765432109876543210
* 1 <- button 1 has changed
* 10 <- button 2 has changed
* 100 <- button 3 has changed
* 1000 <- mouse has moved
* 10000 <- mouse position report
* 100000 <- mouse wheel up
* 1000000 <- mouse wheel down
*/
#define PDC_MOUSE_MOVED 0x0008
#define PDC_MOUSE_POSITION 0x0010
#define PDC_MOUSE_WHEEL_UP 0x0020
#define PDC_MOUSE_WHEEL_DOWN 0x0040
#define A_BUTTON_CHANGED(_S) (Mouse_status(_S)->changes & 7)
#define MOUSE_MOVED(_S) (Mouse_status(_S)->changes & PDC_MOUSE_MOVED)
#define MOUSE_POS_REPORT(_S) (Mouse_status(_S)->changes & PDC_MOUSE_POSITION)
#define BUTTON_CHANGED(_S,x) (Mouse_status(_S)->changes & (1 << ((x) - 1)))
#define BUTTON_STATUS(_S,x) (Mouse_status(_S)->button[(x) - 1])
#define MOUSE_WHEEL_UP(_S) (Mouse_status(_S)->changes & PDC_MOUSE_WHEEL_UP)
#define MOUSE_WHEEL_DOWN(_S) (Mouse_status(_S)->changes & PDC_MOUSE_WHEEL_DOWN)
/* mouse bit-masks */
#define BUTTON1_RELEASED 0x00000001L
#define BUTTON1_PRESSED 0x00000002L
#define BUTTON1_CLICKED 0x00000004L
#define BUTTON1_DOUBLE_CLICKED 0x00000008L
#define BUTTON1_TRIPLE_CLICKED 0x00000010L
#define BUTTON1_MOVED 0x00000010L /* PDCurses */
#define BUTTON2_RELEASED 0x00000020L
#define BUTTON2_PRESSED 0x00000040L
#define BUTTON2_CLICKED 0x00000080L
#define BUTTON2_DOUBLE_CLICKED 0x00000100L
#define BUTTON2_TRIPLE_CLICKED 0x00000200L
#define BUTTON2_MOVED 0x00000200L /* PDCurses */
#define BUTTON3_RELEASED 0x00000400L
#define BUTTON3_PRESSED 0x00000800L
#define BUTTON3_CLICKED 0x00001000L
#define BUTTON3_DOUBLE_CLICKED 0x00002000L
#define BUTTON3_TRIPLE_CLICKED 0x00004000L
#define BUTTON3_MOVED 0x00004000L /* PDCurses */
/* For the ncurses-compatible functions only, BUTTON4_PRESSED and
BUTTON5_PRESSED are returned for mouse scroll wheel up and down;
otherwise PDCurses doesn't support buttons 4 and 5 */
#define BUTTON4_RELEASED 0x00008000L
#define BUTTON4_PRESSED 0x00010000L
#define BUTTON4_CLICKED 0x00020000L
#define BUTTON4_DOUBLE_CLICKED 0x00040000L
#define BUTTON4_TRIPLE_CLICKED 0x00080000L
#define BUTTON5_RELEASED 0x00100000L
#define BUTTON5_PRESSED 0x00200000L
#define BUTTON5_CLICKED 0x00400000L
#define BUTTON5_DOUBLE_CLICKED 0x00800000L
#define BUTTON5_TRIPLE_CLICKED 0x01000000L
#define MOUSE_WHEEL_SCROLL 0x02000000L /* PDCurses */
#define BUTTON_MODIFIER_SHIFT 0x04000000L /* PDCurses */
#define BUTTON_MODIFIER_CONTROL 0x08000000L /* PDCurses */
#define BUTTON_MODIFIER_ALT 0x10000000L /* PDCurses */
#define ALL_MOUSE_EVENTS 0x1fffffffL
#define REPORT_MOUSE_POSITION 0x20000000L
/* ncurses mouse interface */
typedef unsigned long mmask_t;
typedef struct
{
short id; /* unused, always 0 */
int x, y, z; /* x, y same as MOUSE_STATUS; z unused */
mmask_t bstate; /* equivalent to changes + button[], but
in the same format as used for mousemask() */
} MEVENT;
#ifdef NCURSES_MOUSE_VERSION
# define BUTTON_SHIFT BUTTON_MODIFIER_SHIFT
# define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL
# define BUTTON_CTRL BUTTON_MODIFIER_CONTROL
# define BUTTON_ALT BUTTON_MODIFIER_ALT
#else
# define BUTTON_SHIFT PDC_BUTTON_SHIFT
# define BUTTON_CONTROL PDC_BUTTON_CONTROL
# define BUTTON_ALT PDC_BUTTON_ALT
#endif
/*----------------------------------------------------------------------
*
* PDCurses Types
*
*/
typedef struct _win WINDOW;
typedef struct _screen SCREEN;
typedef struct _session SESSION;
extern int COLORS;
extern int COLOR_PAIRS;
/*----------------------------------------------------------------------
*
* PDCurses Function Declarations
*
*/
/* Standard */
int addch(SESSION *S, const chtype);
int addchnstr(SESSION *S, const chtype *, int);
int addchstr(SESSION *S, const chtype *);
int addnstr(SESSION *S, const char *, int);
int addstr(SESSION *S, const char *);
int attroff(SESSION *S, chtype);
int attron(SESSION *S, chtype);
int attrset(SESSION *S, chtype);
int attr_get(SESSION *S, attr_t *, short *, void *);
int attr_off(SESSION *S, attr_t, void *);
int attr_on(SESSION *S, attr_t, void *);
int attr_set(SESSION *S, attr_t, short, void *);
int baudrate(SESSION *S);
int beep(SESSION *S);
int bkgd(SESSION *S, chtype);
void bkgdset(SESSION *S, chtype);
int border(SESSION *S, chtype, chtype, chtype, chtype, chtype, chtype, chtype, chtype);
int box(SESSION *S, WINDOW *, chtype, chtype);
bool can_change_color(SESSION *S);
int cbreak(SESSION *S);
int chgat(SESSION *S, int, attr_t, short, const void *);
int clearok(SESSION *S, WINDOW *, bool);
int clear(SESSION *S);
int clrtobot(SESSION *S);
int clrtoeol(SESSION *S);
int color_content(SESSION *S,short, short *, short *, short *);
int color_set(SESSION *S, short, void *);
int copywin(SESSION *S, const WINDOW *, WINDOW *, int, int, int, int, int, int, int);
int curs_set(SESSION *S, int);
int def_prog_mode(SESSION *S);
int def_shell_mode(SESSION *S);
int delay_output(SESSION *S, int);
int delch(SESSION *S);
int deleteln(SESSION *S);
void delscreen(SESSION *S);
int delwin(SESSION *S, WINDOW *);
WINDOW *derwin(SESSION *S, WINDOW *, int, int, int, int);
int doupdate(SESSION *S);
WINDOW *dupwin(SESSION *S, WINDOW *);
int echochar(SESSION *S, const chtype);
int echo(SESSION *S);
int endwin(SESSION *S);
char erasechar(SESSION *S);
int erase(SESSION *S);
void filter(SESSION *S);
int flash(SESSION *S);
int flushinp(SESSION *S);
chtype getbkgd(SESSION *S, WINDOW *);
int getnstr(SESSION *S, char *, int);
int getstr(SESSION *S, char *);
WINDOW *getwin(SESSION *S, FILE *);
int halfdelay(SESSION *S, int);
bool has_colors(SESSION *S);
bool has_ic(SESSION *S);
bool has_il(SESSION *S);
int hline(SESSION *S, chtype, int);
void idcok(SESSION *S, WINDOW *, bool);
int idlok(SESSION *S, WINDOW *, bool);
void immedok(SESSION *S, WINDOW *, bool);
int inchnstr(SESSION *S, chtype *, int);
int inchstr(SESSION *S, chtype *);
chtype inch(SESSION *S);
int init_color(SESSION *S, short, short, short, short);
int init_pair(SESSION *S, short, short, short);
WINDOW *initscr(SESSION *S, void *userargs);
int innstr(SESSION *S, char *, int);
int insch(SESSION *S, chtype);
int insdelln(SESSION *S, int);
int insertln(SESSION *S);
int insnstr(SESSION *S, const char *, int);
int insstr(SESSION *S, const char *);
int instr(SESSION *S, char *);
int intrflush(SESSION *S, WINDOW *, bool);
bool isendwin(SESSION *S);
bool is_linetouched(SESSION *S, WINDOW *, int);
bool is_wintouched(SESSION *S, WINDOW *);
const char *keyname(int);
int keypad(SESSION *S, WINDOW *, bool);
char killchar(SESSION *S);
int leaveok(SESSION *S, WINDOW *, bool);
char *longname(SESSION *S);
int meta(SESSION *S, WINDOW *, bool);
int move(SESSION *S, int, int);
int mvaddch(SESSION *S, int, int, const chtype);
int mvaddchnstr(SESSION *S, int, int, const chtype *, int);
int mvaddchstr(SESSION *S, int, int, const chtype *);
int mvaddnstr(SESSION *S, int, int, const char *, int);
int mvaddstr(SESSION *S, int, int, const char *);
int mvchgat(SESSION *S, int, int, int, attr_t, short, const void *);
int mvcur(SESSION *S, int, int, int, int);
int mvdelch(SESSION *S, int, int);
int mvderwin(SESSION *S, WINDOW *, int, int);
int mvgetch(SESSION *S, int, int);
int mvgetnstr(SESSION *S, int, int, char *, int);
int mvgetstr(SESSION *S, int, int, char *);
int mvhline(SESSION *S, int, int, chtype, int);
chtype mvinch(SESSION *S, int, int);
int mvinchnstr(SESSION *S, int, int, chtype *, int);
int mvinchstr(SESSION *S, int, int, chtype *);
int mvinnstr(SESSION *S, int, int, char *, int);
int mvinsch(SESSION *S, int, int, chtype);
int mvinsnstr(SESSION *S, int, int, const char *, int);
int mvinsstr(SESSION *S, int, int, const char *);
int mvinstr(SESSION *S, int, int, char *);
int mvprintw(SESSION *S, int, int, const char *, ...);
int mvscanw(SESSION *S, int, int, const char *, ...);
int mvvline(SESSION *S, int, int, chtype, int);
int mvwaddchnstr(SESSION *S, WINDOW *, int, int, const chtype *, int);
int mvwaddchstr(SESSION *S, WINDOW *, int, int, const chtype *);
int mvwaddch(SESSION *S, WINDOW *, int, int, const chtype);
int mvwaddnstr(SESSION *S, WINDOW *, int, int, const char *, int);
int mvwaddstr(SESSION *S, WINDOW *, int, int, const char *);
int mvwchgat(SESSION *S, WINDOW *, int, int, int, attr_t, short, const void *);
int mvwdelch(SESSION *S, WINDOW *, int, int);
int mvwgetch(SESSION *S, WINDOW *, int, int);
int mvwgetnstr(SESSION *S, WINDOW *, int, int, char *, int);
int mvwgetstr(SESSION *S, WINDOW *, int, int, char *);
int mvwhline(SESSION *S, WINDOW *, int, int, chtype, int);
int mvwinchnstr(SESSION *S, WINDOW *, int, int, chtype *, int);
int mvwinchstr(SESSION *S, WINDOW *, int, int, chtype *);
chtype mvwinch(SESSION *S, WINDOW *, int, int);
int mvwinnstr(SESSION *S, WINDOW *, int, int, char *, int);
int mvwinsch(SESSION *, WINDOW *, int, int, chtype);
int mvwinsnstr(SESSION *S, WINDOW *, int, int, const char *, int);
int mvwinsstr(SESSION *S, WINDOW *, int, int, const char *);
int mvwinstr(SESSION *S, WINDOW *, int, int, char *);
int mvwin(SESSION *S, WINDOW *, int, int);
int mvwprintw(SESSION *S, WINDOW *, int, int, const char *, ...);
int mvwscanw(SESSION *S, WINDOW *, int, int, const char *, ...);
int mvwvline(SESSION *S, WINDOW *, int, int, chtype, int);
int napms(SESSION *S, int);
WINDOW *newpad(SESSION *S, int, int);
SCREEN *newterm(SESSION *S, const char *, FILE *, FILE *, void *userargs);
WINDOW *newwin(SESSION *S, int, int, int, int);
int nl(SESSION *S);
int nocbreak(SESSION *S);
int nodelay(SESSION *S, WINDOW *, bool);
int noecho(SESSION *S);
int nonl(SESSION *S);
void noqiflush(SESSION *S);
int noraw(SESSION *S);
int notimeout(SESSION *S, WINDOW *, bool);
int overlay(SESSION *S, const WINDOW *, WINDOW *);
int overwrite(SESSION *S, const WINDOW *, WINDOW *);
int pair_content(SESSION *S, short, short *, short *);
int pechochar(SESSION *S, WINDOW *, chtype);
int pnoutrefresh(SESSION *S, WINDOW *, int, int, int, int, int, int);
int prefresh(SESSION *S, WINDOW *, int, int, int, int, int, int);
int printw(SESSION *S, const char *, ...);
int putwin(SESSION *S, WINDOW *, FILE *);
void qiflush(SESSION *S);
int raw(SESSION *S);
int redrawwin(SESSION *S, WINDOW *);
int refresh(SESSION *S);
int reset_prog_mode(SESSION *S);
int reset_shell_mode(SESSION *S);
int resetty(SESSION *S);
int ripoffline(SESSION *S, int, int (*)(WINDOW *, int));
int savetty(SESSION *S);
int scanw(SESSION *S, const char *, ...);
int scr_dump(SESSION *S, const char *);
int scr_init(SESSION *S, const char *);
int scr_restore(SESSION *S, const char *);
int scr_set(SESSION *, const char *);
int scrl(SESSION *S, int);
int scroll(SESSION *S, WINDOW *);
int scrollok(SESSION *S, WINDOW *, bool);
SCREEN *set_term(SESSION *S, SCREEN *);
int setscrreg(SESSION *S, int, int);
int slk_attroff(SESSION *S, const chtype);
int slk_attr_off(SESSION *S, const attr_t, void *);
int slk_attron(SESSION *S, const chtype);
int slk_attr_on(SESSION *S, const attr_t, void *);
int slk_attrset(SESSION *S, const chtype);
int slk_attr_set(SESSION *S, const attr_t, short, void *);
int slk_clear(SESSION *S);
int slk_color(SESSION *S, short);
int slk_init(SESSION *S, int);
char *slk_label(SESSION *S, int);
int slk_noutrefresh(SESSION *S);
int slk_refresh(SESSION *S);
int slk_restore(SESSION *S);
int slk_set(SESSION *S, int, const char *, int);
int slk_touch(SESSION *S);
int standend(SESSION *S);
int standout(SESSION *S);
int start_color(SESSION *S);
WINDOW *subpad(SESSION *S, WINDOW *, int, int, int, int);
WINDOW *subwin(SESSION *S, WINDOW *, int, int, int, int);
int syncok(SESSION *S, WINDOW *, bool);
chtype termattrs(SESSION *S);
attr_t term_attrs(SESSION *S);
char *termname(SESSION *S);
void timeout(SESSION *S, int);
int touchline(SESSION *S, WINDOW *, int, int);
int touchwin(SESSION *S, WINDOW *);
int typeahead(SESSION *S, int);
int untouchwin(SESSION *S, WINDOW *);
void use_env(SESSION *S, bool);
int vidattr(SESSION *S, chtype);
int vid_attr(SESSION *S, attr_t, short, void *);
int vidputs(SESSION *S, chtype, int (*)(int));
int vid_puts(SESSION *S, attr_t, short, void *, int (*)(int));
int vline(SESSION *S, chtype, int);
int vw_printw(SESSION *S, WINDOW *, const char *, va_list);
int vwprintw(SESSION *S, WINDOW *, const char *, va_list);
int vw_scanw(SESSION *S, WINDOW *, const char *, va_list);
int vwscanw(SESSION *S, WINDOW *, const char *, va_list);
int waddchnstr(SESSION *S, WINDOW *, const chtype *, int);
int waddchstr(SESSION *S, WINDOW *, const chtype *);
int waddch(SESSION *S, WINDOW *, const chtype);
int waddnstr(SESSION *S, WINDOW *, const char *, int);
int waddstr(SESSION *S, WINDOW *, const char *);
int wattroff(SESSION *S, WINDOW *, chtype);
int wattron(SESSION *S, WINDOW *, chtype);
int wattrset(SESSION *S, WINDOW *, chtype);
int wattr_get(SESSION *S, WINDOW *, attr_t *, short *, void *);
int wattr_off(SESSION *S, WINDOW *, attr_t, void *);
int wattr_on(SESSION *S, WINDOW *, attr_t, void *);
int wattr_set(SESSION *S, WINDOW *, attr_t, short, void *);
void wbkgdset(SESSION *S, WINDOW *, chtype);
int wbkgd(SESSION *S, WINDOW *, chtype);
int wborder(SESSION *, WINDOW *, chtype, chtype, chtype, chtype,
chtype, chtype, chtype, chtype);
int wchgat(SESSION *S, WINDOW *, int, attr_t, short, const void *);
int wclear(SESSION *S, WINDOW *);
int wclrtobot(SESSION *S, WINDOW *);
int wclrtoeol(SESSION *S, WINDOW *);
int wcolor_set(SESSION *S, WINDOW *, short, void *);
void wcursyncup(SESSION *S, WINDOW *);
int wdelch(SESSION *S, WINDOW *);
int wdeleteln(SESSION *S, WINDOW *);
int wechochar(SESSION *S, WINDOW *, const chtype);
int werase(SESSION *S, WINDOW *);
int wgetch(SESSION *S, WINDOW *);
int wgetnstr(SESSION *S, WINDOW *, char *, int);
int wgetstr(SESSION *S, WINDOW *, char *);
int whline(SESSION *S, WINDOW *, chtype, int);
int winchnstr(SESSION *S, WINDOW *, chtype *, int);
int winchstr(SESSION *S, WINDOW *, chtype *);
chtype winch(SESSION *S, WINDOW *);
int winnstr(SESSION *S, WINDOW *, char *, int);
int winsch(SESSION *S, WINDOW *, chtype);
int winsdelln(SESSION *S, WINDOW *, int);
int winsertln(SESSION *S, WINDOW *);
int winsnstr(SESSION *S, WINDOW *, const char *, int);
int winsstr(SESSION *S, WINDOW *, const char *);
int winstr(SESSION *S, WINDOW *, char *);
int wmove(SESSION *S, WINDOW *, int, int);
int wnoutrefresh(SESSION *S, WINDOW *);
int wprintw(SESSION *S, WINDOW *, const char *, ...);
int wredrawln(SESSION *S, WINDOW *, int, int);
int wrefresh(SESSION *S, WINDOW *);
int wscanw(SESSION *S, WINDOW *, const char *, ...);
int wscrl(SESSION *S, WINDOW *, int);
int wsetscrreg(SESSION *S, WINDOW *, int, int);
int wstandend(SESSION *S, WINDOW *);
int wstandout(SESSION *S, WINDOW *);
void wsyncdown(SESSION *S, WINDOW *);
void wsyncup(SESSION *S, WINDOW *);
void wtimeout(SESSION *S, WINDOW *, int);
int wtouchln(SESSION *S, WINDOW *, int, int, int);
int wvline(SESSION *S, WINDOW *, chtype, int);
/* Quasi-standard */
chtype getattrs(WINDOW *);
int getbegx(WINDOW *);
int getbegy(WINDOW *);
int getmaxx(WINDOW *);
int getmaxy(WINDOW *);
int getparx(WINDOW *);
int getpary(WINDOW *);
int getcurx(WINDOW *);
int getcury(WINDOW *);
char *unctrl(chtype);
int crmode(SESSION *);
int nocrmode(SESSION *);
int draino(SESSION *S, int);
int resetterm(SESSION *S);
int fixterm(SESSION *S);
int saveterm(SESSION *S);
int setsyx(SESSION *S, int, int);
int mouse_set(SESSION *S, unsigned long);
int mouse_on(SESSION *S, unsigned long);
int mouse_off(SESSION *S, unsigned long);
int request_mouse_pos(SESSION *S);
int map_button(SESSION *S, unsigned long);
void wmouse_position(SESSION *S, WINDOW *, int *, int *);
unsigned long getmouse(SESSION *S);
unsigned long getbmap(SESSION *S);
/* ncurses */
int assume_default_colors(SESSION *S, int, int);
const char *curses_version(void);
bool has_key(int);
int use_default_colors(SESSION *S);
int wresize(SESSION *S, WINDOW *, int, int);
int mouseinterval(SESSION *S, int);
mmask_t mousemask(SESSION *S, mmask_t, mmask_t *);
bool mouse_trafo(SESSION *S, int *, int *, bool);
int nc_getmouse(SESSION *S, MEVENT *);
int ungetmouse(SESSION *S, MEVENT *);
bool wenclose(const WINDOW *, int, int);
bool wmouse_trafo(const WINDOW *, int *, int *, bool);
/* PDCurses */
int addrawch(SESSION *, chtype);
int insrawch(SESSION *, chtype);
bool is_termresized(SESSION *);
int mvaddrawch(SESSION *, int, int, chtype);
int mvdeleteln(SESSION *, int, int);
int mvinsertln(SESSION *, int, int);
int mvinsrawch(SESSION *, int, int, chtype);
int mvwaddrawch(SESSION *, WINDOW *, int, int, chtype);
int mvwdeleteln(SESSION *, WINDOW *, int, int);
int mvwinsertln(SESSION *, WINDOW *, int, int);
int mvwinsrawch(SESSION *, WINDOW *, int, int, chtype);
int raw_output(SESSION *, bool);
int resize_term(SESSION *, int, int);
WINDOW *resize_window(SESSION *, WINDOW *, int, int);
int waddrawch(SESSION *, WINDOW *, chtype);
int winsrawch(SESSION *, WINDOW *, chtype);
char wordchar(SESSION *);
int PDC_ungetch(SESSION *, int);
int PDC_set_blink(SESSION *, bool);
int PDC_set_line_color(SESSION *, short);
void PDC_set_title(SESSION *, const char *);
int PDC_clearclipboard(SESSION *S);
int PDC_freeclipboard(SESSION *S, char *);
int PDC_getclipboard(SESSION *S, char **, long *);
int PDC_setclipboard(SESSION *S, const char *, long);
unsigned long PDC_get_input_fd(SESSION *S);
unsigned long PDC_get_key_modifiers(SESSION *S);
int PDC_return_key_modifiers(SESSION *, bool);
int PDC_save_key_modifiers(SESSION *, bool);
/*** Functions defined as macros ***/
/* getch() and ungetch() conflict with some DOS libraries */
#define getch(_S) wgetch((_S), stdscr(_S))
#define ungetch(_S, ch) PDC_ungetch((_S),(ch))
#define COLOR_PAIR(n) (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR)
#define PAIR_NUMBER(n) (((n) & A_COLOR) >> PDC_COLOR_SHIFT)
/* These will _only_ work as macros */
#define getbegyx(w, y, x) (y = getbegy(w), x = getbegx(w))
#define getmaxyx(w, y, x) (y = getmaxy(w), x = getmaxx(w))
#define getparyx(w, y, x) (y = getpary(w), x = getparx(w))
#define getyx(w, y, x) (y = getcury(w), x = getcurx(w))
#define getsyx(y, x) { if (curscr->_leaveit) (y)=(x)=-1; \
else getyx(curscr,(y),(x)); }
#ifdef NCURSES_MOUSE_VERSION
# define getmouse(x) nc_getmouse(x)
#endif
extern int LINES(SESSION *);
extern int COLS(SESSION *);
extern WINDOW* stdscr(SESSION *);
extern MOUSE_STATUS *Mouse_status(SESSION *);
extern unsigned size_of_SESSION(void);
/* return codes from PDC_getclipboard() and PDC_setclipboard() calls */
#define PDC_CLIP_SUCCESS 0
#define PDC_CLIP_ACCESS_ERROR 1
#define PDC_CLIP_EMPTY 2
#define PDC_CLIP_MEMORY_ERROR 3
/* PDCurses key modifier masks */
#define PDC_KEY_MODIFIER_SHIFT 1
#define PDC_KEY_MODIFIER_CONTROL 2
#define PDC_KEY_MODIFIER_ALT 4
#define PDC_KEY_MODIFIER_NUMLOCK 8
#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS)
# undef bool
}
#endif
#endif /* __PDCURSES__ */