/* This is an inclusion for Curses.c.
**
**
** CursesFun.c -- the functions
**
** This is an inclusion for Curses.c
**
** This contains an XS function for each Curses function that we know about,
** named e.g. 'XS_Curses_addch'. If this system's Curses libary does not
** contain that function, the XS function just calls 'c_fun_not_there'
** (presumed to exist in the program that includes CursesFun.c).
**
** Copyright (c) 1994-2000 William Setzer
**
** You may distribute under the terms of either the Artistic License
** or the GNU General Public License, as specified in the README file.
*/
/* curs_addch */
XS(XS_Curses_addch)
{
dXSARGS;
#ifdef C_ADDCH
c_countargs("addch", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ch = c_sv2chtype(ST(c_arg));
int ret = c_mret == ERR ? ERR : waddch(win, ch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("addch");
XSRETURN(0);
#endif
}
XS(XS_Curses_echochar)
{
dXSARGS;
#ifdef C_ECHOCHAR
c_countargs("echochar", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ch = c_sv2chtype(ST(c_arg));
int ret = c_mret == ERR ? ERR : wechochar(win, ch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("echochar");
XSRETURN(0);
#endif
}
/* curs_addchstr */
XS(XS_Curses_addchstr)
{
dXSARGS;
#ifdef C_ADDCHSTR
c_countargs("addchstr", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype *str = (chtype *)SvPV_nolen(ST(c_arg));
int ret = c_mret == ERR ? ERR : waddchstr(win, str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("addchstr");
XSRETURN(0);
#endif
}
XS(XS_Curses_addchnstr)
{
dXSARGS;
#ifdef C_ADDCHNSTR
c_countargs("addchnstr", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype *str = (chtype *)SvPV_nolen(ST(c_arg));
int n = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : waddchnstr(win, str, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("addchnstr");
XSRETURN(0);
#endif
}
/* curs_addstr */
XS(XS_Curses_addstr)
{
dXSARGS;
#ifdef C_ADDSTR
c_countargs("addstr", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
char * str = (char *)SvPV_nolen(ST(c_arg));
int ret = c_mret == ERR ? ERR : waddstr(win, str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("addstr");
XSRETURN(0);
#endif
}
XS(XS_Curses_addnstr)
{
dXSARGS;
#ifdef C_ADDNSTR
c_countargs("addnstr", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
char * str = (char *)SvPV_nolen(ST(c_arg));
int n = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : waddnstr(win, str, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("addnstr");
XSRETURN(0);
#endif
}
/* curs_attr */
XS(XS_Curses_attroff)
{
dXSARGS;
#ifdef C_ATTROFF
c_countargs("attroff", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int attrs = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : wattroff(win, attrs);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("attroff");
XSRETURN(0);
#endif
}
XS(XS_Curses_attron)
{
dXSARGS;
#ifdef C_ATTRON
c_countargs("attron", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int attrs = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : wattron(win, attrs);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("attron");
XSRETURN(0);
#endif
}
XS(XS_Curses_attrset)
{
dXSARGS;
#ifdef C_ATTRSET
c_countargs("attrset", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int attrs = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : wattrset(win, attrs);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("attrset");
XSRETURN(0);
#endif
}
XS(XS_Curses_standend)
{
dXSARGS;
#ifdef C_STANDEND
c_countargs("standend", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : (int)wstandend(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("standend");
XSRETURN(0);
#endif
}
XS(XS_Curses_standout)
{
dXSARGS;
#ifdef C_STANDOUT
c_countargs("standout", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : (int)wstandout(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("standout");
XSRETURN(0);
#endif
}
XS(XS_Curses_attr_get)
{
dXSARGS;
#ifdef C_ATTR_GET
c_countargs("attr_get", items, 3);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
attr_t attrs = 0;
short color = 0;
void * opts = 0;
int ret = c_mret == ERR ? ERR : wattr_get(win, &attrs, &color, opts);
sv_setiv(ST(c_arg), (IV)attrs);;
sv_setiv(ST(c_arg+1), (IV)color);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("attr_get");
XSRETURN(0);
#endif
}
XS(XS_Curses_attr_off)
{
dXSARGS;
#ifdef C_ATTR_OFF
c_countargs("attr_off", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
attr_t attrs = (attr_t)SvIV(ST(c_arg));
void * opts = 0;
int ret = c_mret == ERR ? ERR : wattr_off(win, attrs, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("attr_off");
XSRETURN(0);
#endif
}
XS(XS_Curses_attr_on)
{
dXSARGS;
#ifdef C_ATTR_ON
c_countargs("attr_on", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
attr_t attrs = (attr_t)SvIV(ST(c_arg));
void * opts = 0;
int ret = c_mret == ERR ? ERR : wattr_on(win, attrs, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("attr_on");
XSRETURN(0);
#endif
}
XS(XS_Curses_attr_set)
{
dXSARGS;
#ifdef C_ATTR_SET
c_countargs("attr_set", items, 3);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
attr_t attrs = (attr_t)SvIV(ST(c_arg));
short color = (short)SvIV(ST(c_arg+1));
void * opts = 0;
int ret = c_mret == ERR ? ERR : wattr_set(win, attrs, color, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("attr_set");
XSRETURN(0);
#endif
}
XS(XS_Curses_chgat)
{
dXSARGS;
#ifdef C_CHGAT
/* Our 4th argument is meaningless. It mirrors the meaningless "opts"
argument in the Curses C library.
In Perl Curses 1.16, we tried reducing this to 3 as a user thought
a 3-argument call ought to work, and we thought this number might
just be the _minimum_ argument count. Well, it's not. So for
backward compatibility if nothing else, it has to be 4. Fixed
back to 4 in 1.18.
*/
c_countargs("chgat", items, 4);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int n = (int)SvIV(ST(c_arg));
attr_t attrs = (attr_t)SvIV(ST(c_arg+1));
short color = (short)SvIV(ST(c_arg+2));
void * opts = 0;
int ret = c_mret == ERR ? ERR : wchgat(win, n, attrs, color, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("chgat");
XSRETURN(0);
#endif
}
XS(XS_Curses_COLOR_PAIR)
{
dXSARGS;
#ifdef C_COLOR_PAIR
c_exactargs("COLOR_PAIR", items, 1);
{
int n = (int)SvIV(ST(0));
int ret = COLOR_PAIR(n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("COLOR_PAIR");
XSRETURN(0);
#endif
}
XS(XS_Curses_PAIR_NUMBER)
{
dXSARGS;
#ifdef C_PAIR_NUMBER
c_exactargs("PAIR_NUMBER", items, 1);
{
int attrs = (int)SvIV(ST(0));
int ret = PAIR_NUMBER(attrs);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("PAIR_NUMBER");
XSRETURN(0);
#endif
}
/* curs_beep */
XS(XS_Curses_beep)
{
dXSARGS;
#ifdef C_BEEP
c_exactargs("beep", items, 0);
{
int ret = beep();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("beep");
XSRETURN(0);
#endif
}
XS(XS_Curses_flash)
{
dXSARGS;
#ifdef C_FLASH
c_exactargs("flash", items, 0);
{
int ret = flash();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("flash");
XSRETURN(0);
#endif
}
/* curs_bkgd */
XS(XS_Curses_bkgd)
{
dXSARGS;
#ifdef C_BKGD
c_countargs("bkgd", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ch = c_sv2chtype(ST(c_arg));
int ret = c_mret == ERR ? ERR : wbkgd(win, ch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("bkgd");
XSRETURN(0);
#endif
}
XS(XS_Curses_bkgdset)
{
dXSARGS;
#ifdef C_BKGDSET
c_countargs("bkgdset", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ch = c_sv2chtype(ST(c_arg));
if (c_mret == OK) { wbkgdset(win, ch); }
}
XSRETURN(0);
#else
c_fun_not_there("bkgdset");
XSRETURN(0);
#endif
}
XS(XS_Curses_getbkgd)
{
dXSARGS;
#ifdef C_GETBKGD
c_countargs("getbkgd", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ret = c_mret == ERR ? ERR : getbkgd(win);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("getbkgd");
XSRETURN(0);
#endif
}
/* curs_border */
XS(XS_Curses_border)
{
dXSARGS;
#ifdef C_BORDER
c_countargs("border", items, 8);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ls = c_sv2chtype(ST(c_arg));
chtype rs_ = c_sv2chtype(ST(c_arg+1));
chtype ts = c_sv2chtype(ST(c_arg+2));
chtype bs = c_sv2chtype(ST(c_arg+3));
chtype tl = c_sv2chtype(ST(c_arg+4));
chtype tr = c_sv2chtype(ST(c_arg+5));
chtype bl = c_sv2chtype(ST(c_arg+6));
chtype br = c_sv2chtype(ST(c_arg+7));
int ret = c_mret == ERR ? ERR : wborder(win, ls, rs_, ts, bs, tl, tr, bl, br);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("border");
XSRETURN(0);
#endif
}
XS(XS_Curses_box)
{
dXSARGS;
#ifdef C_BOX
c_countargs("box", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype verch = c_sv2chtype(ST(c_arg));
chtype horch = c_sv2chtype(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : box(win, verch, horch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("box");
XSRETURN(0);
#endif
}
XS(XS_Curses_hline)
{
dXSARGS;
#ifdef C_HLINE
c_countargs("hline", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ch = c_sv2chtype(ST(c_arg));
int n = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : whline(win, ch, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("hline");
XSRETURN(0);
#endif
}
XS(XS_Curses_vline)
{
dXSARGS;
#ifdef C_VLINE
c_countargs("vline", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ch = c_sv2chtype(ST(c_arg));
int n = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : wvline(win, ch, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("vline");
XSRETURN(0);
#endif
}
/* curs_clear */
XS(XS_Curses_erase)
{
dXSARGS;
#ifdef C_ERASE
c_countargs("erase", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : werase(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("erase");
XSRETURN(0);
#endif
}
XS(XS_Curses_clear)
{
dXSARGS;
#ifdef C_CLEAR
c_countargs("clear", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : wclear(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("clear");
XSRETURN(0);
#endif
}
XS(XS_Curses_clrtobot)
{
dXSARGS;
#ifdef C_CLRTOBOT
c_countargs("clrtobot", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : wclrtobot(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("clrtobot");
XSRETURN(0);
#endif
}
XS(XS_Curses_clrtoeol)
{
dXSARGS;
#ifdef C_CLRTOEOL
c_countargs("clrtoeol", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : wclrtoeol(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("clrtoeol");
XSRETURN(0);
#endif
}
/* curs_color */
XS(XS_Curses_start_color)
{
dXSARGS;
#ifdef C_START_COLOR
c_exactargs("start_color", items, 0);
{
int ret = start_color();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("start_color");
XSRETURN(0);
#endif
}
XS(XS_Curses_init_pair)
{
dXSARGS;
#ifdef C_INIT_PAIR
c_exactargs("init_pair", items, 3);
{
short pair = (short)SvIV(ST(0));
short f = (short)SvIV(ST(1));
short b = (short)SvIV(ST(2));
int ret = init_pair(pair, f, b);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("init_pair");
XSRETURN(0);
#endif
}
XS(XS_Curses_init_color)
{
dXSARGS;
#ifdef C_INIT_COLOR
c_exactargs("init_color", items, 4);
{
short color = (short)SvIV(ST(0));
short r = (short)SvIV(ST(1));
short g = (short)SvIV(ST(2));
short b = (short)SvIV(ST(3));
int ret = init_color(color, r, g, b);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("init_color");
XSRETURN(0);
#endif
}
XS(XS_Curses_has_colors)
{
dXSARGS;
#ifdef C_HAS_COLORS
c_exactargs("has_colors", items, 0);
{
bool ret = has_colors();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("has_colors");
XSRETURN(0);
#endif
}
XS(XS_Curses_can_change_color)
{
dXSARGS;
#ifdef C_CAN_CHANGE_COLOR
c_exactargs("can_change_color", items, 0);
{
bool ret = can_change_color();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("can_change_color");
XSRETURN(0);
#endif
}
XS(XS_Curses_color_content)
{
dXSARGS;
#ifdef C_COLOR_CONTENT
c_exactargs("color_content", items, 4);
{
short color = (short)SvIV(ST(0));
short r = 0;
short g = 0;
short b = 0;
int ret = color_content(color, &r, &g, &b);
sv_setiv(ST(1), (IV)r);;
sv_setiv(ST(2), (IV)g);;
sv_setiv(ST(3), (IV)b);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("color_content");
XSRETURN(0);
#endif
}
XS(XS_Curses_pair_content)
{
dXSARGS;
#ifdef C_PAIR_CONTENT
c_exactargs("pair_content", items, 3);
{
short pair = (short)SvIV(ST(0));
short f = 0;
short b = 0;
int ret = pair_content(pair, &f, &b);
sv_setiv(ST(1), (IV)f);;
sv_setiv(ST(2), (IV)b);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("pair_content");
XSRETURN(0);
#endif
}
/* curs_delch */
XS(XS_Curses_delch)
{
dXSARGS;
#ifdef C_DELCH
c_countargs("delch", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : wdelch(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("delch");
XSRETURN(0);
#endif
}
/* curs_deleteln */
XS(XS_Curses_deleteln)
{
dXSARGS;
#ifdef C_DELETELN
c_countargs("deleteln", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : wdeleteln(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("deleteln");
XSRETURN(0);
#endif
}
XS(XS_Curses_insdelln)
{
dXSARGS;
#ifdef C_INSDELLN
c_countargs("insdelln", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int n = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : winsdelln(win, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("insdelln");
XSRETURN(0);
#endif
}
XS(XS_Curses_insertln)
{
dXSARGS;
#ifdef C_INSERTLN
c_countargs("insertln", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : winsertln(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("insertln");
XSRETURN(0);
#endif
}
/* curs_getch */
XS(XS_Curses_getch)
{
dXSARGS;
#ifdef C_GETCH
c_countargs("getch", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ret = c_mret == ERR ? ERR : wgetch(win);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("getch");
XSRETURN(0);
#endif
}
XS(XS_Curses_ungetch)
{
dXSARGS;
#ifdef C_UNGETCH
c_exactargs("ungetch", items, 1);
{
chtype ch = c_sv2chtype(ST(0));
int ret = ungetch(ch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("ungetch");
XSRETURN(0);
#endif
}
XS(XS_Curses_has_key)
{
dXSARGS;
#ifdef C_HAS_KEY
c_exactargs("has_key", items, 1);
{
int ch = (int)SvIV(ST(0));
int ret = has_key(ch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("has_key");
XSRETURN(0);
#endif
}
XS(XS_Curses_KEY_F)
{
dXSARGS;
#ifdef C_KEY_F
c_exactargs("KEY_F", items, 1);
{
int n = (int)SvIV(ST(0));
chtype ret = KEY_F(n);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("KEY_F");
XSRETURN(0);
#endif
}
/* curs_getstr */
XS(XS_Curses_getstr)
{
dXSARGS;
#ifdef C_GETSTR
c_countargs("getstr", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
char * str = (char *)sv_grow(ST(c_arg), 250);
int ret = c_mret == ERR ? ERR : wgetstr(win, str);
c_setchar(ST(c_arg), str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("getstr");
XSRETURN(0);
#endif
}
XS(XS_Curses_getnstr)
{
dXSARGS;
#ifdef C_GETNSTR
c_countargs("getnstr", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int n = (int)SvIV(ST(c_arg+1));
char * str = (char *)sv_grow(ST(c_arg), n+1);
int ret = c_mret == ERR ? ERR : wgetnstr(win, str, n);
c_setchar(ST(c_arg), str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("getnstr");
XSRETURN(0);
#endif
}
/* curs_getyx */
XS(XS_Curses_getyx)
{
dXSARGS;
#ifdef C_GETYX
c_countargs("getyx", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = 0;
int x = 0;
if (c_mret == OK) { getyx(win, y, x); }
sv_setiv(ST(c_arg), (IV)y);;
sv_setiv(ST(c_arg+1), (IV)x);;
}
XSRETURN(0);
#else
c_fun_not_there("getyx");
XSRETURN(0);
#endif
}
XS(XS_Curses_getparyx)
{
dXSARGS;
#ifdef C_GETPARYX
c_countargs("getparyx", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = 0;
int x = 0;
if (c_mret == OK) { getparyx(win, y, x); }
sv_setiv(ST(c_arg), (IV)y);;
sv_setiv(ST(c_arg+1), (IV)x);;
}
XSRETURN(0);
#else
c_fun_not_there("getparyx");
XSRETURN(0);
#endif
}
XS(XS_Curses_getbegyx)
{
dXSARGS;
#ifdef C_GETBEGYX
c_countargs("getbegyx", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = 0;
int x = 0;
if (c_mret == OK) { getbegyx(win, y, x); }
sv_setiv(ST(c_arg), (IV)y);;
sv_setiv(ST(c_arg+1), (IV)x);;
}
XSRETURN(0);
#else
c_fun_not_there("getbegyx");
XSRETURN(0);
#endif
}
XS(XS_Curses_getmaxyx)
{
dXSARGS;
#ifdef C_GETMAXYX
c_countargs("getmaxyx", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = 0;
int x = 0;
if (c_mret == OK) { getmaxyx(win, y, x); }
sv_setiv(ST(c_arg), (IV)y);;
sv_setiv(ST(c_arg+1), (IV)x);;
}
XSRETURN(0);
#else
c_fun_not_there("getmaxyx");
XSRETURN(0);
#endif
}
/* curs_inch */
XS(XS_Curses_inch)
{
dXSARGS;
#ifdef C_INCH
c_countargs("inch", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ret = c_mret == ERR ? ERR : winch(win);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("inch");
XSRETURN(0);
#endif
}
/* curs_inchstr */
XS(XS_Curses_inchstr)
{
dXSARGS;
#ifdef C_INCHSTR
c_countargs("inchstr", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype *str = (chtype *)sv_grow(ST(c_arg), (250)*sizeof(chtype));
int ret = c_mret == ERR ? ERR : winchstr(win, str);
c_setchtype(ST(c_arg), str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("inchstr");
XSRETURN(0);
#endif
}
XS(XS_Curses_inchnstr)
{
dXSARGS;
#ifdef C_INCHNSTR
c_countargs("inchnstr", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int n = (int)SvIV(ST(c_arg+1));
chtype *str = (chtype *)sv_grow(ST(c_arg), (n+1)*sizeof(chtype));
int ret = c_mret == ERR ? ERR : winchnstr(win, str, n);
c_setchtype(ST(c_arg), str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("inchnstr");
XSRETURN(0);
#endif
}
/* curs_initscr */
XS(XS_Curses_initscr)
{
dXSARGS;
#ifdef C_INITSCR
c_exactargs("initscr", items, 0);
{
WINDOW * ret = initscr();
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("initscr");
XSRETURN(0);
#endif
}
XS(XS_Curses_endwin)
{
dXSARGS;
#ifdef C_ENDWIN
c_exactargs("endwin", items, 0);
{
int ret = endwin();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("endwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_isendwin)
{
dXSARGS;
#ifdef C_ISENDWIN
c_exactargs("isendwin", items, 0);
{
int ret = isendwin();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("isendwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_newterm)
{
dXSARGS;
#ifdef C_NEWTERM
c_exactargs("newterm", items, 3);
{
char * type = ST(0) != &PL_sv_undef ? (char *)SvPV_nolen(ST(0)) : NULL;
/* IoIFP() returns a FILE * with some Perl cores, and PerlIo with
others. We need FILE *. PerlIO_findFILE() takes either a FILE * or
PerlIo as input and returns a FILE *.
*/
FILE * outfd = PerlIO_findFILE(IoIFP(sv_2io(ST(1))));
FILE * infd = PerlIO_findFILE(IoIFP(sv_2io(ST(2))));
SCREEN * ret = newterm(type, outfd, infd);
ST(0) = sv_newmortal();
c_screen2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("newterm");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_term)
{
dXSARGS;
#ifdef C_SET_TERM
c_exactargs("set_term", items, 1);
{
SCREEN *new = c_sv2screen(ST(0), 0);
SCREEN * ret = set_term(new);
ST(0) = sv_newmortal();
c_screen2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_term");
XSRETURN(0);
#endif
}
XS(XS_Curses_delscreen)
{
dXSARGS;
#ifdef C_DELSCREEN
c_exactargs("delscreen", items, 1);
{
SCREEN *sp = c_sv2screen(ST(0), 0);
delscreen(sp);
}
XSRETURN(0);
#else
c_fun_not_there("delscreen");
XSRETURN(0);
#endif
}
/* curs_inopts */
#ifdef C_INTCBREAK
XS(XS_Curses_cbreak)
{
dXSARGS;
#ifdef C_CBREAK
c_exactargs("cbreak", items, 0);
{
int ret = cbreak();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("cbreak");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_cbreak)
{
dXSARGS;
#ifdef C_CBREAK
c_exactargs("cbreak", items, 0);
{
cbreak();
}
XSRETURN(0);
#else
c_fun_not_there("cbreak");
XSRETURN(0);
#endif
}
#endif
#ifdef C_INTNOCBREAK
XS(XS_Curses_nocbreak)
{
dXSARGS;
#ifdef C_NOCBREAK
c_exactargs("nocbreak", items, 0);
{
int ret = nocbreak();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("nocbreak");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_nocbreak)
{
dXSARGS;
#ifdef C_NOCBREAK
c_exactargs("nocbreak", items, 0);
{
nocbreak();
}
XSRETURN(0);
#else
c_fun_not_there("nocbreak");
XSRETURN(0);
#endif
}
#endif
#ifdef C_INTECHO
XS(XS_Curses_echo)
{
dXSARGS;
#ifdef C_ECHO
c_exactargs("echo", items, 0);
{
int ret = echo();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("echo");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_echo)
{
dXSARGS;
#ifdef C_ECHO
c_exactargs("echo", items, 0);
{
echo();
}
XSRETURN(0);
#else
c_fun_not_there("echo");
XSRETURN(0);
#endif
}
#endif
#ifdef C_INTNOECHO
XS(XS_Curses_noecho)
{
dXSARGS;
#ifdef C_NOECHO
c_exactargs("noecho", items, 0);
{
int ret = noecho();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("noecho");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_noecho)
{
dXSARGS;
#ifdef C_NOECHO
c_exactargs("noecho", items, 0);
{
noecho();
}
XSRETURN(0);
#else
c_fun_not_there("noecho");
XSRETURN(0);
#endif
}
#endif
XS(XS_Curses_halfdelay)
{
dXSARGS;
#ifdef C_HALFDELAY
c_exactargs("halfdelay", items, 1);
{
int tenths = (int)SvIV(ST(0));
int ret = halfdelay(tenths);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("halfdelay");
XSRETURN(0);
#endif
}
XS(XS_Curses_intrflush)
{
dXSARGS;
#ifdef C_INTRFLUSH
c_countargs("intrflush", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : intrflush(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("intrflush");
XSRETURN(0);
#endif
}
XS(XS_Curses_keypad)
{
dXSARGS;
#ifdef C_KEYPAD
c_countargs("keypad", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : keypad(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("keypad");
XSRETURN(0);
#endif
}
XS(XS_Curses_meta)
{
dXSARGS;
#ifdef C_META
c_countargs("meta", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : meta(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("meta");
XSRETURN(0);
#endif
}
XS(XS_Curses_nodelay)
{
dXSARGS;
#ifdef C_NODELAY
c_countargs("nodelay", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : nodelay(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("nodelay");
XSRETURN(0);
#endif
}
XS(XS_Curses_notimeout)
{
dXSARGS;
#ifdef C_NOTIMEOUT
c_countargs("notimeout", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : notimeout(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("notimeout");
XSRETURN(0);
#endif
}
#ifdef C_INTRAW
XS(XS_Curses_raw)
{
dXSARGS;
#ifdef C_RAW
c_exactargs("raw", items, 0);
{
int ret = raw();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("raw");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_raw)
{
dXSARGS;
#ifdef C_RAW
c_exactargs("raw", items, 0);
{
raw();
}
XSRETURN(0);
#else
c_fun_not_there("raw");
XSRETURN(0);
#endif
}
#endif
#ifdef C_INTNORAW
XS(XS_Curses_noraw)
{
dXSARGS;
#ifdef C_NORAW
c_exactargs("noraw", items, 0);
{
int ret = noraw();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("noraw");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_noraw)
{
dXSARGS;
#ifdef C_NORAW
c_exactargs("noraw", items, 0);
{
noraw();
}
XSRETURN(0);
#else
c_fun_not_there("noraw");
XSRETURN(0);
#endif
}
#endif
XS(XS_Curses_qiflush)
{
dXSARGS;
#ifdef C_QIFLUSH
c_exactargs("qiflush", items, 0);
{
qiflush();
}
XSRETURN(0);
#else
c_fun_not_there("qiflush");
XSRETURN(0);
#endif
}
XS(XS_Curses_noqiflush)
{
dXSARGS;
#ifdef C_NOQIFLUSH
c_exactargs("noqiflush", items, 0);
{
noqiflush();
}
XSRETURN(0);
#else
c_fun_not_there("noqiflush");
XSRETURN(0);
#endif
}
XS(XS_Curses_timeout)
{
dXSARGS;
#ifdef C_TIMEOUT
c_countargs("timeout", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int delay = (int)SvIV(ST(c_arg));
if (c_mret == OK) { wtimeout(win, delay); }
}
XSRETURN(0);
#else
c_fun_not_there("timeout");
XSRETURN(0);
#endif
}
XS(XS_Curses_typeahead)
{
dXSARGS;
#ifdef C_TYPEAHEAD
c_exactargs("typeahead", items, 1);
{
int fd = (int)SvIV(ST(0));
int ret = typeahead(fd);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("typeahead");
XSRETURN(0);
#endif
}
/* curs_insch */
XS(XS_Curses_insch)
{
dXSARGS;
#ifdef C_INSCH
c_countargs("insch", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
chtype ch = c_sv2chtype(ST(c_arg));
int ret = c_mret == ERR ? ERR : winsch(win, ch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("insch");
XSRETURN(0);
#endif
}
/* curs_insstr */
XS(XS_Curses_insstr)
{
dXSARGS;
#ifdef C_INSSTR
c_countargs("insstr", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
char * str = (char *)SvPV_nolen(ST(c_arg));
int ret = c_mret == ERR ? ERR : winsstr(win, str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("insstr");
XSRETURN(0);
#endif
}
XS(XS_Curses_insnstr)
{
dXSARGS;
#ifdef C_INSNSTR
c_countargs("insnstr", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
char * str = (char *)SvPV_nolen(ST(c_arg));
int n = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : winsnstr(win, str, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("insnstr");
XSRETURN(0);
#endif
}
/* curs_instr */
XS(XS_Curses_instr)
{
dXSARGS;
#ifdef C_INSTR
c_countargs("instr", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
char * str = (char *)sv_grow(ST(c_arg), 250);
int ret = c_mret == ERR ? ERR : winstr(win, str);
c_setchar(ST(c_arg), str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("instr");
XSRETURN(0);
#endif
}
XS(XS_Curses_innstr)
{
dXSARGS;
#ifdef C_INNSTR
c_countargs("innstr", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int n = (int)SvIV(ST(c_arg+1));
char * str = (char *)sv_grow(ST(c_arg), n+1);
int ret = c_mret == ERR ? ERR : winnstr(win, str, n);
c_setchar(ST(c_arg), str);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("innstr");
XSRETURN(0);
#endif
}
/* curs_kernel */
XS(XS_Curses_def_prog_mode)
{
dXSARGS;
#ifdef C_DEF_PROG_MODE
c_exactargs("def_prog_mode", items, 0);
{
int ret = def_prog_mode();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("def_prog_mode");
XSRETURN(0);
#endif
}
XS(XS_Curses_def_shell_mode)
{
dXSARGS;
#ifdef C_DEF_SHELL_MODE
c_exactargs("def_shell_mode", items, 0);
{
int ret = def_shell_mode();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("def_shell_mode");
XSRETURN(0);
#endif
}
XS(XS_Curses_reset_prog_mode)
{
dXSARGS;
#ifdef C_RESET_PROG_MODE
c_exactargs("reset_prog_mode", items, 0);
{
int ret = reset_prog_mode();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("reset_prog_mode");
XSRETURN(0);
#endif
}
XS(XS_Curses_reset_shell_mode)
{
dXSARGS;
#ifdef C_RESET_SHELL_MODE
c_exactargs("reset_shell_mode", items, 0);
{
int ret = reset_shell_mode();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("reset_shell_mode");
XSRETURN(0);
#endif
}
XS(XS_Curses_resetty)
{
dXSARGS;
#ifdef C_RESETTY
c_exactargs("resetty", items, 0);
{
int ret = resetty();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("resetty");
XSRETURN(0);
#endif
}
XS(XS_Curses_savetty)
{
dXSARGS;
#ifdef C_SAVETTY
c_exactargs("savetty", items, 0);
{
int ret = savetty();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("savetty");
XSRETURN(0);
#endif
}
#ifdef C_INTGETSYX
XS(XS_Curses_getsyx)
{
dXSARGS;
#ifdef C_GETSYX
c_exactargs("getsyx", items, 2);
{
int y = 0;
int x = 0;
int ret = getsyx(y, x);
sv_setiv(ST(0), (IV)y);;
sv_setiv(ST(1), (IV)x);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("getsyx");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_getsyx)
{
dXSARGS;
#ifdef C_GETSYX
c_exactargs("getsyx", items, 2);
{
int y = 0;
int x = 0;
getsyx(y, x);
sv_setiv(ST(0), (IV)y);;
sv_setiv(ST(1), (IV)x);;
}
XSRETURN(0);
#else
c_fun_not_there("getsyx");
XSRETURN(0);
#endif
}
#endif
#ifdef C_INTSETSYX
XS(XS_Curses_setsyx)
{
dXSARGS;
#ifdef C_SETSYX
c_exactargs("setsyx", items, 2);
{
int y = (int)SvIV(ST(0));
int x = (int)SvIV(ST(1));
int ret = setsyx(y, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("setsyx");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_setsyx)
{
dXSARGS;
#ifdef C_SETSYX
c_exactargs("setsyx", items, 2);
{
int y = (int)SvIV(ST(0));
int x = (int)SvIV(ST(1));
setsyx(y, x);
}
XSRETURN(0);
#else
c_fun_not_there("setsyx");
XSRETURN(0);
#endif
}
#endif
XS(XS_Curses_curs_set)
{
dXSARGS;
#ifdef C_CURS_SET
c_exactargs("curs_set", items, 1);
{
int visibility = (int)SvIV(ST(0));
int ret = curs_set(visibility);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("curs_set");
XSRETURN(0);
#endif
}
XS(XS_Curses_napms)
{
dXSARGS;
#ifdef C_NAPMS
c_exactargs("napms", items, 1);
{
int ms = (int)SvIV(ST(0));
int ret = napms(ms);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("napms");
XSRETURN(0);
#endif
}
/* curs_move */
XS(XS_Curses_move)
{
dXSARGS;
#ifdef C_MOVE
c_countargs("move", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = (int)SvIV(ST(c_arg));
int x = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : wmove(win, y, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("move");
XSRETURN(0);
#endif
}
/* curs_outopts */
XS(XS_Curses_clearok)
{
dXSARGS;
#ifdef C_CLEAROK
c_countargs("clearok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : clearok(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("clearok");
XSRETURN(0);
#endif
}
#ifdef C_INTIDLOK
XS(XS_Curses_idlok)
{
dXSARGS;
#ifdef C_IDLOK
c_countargs("idlok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : idlok(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("idlok");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_idlok)
{
dXSARGS;
#ifdef C_IDLOK
c_countargs("idlok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
if (c_mret == OK) { idlok(win, bf); }
}
XSRETURN(0);
#else
c_fun_not_there("idlok");
XSRETURN(0);
#endif
}
#endif
XS(XS_Curses_idcok)
{
dXSARGS;
#ifdef C_IDCOK
c_countargs("idcok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
if (c_mret == OK) { idcok(win, bf); }
}
XSRETURN(0);
#else
c_fun_not_there("idcok");
XSRETURN(0);
#endif
}
XS(XS_Curses_immedok)
{
dXSARGS;
#ifdef C_IMMEDOK
c_countargs("immedok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
if (c_mret == OK) { immedok(win, bf); }
}
XSRETURN(0);
#else
c_fun_not_there("immedok");
XSRETURN(0);
#endif
}
XS(XS_Curses_leaveok)
{
dXSARGS;
#ifdef C_LEAVEOK
c_countargs("leaveok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : leaveok(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("leaveok");
XSRETURN(0);
#endif
}
XS(XS_Curses_setscrreg)
{
dXSARGS;
#ifdef C_SETSCRREG
c_countargs("setscrreg", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int top = (int)SvIV(ST(c_arg));
int bot = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : wsetscrreg(win, top, bot);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("setscrreg");
XSRETURN(0);
#endif
}
XS(XS_Curses_scrollok)
{
dXSARGS;
#ifdef C_SCROLLOK
c_countargs("scrollok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : scrollok(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scrollok");
XSRETURN(0);
#endif
}
#ifdef C_INTNL
XS(XS_Curses_nl)
{
dXSARGS;
#ifdef C_NL
c_exactargs("nl", items, 0);
{
int ret = nl();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("nl");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_nl)
{
dXSARGS;
#ifdef C_NL
c_exactargs("nl", items, 0);
{
nl();
}
XSRETURN(0);
#else
c_fun_not_there("nl");
XSRETURN(0);
#endif
}
#endif
#ifdef C_INTNONL
XS(XS_Curses_nonl)
{
dXSARGS;
#ifdef C_NONL
c_exactargs("nonl", items, 0);
{
int ret = nonl();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("nonl");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_nonl)
{
dXSARGS;
#ifdef C_NONL
c_exactargs("nonl", items, 0);
{
nonl();
}
XSRETURN(0);
#else
c_fun_not_there("nonl");
XSRETURN(0);
#endif
}
#endif
/* curs_overlay */
XS(XS_Curses_overlay)
{
dXSARGS;
#ifdef C_OVERLAY
c_exactargs("overlay", items, 2);
{
WINDOW *srcwin = c_sv2window(ST(0), 0);
WINDOW *dstwin = c_sv2window(ST(1), 1);
int ret = overlay(srcwin, dstwin);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("overlay");
XSRETURN(0);
#endif
}
XS(XS_Curses_overwrite)
{
dXSARGS;
#ifdef C_OVERWRITE
c_exactargs("overwrite", items, 2);
{
WINDOW *srcwin = c_sv2window(ST(0), 0);
WINDOW *dstwin = c_sv2window(ST(1), 1);
int ret = overwrite(srcwin, dstwin);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("overwrite");
XSRETURN(0);
#endif
}
XS(XS_Curses_copywin)
{
dXSARGS;
#ifdef C_COPYWIN
c_exactargs("copywin", items, 9);
{
WINDOW *srcwin = c_sv2window(ST(0), 0);
WINDOW *dstwin = c_sv2window(ST(1), 1);
int sminrow = (int)SvIV(ST(2));
int smincol = (int)SvIV(ST(3));
int dminrow = (int)SvIV(ST(4));
int dmincol = (int)SvIV(ST(5));
int dmaxrow = (int)SvIV(ST(6));
int dmaxcol = (int)SvIV(ST(7));
int overlay = (int)SvIV(ST(8));
int ret = copywin(srcwin, dstwin, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol, overlay);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("copywin");
XSRETURN(0);
#endif
}
/* curs_pad */
XS(XS_Curses_newpad)
{
dXSARGS;
#ifdef C_NEWPAD
c_exactargs("newpad", items, 2);
{
int lines_ = (int)SvIV(ST(0));
int cols = (int)SvIV(ST(1));
WINDOW * ret = newpad(lines_, cols);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("newpad");
XSRETURN(0);
#endif
}
XS(XS_Curses_subpad)
{
dXSARGS;
#ifdef C_SUBPAD
c_exactargs("subpad", items, 5);
{
WINDOW *orig = c_sv2window(ST(0), 0);
int lines_ = (int)SvIV(ST(1));
int cols = (int)SvIV(ST(2));
int beginy = (int)SvIV(ST(3));
int beginx = (int)SvIV(ST(4));
WINDOW * ret = subpad(orig, lines_, cols, beginy, beginx);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("subpad");
XSRETURN(0);
#endif
}
XS(XS_Curses_prefresh)
{
dXSARGS;
#ifdef C_PREFRESH
c_exactargs("prefresh", items, 7);
{
WINDOW *pad = c_sv2window(ST(0), 0);
int pminrow = (int)SvIV(ST(1));
int pmincol = (int)SvIV(ST(2));
int sminrow = (int)SvIV(ST(3));
int smincol = (int)SvIV(ST(4));
int smaxrow = (int)SvIV(ST(5));
int smaxcol = (int)SvIV(ST(6));
int ret = prefresh(pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("prefresh");
XSRETURN(0);
#endif
}
XS(XS_Curses_pnoutrefresh)
{
dXSARGS;
#ifdef C_PNOUTREFRESH
c_exactargs("pnoutrefresh", items, 7);
{
WINDOW *pad = c_sv2window(ST(0), 0);
int pminrow = (int)SvIV(ST(1));
int pmincol = (int)SvIV(ST(2));
int sminrow = (int)SvIV(ST(3));
int smincol = (int)SvIV(ST(4));
int smaxrow = (int)SvIV(ST(5));
int smaxcol = (int)SvIV(ST(6));
int ret = pnoutrefresh(pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("pnoutrefresh");
XSRETURN(0);
#endif
}
XS(XS_Curses_pechochar)
{
dXSARGS;
#ifdef C_PECHOCHAR
c_exactargs("pechochar", items, 2);
{
WINDOW *pad = c_sv2window(ST(0), 0);
chtype ch = c_sv2chtype(ST(1));
int ret = pechochar(pad, ch);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("pechochar");
XSRETURN(0);
#endif
}
/* curs_printw */
/* done in perl */
/* curs_refresh */
XS(XS_Curses_refresh)
{
dXSARGS;
#ifdef C_REFRESH
c_countargs("refresh", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : wrefresh(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("refresh");
XSRETURN(0);
#endif
}
XS(XS_Curses_noutrefresh)
{
dXSARGS;
#ifdef C_NOUTREFRESH
c_countargs("noutrefresh", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : wnoutrefresh(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("noutrefresh");
XSRETURN(0);
#endif
}
XS(XS_Curses_doupdate)
{
dXSARGS;
#ifdef C_DOUPDATE
c_exactargs("doupdate", items, 0);
{
int ret = doupdate();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("doupdate");
XSRETURN(0);
#endif
}
XS(XS_Curses_redrawwin)
{
dXSARGS;
#ifdef C_REDRAWWIN
c_countargs("redrawwin", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : redrawwin(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("redrawwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_redrawln)
{
dXSARGS;
#ifdef C_REDRAWLN
c_countargs("redrawln", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int beg_line = (int)SvIV(ST(c_arg));
int num_lines = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : wredrawln(win, beg_line, num_lines);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("redrawln");
XSRETURN(0);
#endif
}
/* curs_scanw */
/* done in perl */
/* curs_scr_dump */
XS(XS_Curses_scr_dump)
{
dXSARGS;
#ifdef C_SCR_DUMP
c_exactargs("scr_dump", items, 1);
{
char * filename = (char *)SvPV_nolen(ST(0));
int ret = scr_dump(filename);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scr_dump");
XSRETURN(0);
#endif
}
XS(XS_Curses_scr_restore)
{
dXSARGS;
#ifdef C_SCR_RESTORE
c_exactargs("scr_restore", items, 1);
{
char * filename = (char *)SvPV_nolen(ST(0));
int ret = scr_restore(filename);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scr_restore");
XSRETURN(0);
#endif
}
XS(XS_Curses_scr_init)
{
dXSARGS;
#ifdef C_SCR_INIT
c_exactargs("scr_init", items, 1);
{
char * filename = (char *)SvPV_nolen(ST(0));
int ret = scr_init(filename);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scr_init");
XSRETURN(0);
#endif
}
XS(XS_Curses_scr_set)
{
dXSARGS;
#ifdef C_SCR_SET
c_exactargs("scr_set", items, 1);
{
char * filename = (char *)SvPV_nolen(ST(0));
int ret = scr_set(filename);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scr_set");
XSRETURN(0);
#endif
}
/* curs_scroll */
XS(XS_Curses_scroll)
{
dXSARGS;
#ifdef C_SCROLL
c_countargs("scroll", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : scroll(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scroll");
XSRETURN(0);
#endif
}
XS(XS_Curses_scrl)
{
dXSARGS;
#ifdef C_SCRL
c_countargs("scrl", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int n = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : wscrl(win, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scrl");
XSRETURN(0);
#endif
}
/* curs_slk */
XS(XS_Curses_slk_init)
{
dXSARGS;
#ifdef C_SLK_INIT
c_exactargs("slk_init", items, 1);
{
int fmt = (int)SvIV(ST(0));
int ret = slk_init(fmt);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_init");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_set)
{
dXSARGS;
#ifdef C_SLK_SET
c_exactargs("slk_set", items, 3);
{
int labnum = (int)SvIV(ST(0));
char * label = (char *)SvPV_nolen(ST(1));
int fmt = (int)SvIV(ST(2));
int ret = slk_set(labnum, label, fmt);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_set");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_refresh)
{
dXSARGS;
#ifdef C_SLK_REFRESH
c_exactargs("slk_refresh", items, 0);
{
int ret = slk_refresh();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_refresh");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_noutrefresh)
{
dXSARGS;
#ifdef C_SLK_NOUTREFRESH
c_exactargs("slk_noutrefresh", items, 0);
{
int ret = slk_noutrefresh();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_noutrefresh");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_label)
{
dXSARGS;
#ifdef C_SLK_LABEL
c_exactargs("slk_label", items, 1);
{
int labnum = (int)SvIV(ST(0));
char * ret = slk_label(labnum);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_label");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_clear)
{
dXSARGS;
#ifdef C_SLK_CLEAR
c_exactargs("slk_clear", items, 0);
{
int ret = slk_clear();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_clear");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_restore)
{
dXSARGS;
#ifdef C_SLK_RESTORE
c_exactargs("slk_restore", items, 0);
{
int ret = slk_restore();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_restore");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_touch)
{
dXSARGS;
#ifdef C_SLK_TOUCH
c_exactargs("slk_touch", items, 0);
{
int ret = slk_touch();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_touch");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_attron)
{
dXSARGS;
#ifdef C_SLK_ATTRON
c_exactargs("slk_attron", items, 1);
{
chtype attrs = c_sv2chtype(ST(0));
int ret = slk_attron(attrs);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_attron");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_attrset)
{
dXSARGS;
#ifdef C_SLK_ATTRSET
c_exactargs("slk_attrset", items, 1);
{
chtype attrs = c_sv2chtype(ST(0));
int ret = slk_attrset(attrs);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_attrset");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_attr)
{
dXSARGS;
#ifdef C_SLK_ATTR
c_exactargs("slk_attr", items, 0);
{
attr_t ret = slk_attr();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_attr");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_attroff)
{
dXSARGS;
#ifdef C_SLK_ATTROFF
c_exactargs("slk_attroff", items, 1);
{
chtype attrs = c_sv2chtype(ST(0));
int ret = slk_attroff(attrs);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_attroff");
XSRETURN(0);
#endif
}
XS(XS_Curses_slk_color)
{
dXSARGS;
#ifdef C_SLK_COLOR
c_exactargs("slk_color", items, 1);
{
short color_pair_number = (short)SvIV(ST(0));
int ret = slk_color(color_pair_number);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("slk_color");
XSRETURN(0);
#endif
}
/* curs_termattrs */
XS(XS_Curses_baudrate)
{
dXSARGS;
#ifdef C_BAUDRATE
c_exactargs("baudrate", items, 0);
{
int ret = baudrate();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("baudrate");
XSRETURN(0);
#endif
}
XS(XS_Curses_erasechar)
{
dXSARGS;
#ifdef C_ERASECHAR
c_exactargs("erasechar", items, 0);
{
char ret = erasechar();
ST(0) = sv_newmortal();
sv_setpvn(ST(0), (char *)&ret, 1);
}
XSRETURN(1);
#else
c_fun_not_there("erasechar");
XSRETURN(0);
#endif
}
XS(XS_Curses_has_ic)
{
dXSARGS;
#ifdef C_HAS_IC
c_exactargs("has_ic", items, 0);
{
int ret = has_ic();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("has_ic");
XSRETURN(0);
#endif
}
XS(XS_Curses_has_il)
{
dXSARGS;
#ifdef C_HAS_IL
c_exactargs("has_il", items, 0);
{
int ret = has_il();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("has_il");
XSRETURN(0);
#endif
}
XS(XS_Curses_killchar)
{
dXSARGS;
#ifdef C_KILLCHAR
c_exactargs("killchar", items, 0);
{
char ret = killchar();
ST(0) = sv_newmortal();
sv_setpvn(ST(0), (char *)&ret, 1);
}
XSRETURN(1);
#else
c_fun_not_there("killchar");
XSRETURN(0);
#endif
}
#ifdef C_LONG0ARGS
XS(XS_Curses_longname)
{
dXSARGS;
#ifdef C_LONGNAME
c_exactargs("longname", items, 0);
{
char * ret = longname();
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("longname");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_longname)
{
dXSARGS;
#ifdef C_LONGNAME
c_exactargs("longname", items, 2);
{
char * a = (char *)SvPV_nolen(ST(0));
char * b = (char *)SvPV_nolen(ST(1));
char * ret = longname(a, b);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("longname");
XSRETURN(0);
#endif
}
#endif
XS(XS_Curses_termattrs)
{
dXSARGS;
#ifdef C_TERMATTRS
c_exactargs("termattrs", items, 0);
{
chtype ret = termattrs();
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("termattrs");
XSRETURN(0);
#endif
}
XS(XS_Curses_termname)
{
dXSARGS;
#ifdef C_TERMNAME
c_exactargs("termname", items, 0);
{
char * ret = termname();
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("termname");
XSRETURN(0);
#endif
}
/* curs_touch */
XS(XS_Curses_touchwin)
{
dXSARGS;
#ifdef C_TOUCHWIN
c_countargs("touchwin", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : touchwin(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("touchwin");
XSRETURN(0);
#endif
}
#ifdef C_TOUCH3ARGS
XS(XS_Curses_touchline)
{
dXSARGS;
#ifdef C_TOUCHLINE
c_countargs("touchline", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int start = (int)SvIV(ST(c_arg));
int count = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : touchline(win, start, count);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("touchline");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_touchline)
{
dXSARGS;
#ifdef C_TOUCHLINE
c_countargs("touchline", items, 3);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = (int)SvIV(ST(c_arg));
int sx = (int)SvIV(ST(c_arg+1));
int ex = (int)SvIV(ST(c_arg+2));
int ret = c_mret == ERR ? ERR : touchline(win, y, sx, ex);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("touchline");
XSRETURN(0);
#endif
}
#endif
XS(XS_Curses_untouchwin)
{
dXSARGS;
#ifdef C_UNTOUCHWIN
c_countargs("untouchwin", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : untouchwin(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("untouchwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_touchln)
{
dXSARGS;
#ifdef C_TOUCHLN
c_countargs("touchln", items, 3);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = (int)SvIV(ST(c_arg));
int n = (int)SvIV(ST(c_arg+1));
int changed = (int)SvIV(ST(c_arg+2));
int ret = c_mret == ERR ? ERR : wtouchln(win, y, n, changed);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("touchln");
XSRETURN(0);
#endif
}
XS(XS_Curses_is_linetouched)
{
dXSARGS;
#ifdef C_IS_LINETOUCHED
c_countargs("is_linetouched", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int line = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : is_linetouched(win, line);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("is_linetouched");
XSRETURN(0);
#endif
}
XS(XS_Curses_is_wintouched)
{
dXSARGS;
#ifdef C_IS_WINTOUCHED
c_countargs("is_wintouched", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : is_wintouched(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("is_wintouched");
XSRETURN(0);
#endif
}
/* curs_util */
XS(XS_Curses_unctrl) {
dXSARGS;
#ifdef C_UNCTRL
c_exactargs("unctrl", items, 1);
{
chtype const ch = c_sv2chtype(ST(0));
const char * const ret = unctrl(ch);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("unctrl");
XSRETURN(0);
#endif
}
XS(XS_Curses_keyname)
{
dXSARGS;
#ifdef C_KEYNAME
c_exactargs("keyname", items, 1);
{
int k = (int)SvIV(ST(0));
char * ret = (char *)keyname(k);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("keyname");
XSRETURN(0);
#endif
}
#ifdef C_INTFILTER
XS(XS_Curses_filter)
{
dXSARGS;
#ifdef C_FILTER
c_exactargs("filter", items, 0);
{
int ret = filter();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("filter");
XSRETURN(0);
#endif
}
#else
XS(XS_Curses_filter)
{
dXSARGS;
#ifdef C_FILTER
c_exactargs("filter", items, 0);
{
filter();
}
XSRETURN(0);
#else
c_fun_not_there("filter");
XSRETURN(0);
#endif
}
#endif
XS(XS_Curses_use_env)
{
dXSARGS;
#ifdef C_USE_ENV
c_exactargs("use_env", items, 1);
{
bool bf = (int)SvIV(ST(0));
use_env(bf);
}
XSRETURN(0);
#else
c_fun_not_there("use_env");
XSRETURN(0);
#endif
}
XS(XS_Curses_putwin)
{
dXSARGS;
#ifdef C_PUTWIN
c_exactargs("putwin", items, 2);
{
WINDOW *win = c_sv2window(ST(0), 0);
/* See explanation of PerlIO_findFILE in newterm() */
FILE * filep = PerlIO_findFILE(IoIFP(sv_2io(ST(1))));
int ret = putwin(win, filep);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("putwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_getwin)
{
dXSARGS;
#ifdef C_GETWIN
c_exactargs("getwin", items, 1);
{
/* See explanation of PerlIO_findFILE in newterm() */
FILE * filep = PerlIO_findFILE(IoIFP(sv_2io(ST(0))));
WINDOW * ret = getwin(filep);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("getwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_delay_output)
{
dXSARGS;
#ifdef C_DELAY_OUTPUT
c_exactargs("delay_output", items, 1);
{
int ms = (int)SvIV(ST(0));
int ret = delay_output(ms);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("delay_output");
XSRETURN(0);
#endif
}
XS(XS_Curses_flushinp)
{
dXSARGS;
#ifdef C_FLUSHINP
c_exactargs("flushinp", items, 0);
{
int ret = flushinp();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("flushinp");
XSRETURN(0);
#endif
}
/* curs_window */
XS(XS_Curses_newwin)
{
dXSARGS;
#ifdef C_NEWWIN
c_exactargs("newwin", items, 4);
{
int nlines = (int)SvIV(ST(0));
int ncols = (int)SvIV(ST(1));
int beginy = (int)SvIV(ST(2));
int beginx = (int)SvIV(ST(3));
WINDOW * ret = newwin(nlines, ncols, beginy, beginx);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("newwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_delwin)
{
dXSARGS;
#ifdef C_DELWIN
c_countargs("delwin", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : delwin(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("delwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_mvwin)
{
dXSARGS;
#ifdef C_MVWIN
c_countargs("mvwin", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = (int)SvIV(ST(c_arg));
int x = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : mvwin(win, y, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("mvwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_subwin)
{
dXSARGS;
#ifdef C_SUBWIN
c_countargs("subwin", items, 4);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int nlines = (int)SvIV(ST(c_arg));
int ncols = (int)SvIV(ST(c_arg+1));
int beginy = (int)SvIV(ST(c_arg+2));
int beginx = (int)SvIV(ST(c_arg+3));
WINDOW * ret = c_mret == ERR ? NULL : subwin(win, nlines, ncols, beginy, beginx);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("subwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_derwin)
{
dXSARGS;
#ifdef C_DERWIN
c_countargs("derwin", items, 4);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int nlines = (int)SvIV(ST(c_arg));
int ncols = (int)SvIV(ST(c_arg+1));
int beginy = (int)SvIV(ST(c_arg+2));
int beginx = (int)SvIV(ST(c_arg+3));
WINDOW * ret = c_mret == ERR ? NULL : derwin(win, nlines, ncols, beginy, beginx);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("derwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_mvderwin)
{
dXSARGS;
#ifdef C_MVDERWIN
c_countargs("mvderwin", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int par_y = (int)SvIV(ST(c_arg));
int par_x = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : mvderwin(win, par_y, par_x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("mvderwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_dupwin)
{
dXSARGS;
#ifdef C_DUPWIN
c_countargs("dupwin", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
WINDOW * ret = c_mret == ERR ? NULL : dupwin(win);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("dupwin");
XSRETURN(0);
#endif
}
XS(XS_Curses_syncup)
{
dXSARGS;
#ifdef C_SYNCUP
c_countargs("syncup", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
if (c_mret == OK) { wsyncup(win); }
}
XSRETURN(0);
#else
c_fun_not_there("syncup");
XSRETURN(0);
#endif
}
XS(XS_Curses_syncok)
{
dXSARGS;
#ifdef C_SYNCOK
c_countargs("syncok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
int ret = c_mret == ERR ? ERR : syncok(win, bf);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("syncok");
XSRETURN(0);
#endif
}
XS(XS_Curses_cursyncup)
{
dXSARGS;
#ifdef C_CURSYNCUP
c_countargs("cursyncup", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
if (c_mret == OK) { wcursyncup(win); }
}
XSRETURN(0);
#else
c_fun_not_there("cursyncup");
XSRETURN(0);
#endif
}
XS(XS_Curses_syncdown)
{
dXSARGS;
#ifdef C_SYNCDOWN
c_countargs("syncdown", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
if (c_mret == OK) { wsyncdown(win); }
}
XSRETURN(0);
#else
c_fun_not_there("syncdown");
XSRETURN(0);
#endif
}
/* ncurses extension functions */
XS(XS_Curses_getmouse)
{
dXSARGS;
#ifdef C_GETMOUSE
c_exactargs("getmouse", items, 1);
{
MEVENT *event = (MEVENT *)sv_grow(ST(0), 2 * sizeof(MEVENT));
int ret = getmouse(event);
c_setmevent(ST(0));
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("getmouse");
XSRETURN(0);
#endif
}
XS(XS_Curses_ungetmouse)
{
dXSARGS;
#ifdef C_UNGETMOUSE
c_exactargs("ungetmouse", items, 1);
{
MEVENT *event = (MEVENT *)SvPV_nolen(ST(0));
int ret = ungetmouse(event);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("ungetmouse");
XSRETURN(0);
#endif
}
XS(XS_Curses_mousemask)
{
dXSARGS;
#ifdef C_MOUSEMASK
c_exactargs("mousemask", items, 2);
{
mmask_t newmask = (mmask_t)SvIV(ST(0));
mmask_t oldmask = 0;
mmask_t ret = mousemask(newmask, &oldmask);
sv_setiv(ST(1), (IV)oldmask);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("mousemask");
XSRETURN(0);
#endif
}
XS(XS_Curses_enclose)
{
dXSARGS;
#ifdef C_ENCLOSE
c_countargs("enclose", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int y = (int)SvIV(ST(c_arg));
int x = (int)SvIV(ST(c_arg+1));
/* We don't have any way to return an error, so if we couldn't move the
window, we just say the window does not enclose the location.
*/
bool ret = c_mret == ERR ? false : wenclose(win, y, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("enclose");
XSRETURN(0);
#endif
}
XS(XS_Curses_mouse_trafo)
{
dXSARGS;
#ifdef C_MOUSE_TRAFO
c_countargs("mouse_trafo", items, 3);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int pY = 0;
int pX = 0;
bool to_screen = (int)SvIV(ST(c_arg+2));
bool ret = c_mret == ERR ? false : wmouse_trafo(win, &pY, &pX, to_screen);
sv_setiv(ST(c_arg), (IV)pY);;
sv_setiv(ST(c_arg+1), (IV)pX);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("mouse_trafo");
XSRETURN(0);
#endif
}
XS(XS_Curses_mouseinterval)
{
dXSARGS;
#ifdef C_MOUSEINTERVAL
c_exactargs("mouseinterval", items, 1);
{
int erval = (int)SvIV(ST(0));
int ret = mouseinterval(erval);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("mouseinterval");
XSRETURN(0);
#endif
}
XS(XS_Curses_BUTTON_RELEASE)
{
dXSARGS;
#ifdef C_BUTTON_RELEASE
c_exactargs("BUTTON_RELEASE", items, 2);
{
mmask_t e = (mmask_t)SvIV(ST(0));
int x = (int)SvIV(ST(1));
int ret = BUTTON_RELEASE(e, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("BUTTON_RELEASE");
XSRETURN(0);
#endif
}
XS(XS_Curses_BUTTON_PRESS)
{
dXSARGS;
#ifdef C_BUTTON_PRESS
c_exactargs("BUTTON_PRESS", items, 2);
{
mmask_t e = (mmask_t)SvIV(ST(0));
int x = (int)SvIV(ST(1));
int ret = BUTTON_PRESS(e, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("BUTTON_PRESS");
XSRETURN(0);
#endif
}
XS(XS_Curses_BUTTON_CLICK)
{
dXSARGS;
#ifdef C_BUTTON_CLICK
c_exactargs("BUTTON_CLICK", items, 2);
{
mmask_t e = (mmask_t)SvIV(ST(0));
int x = (int)SvIV(ST(1));
int ret = BUTTON_CLICK(e, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("BUTTON_CLICK");
XSRETURN(0);
#endif
}
XS(XS_Curses_BUTTON_DOUBLE_CLICK)
{
dXSARGS;
#ifdef C_BUTTON_DOUBLE_CLICK
c_exactargs("BUTTON_DOUBLE_CLICK", items, 2);
{
mmask_t e = (mmask_t)SvIV(ST(0));
int x = (int)SvIV(ST(1));
int ret = BUTTON_DOUBLE_CLICK(e, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("BUTTON_DOUBLE_CLICK");
XSRETURN(0);
#endif
}
XS(XS_Curses_BUTTON_TRIPLE_CLICK)
{
dXSARGS;
#ifdef C_BUTTON_TRIPLE_CLICK
c_exactargs("BUTTON_TRIPLE_CLICK", items, 2);
{
mmask_t e = (mmask_t)SvIV(ST(0));
int x = (int)SvIV(ST(1));
int ret = BUTTON_TRIPLE_CLICK(e, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("BUTTON_TRIPLE_CLICK");
XSRETURN(0);
#endif
}
XS(XS_Curses_BUTTON_RESERVED_EVENT)
{
dXSARGS;
#ifdef C_BUTTON_RESERVED_EVENT
c_exactargs("BUTTON_RESERVED_EVENT", items, 2);
{
mmask_t e = (mmask_t)SvIV(ST(0));
int x = (int)SvIV(ST(1));
int ret = BUTTON_RESERVED_EVENT(e, x);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("BUTTON_RESERVED_EVENT");
XSRETURN(0);
#endif
}
XS(XS_Curses_use_default_colors)
{
dXSARGS;
#ifdef C_USE_DEFAULT_COLORS
c_exactargs("use_default_colors", items, 0);
{
int ret = use_default_colors();
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("use_default_colors");
XSRETURN(0);
#endif
}
XS(XS_Curses_assume_default_colors)
{
dXSARGS;
#ifdef C_ASSUME_DEFAULT_COLORS
c_exactargs("assume_default_colors", items, 2);
{
int fg = (int)SvIV(ST(0));
int bg = (int)SvIV(ST(1));
int ret = assume_default_colors(fg, bg);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("assume_default_colors");
XSRETURN(0);
#endif
}
XS(XS_Curses_define_key)
{
dXSARGS;
#ifdef C_DEFINE_KEY
c_exactargs("define_key", items, 2);
{
char * definition = (char *)SvPV_nolen(ST(0));
int keycode = (int)SvIV(ST(1));
int ret = define_key(definition, keycode);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("define_key");
XSRETURN(0);
#endif
}
XS(XS_Curses_keybound)
{
dXSARGS;
#ifdef C_KEYBOUND
c_exactargs("keybound", items, 2);
{
int keycode = (int)SvIV(ST(0));
int count = (int)SvIV(ST(1));
char * ret = keybound(keycode, count);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("keybound");
XSRETURN(0);
#endif
}
XS(XS_Curses_keyok)
{
dXSARGS;
#ifdef C_KEYOK
c_exactargs("keyok", items, 2);
{
int keycode = (int)SvIV(ST(0));
bool enable = (int)SvIV(ST(1));
int ret = keyok(keycode, enable);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("keyok");
XSRETURN(0);
#endif
}
XS(XS_Curses_resizeterm)
{
dXSARGS;
#ifdef C_RESIZETERM
c_exactargs("resizeterm", items, 2);
{
int lines = (int)SvIV(ST(0));
int cols = (int)SvIV(ST(1));
int ret = resizeterm(lines, cols);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("resizeterm");
XSRETURN(0);
#endif
}
XS(XS_Curses_resize)
{
dXSARGS;
#ifdef C_RESIZE
c_countargs("resize", items, 2);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int lines_ = (int)SvIV(ST(c_arg));
int columns = (int)SvIV(ST(c_arg+1));
int ret = c_mret == ERR ? ERR : wresize(win, lines_, columns);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("resize");
XSRETURN(0);
#endif
}
/* DEC curses, I think */
XS(XS_Curses_getmaxy)
{
dXSARGS;
#ifdef C_GETMAXY
c_countargs("getmaxy", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : getmaxy(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("getmaxy");
XSRETURN(0);
#endif
}
XS(XS_Curses_getmaxx)
{
dXSARGS;
#ifdef C_GETMAXX
c_countargs("getmaxx", items, 0);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
int ret = c_mret == ERR ? ERR : getmaxx(win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("getmaxx");
XSRETURN(0);
#endif
}
/* old BSD curses calls */
XS(XS_Curses_flusok)
{
dXSARGS;
#ifdef C_FLUSOK
c_countargs("flusok", items, 1);
{
WINDOW *win = c_win ? c_sv2window(ST(0), 0) : stdscr;
int c_mret = c_x ? c_domove(win, ST(c_x-1), ST(c_x)) : OK;
bool bf = (int)SvIV(ST(c_arg));
if (c_mret == OK) { flusok(win, bf); }
}
XSRETURN(0);
#else
c_fun_not_there("flusok");
XSRETURN(0);
#endif
}
XS(XS_Curses_getcap)
{
dXSARGS;
#ifdef C_GETCAP
c_exactargs("getcap", items, 1);
{
char * term = (char *)SvPV_nolen(ST(0));
char * ret = (char *)getcap(term);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("getcap");
XSRETURN(0);
#endif
}
XS(XS_Curses_touchoverlap)
{
dXSARGS;
#ifdef C_TOUCHOVERLAP
c_exactargs("touchoverlap", items, 2);
{
WINDOW *src = c_sv2window(ST(0), 0);
WINDOW *dst = c_sv2window(ST(1), 1);
int ret = touchoverlap(src, dst);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("touchoverlap");
XSRETURN(0);
#endif
}
/* Panel functions */
XS(XS_Curses_new_panel)
{
dXSARGS;
#ifdef C_NEW_PANEL
c_exactargs("new_panel", items, 1);
{
WINDOW *win = c_sv2window(ST(0), 0);
PANEL * ret = new_panel(win);
ST(0) = sv_newmortal();
c_panel2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("new_panel");
XSRETURN(0);
#endif
}
XS(XS_Curses_bottom_panel)
{
dXSARGS;
#ifdef C_BOTTOM_PANEL
c_exactargs("bottom_panel", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
int ret = bottom_panel(pan);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("bottom_panel");
XSRETURN(0);
#endif
}
XS(XS_Curses_top_panel)
{
dXSARGS;
#ifdef C_TOP_PANEL
c_exactargs("top_panel", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
int ret = top_panel(pan);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("top_panel");
XSRETURN(0);
#endif
}
XS(XS_Curses_show_panel)
{
dXSARGS;
#ifdef C_SHOW_PANEL
c_exactargs("show_panel", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
int ret = show_panel(pan);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("show_panel");
XSRETURN(0);
#endif
}
XS(XS_Curses_update_panels)
{
dXSARGS;
#ifdef C_UPDATE_PANELS
c_exactargs("update_panels", items, 0);
{
update_panels();
}
XSRETURN(0);
#else
c_fun_not_there("update_panels");
XSRETURN(0);
#endif
}
XS(XS_Curses_hide_panel)
{
dXSARGS;
#ifdef C_HIDE_PANEL
c_exactargs("hide_panel", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
int ret = hide_panel(pan);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("hide_panel");
XSRETURN(0);
#endif
}
XS(XS_Curses_panel_window)
{
dXSARGS;
#ifdef C_PANEL_WINDOW
c_exactargs("panel_window", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
WINDOW * ret = panel_window(pan);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("panel_window");
XSRETURN(0);
#endif
}
XS(XS_Curses_replace_panel)
{
dXSARGS;
#ifdef C_REPLACE_PANEL
c_exactargs("replace_panel", items, 2);
{
PANEL * pan = c_sv2panel(ST(0), 0);
WINDOW *window = c_sv2window(ST(1), 1);
int ret = replace_panel(pan, window);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("replace_panel");
XSRETURN(0);
#endif
}
XS(XS_Curses_move_panel)
{
dXSARGS;
#ifdef C_MOVE_PANEL
c_exactargs("move_panel", items, 3);
{
PANEL * pan = c_sv2panel(ST(0), 0);
int starty = (int)SvIV(ST(1));
int startx = (int)SvIV(ST(2));
int ret = move_panel(pan, starty, startx);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("move_panel");
XSRETURN(0);
#endif
}
XS(XS_Curses_panel_hidden)
{
dXSARGS;
#ifdef C_PANEL_HIDDEN
c_exactargs("panel_hidden", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
int ret = panel_hidden(pan);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("panel_hidden");
XSRETURN(0);
#endif
}
XS(XS_Curses_panel_above)
{
dXSARGS;
#ifdef C_PANEL_ABOVE
c_exactargs("panel_above", items, 1);
{
PANEL * pan = ST(0) != &PL_sv_undef ? c_sv2panel(ST(0), 0) : NULL;
PANEL * ret = panel_above(pan);
ST(0) = sv_newmortal();
c_panel2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("panel_above");
XSRETURN(0);
#endif
}
XS(XS_Curses_panel_below)
{
dXSARGS;
#ifdef C_PANEL_BELOW
c_exactargs("panel_below", items, 1);
{
PANEL * pan = ST(0) != &PL_sv_undef ? c_sv2panel(ST(0), 0) : NULL;
PANEL * ret = panel_below(pan);
ST(0) = sv_newmortal();
c_panel2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("panel_below");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_panel_userptr)
{
dXSARGS;
#ifdef C_SET_PANEL_USERPTR
c_exactargs("set_panel_userptr", items, 2);
{
PANEL * pan = c_sv2panel(ST(0), 0);
char * ptr = (char *)SvPV_nolen(ST(1));
int ret = set_panel_userptr(pan, ptr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_panel_userptr");
XSRETURN(0);
#endif
}
XS(XS_Curses_panel_userptr)
{
dXSARGS;
#ifdef C_PANEL_USERPTR
c_exactargs("panel_userptr", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
char * ret = (char *)panel_userptr(pan);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("panel_userptr");
XSRETURN(0);
#endif
}
XS(XS_Curses_del_panel)
{
dXSARGS;
#ifdef C_DEL_PANEL
c_exactargs("del_panel", items, 1);
{
PANEL * pan = c_sv2panel(ST(0), 0);
int ret = del_panel(pan);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("del_panel");
XSRETURN(0);
#endif
}
/* Menu functions */
/* menu_attributes */
XS(XS_Curses_set_menu_fore)
{
dXSARGS;
#ifdef C_SET_MENU_FORE
c_exactargs("set_menu_fore", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
chtype attr = c_sv2chtype(ST(1));
int ret = set_menu_fore(menu, attr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_fore");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_fore)
{
dXSARGS;
#ifdef C_MENU_FORE
c_exactargs("menu_fore", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
chtype ret = menu_fore(menu);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_fore");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_menu_back)
{
dXSARGS;
#ifdef C_SET_MENU_BACK
c_exactargs("set_menu_back", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
chtype attr = c_sv2chtype(ST(1));
int ret = set_menu_back(menu, attr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_back");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_back)
{
dXSARGS;
#ifdef C_MENU_BACK
c_exactargs("menu_back", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
chtype ret = menu_back(menu);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_back");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_menu_grey)
{
dXSARGS;
#ifdef C_SET_MENU_GREY
c_exactargs("set_menu_grey", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
chtype attr = c_sv2chtype(ST(1));
int ret = set_menu_grey(menu, attr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_grey");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_grey)
{
dXSARGS;
#ifdef C_MENU_GREY
c_exactargs("menu_grey", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
chtype ret = menu_grey(menu);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_grey");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_menu_pad)
{
dXSARGS;
#ifdef C_SET_MENU_PAD
c_exactargs("set_menu_pad", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
int pad = (int)SvIV(ST(1));
int ret = set_menu_pad(menu, pad);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_pad");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_pad)
{
dXSARGS;
#ifdef C_MENU_PAD
c_exactargs("menu_pad", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = menu_pad(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_pad");
XSRETURN(0);
#endif
}
/* menu_cursor */
XS(XS_Curses_pos_menu_cursor)
{
dXSARGS;
#ifdef C_POS_MENU_CURSOR
c_exactargs("pos_menu_cursor", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = pos_menu_cursor(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("pos_menu_cursor");
XSRETURN(0);
#endif
}
/* menu_driver */
XS(XS_Curses_menu_driver)
{
dXSARGS;
#ifdef C_MENU_DRIVER
c_exactargs("menu_driver", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
int c = (int)SvIV(ST(1));
int ret = menu_driver(menu, c);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_driver");
XSRETURN(0);
#endif
}
/* menu_format */
XS(XS_Curses_set_menu_format)
{
dXSARGS;
#ifdef C_SET_MENU_FORMAT
c_exactargs("set_menu_format", items, 3);
{
MENU * menu = c_sv2menu(ST(0), 0);
int rows = (int)SvIV(ST(1));
int cols = (int)SvIV(ST(2));
int ret = set_menu_format(menu, rows, cols);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_format");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_format)
{
dXSARGS;
#ifdef C_MENU_FORMAT
c_exactargs("menu_format", items, 3);
{
MENU * menu = c_sv2menu(ST(0), 0);
int rows = 0;
int cols = 0;
menu_format(menu, &rows, &cols);
sv_setiv(ST(1), (IV)rows);;
sv_setiv(ST(2), (IV)cols);;
}
XSRETURN(0);
#else
c_fun_not_there("menu_format");
XSRETURN(0);
#endif
}
/* menu_items */
XS(XS_Curses_set_menu_items)
{
dXSARGS;
#ifdef C_SET_MENU_ITEMS
c_exactargs("set_menu_items", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
ITEM ** items = (ITEM **)SvPV_nolen(ST(1));
int ret = set_menu_items(menu, items);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_items");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_items)
{
dXSARGS;
#ifdef C_MENU_ITEMS
c_exactargs("menu_items", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
ITEM ** ret = menu_items(menu);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), (char *)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_items");
XSRETURN(0);
#endif
}
XS(XS_Curses_item_count)
{
dXSARGS;
#ifdef C_ITEM_COUNT
c_exactargs("item_count", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = item_count(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_count");
XSRETURN(0);
#endif
}
/* menu_mark */
XS(XS_Curses_set_menu_mark)
{
dXSARGS;
#ifdef C_SET_MENU_MARK
c_exactargs("set_menu_mark", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
char * mark = (char *)SvPV_nolen(ST(1));
int ret = set_menu_mark(menu, mark);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_mark");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_mark)
{
dXSARGS;
#ifdef C_MENU_MARK
c_exactargs("menu_mark", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
char * ret = (char *)menu_mark(menu);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_mark");
XSRETURN(0);
#endif
}
XS(XS_Curses_new_menu)
{
dXSARGS;
#ifdef C_NEW_MENU
c_exactargs("new_menu", items, 1);
{
ITEM ** items = (ITEM **)SvPV_nolen(ST(0));
MENU * ret = new_menu(items);
ST(0) = sv_newmortal();
c_menu2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("new_menu");
XSRETURN(0);
#endif
}
XS(XS_Curses_free_menu)
{
dXSARGS;
#ifdef C_FREE_MENU
c_exactargs("free_menu", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = free_menu(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("free_menu");
XSRETURN(0);
#endif
}
/* menu_opts */
XS(XS_Curses_menu_opts)
{
dXSARGS;
#ifdef C_MENU_OPTS
c_exactargs("menu_opts", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = menu_opts(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_opts");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_menu_opts)
{
dXSARGS;
#ifdef C_SET_MENU_OPTS
c_exactargs("set_menu_opts", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = set_menu_opts(menu, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_opts");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_opts_on)
{
dXSARGS;
#ifdef C_MENU_OPTS_ON
c_exactargs("menu_opts_on", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = menu_opts_on(menu, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_opts_on");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_opts_off)
{
dXSARGS;
#ifdef C_MENU_OPTS_OFF
c_exactargs("menu_opts_off", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = menu_opts_off(menu, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_opts_off");
XSRETURN(0);
#endif
}
/* menu_pattern */
XS(XS_Curses_set_menu_pattern)
{
dXSARGS;
#ifdef C_SET_MENU_PATTERN
c_exactargs("set_menu_pattern", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
char * pattern = (char *)SvPV_nolen(ST(1));
int ret = set_menu_pattern(menu, pattern);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_pattern");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_pattern)
{
dXSARGS;
#ifdef C_MENU_PATTERN
c_exactargs("menu_pattern", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
char * ret = menu_pattern(menu);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_pattern");
XSRETURN(0);
#endif
}
/* menu_post */
XS(XS_Curses_post_menu)
{
dXSARGS;
#ifdef C_POST_MENU
c_exactargs("post_menu", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = post_menu(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("post_menu");
XSRETURN(0);
#endif
}
XS(XS_Curses_unpost_menu)
{
dXSARGS;
#ifdef C_UNPOST_MENU
c_exactargs("unpost_menu", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = unpost_menu(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("unpost_menu");
XSRETURN(0);
#endif
}
/* menu_userptr */
XS(XS_Curses_set_menu_userptr)
{
dXSARGS;
#ifdef C_SET_MENU_USERPTR
c_exactargs("set_menu_userptr", items, 2);
{
MENU * item = c_sv2menu(ST(0), 0);
char * userptr = (char *)SvPV_nolen(ST(1));
int ret = set_menu_userptr(item, userptr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_userptr");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_userptr)
{
dXSARGS;
#ifdef C_MENU_USERPTR
c_exactargs("menu_userptr", items, 1);
{
MENU * item = c_sv2menu(ST(0), 0);
char * ret = menu_userptr(item);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_userptr");
XSRETURN(0);
#endif
}
/* menu_win */
XS(XS_Curses_set_menu_win)
{
dXSARGS;
#ifdef C_SET_MENU_WIN
c_exactargs("set_menu_win", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
WINDOW *win = c_sv2window(ST(1), 1);
int ret = set_menu_win(menu, win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_win");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_win)
{
dXSARGS;
#ifdef C_MENU_WIN
c_exactargs("menu_win", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
WINDOW * ret = menu_win(menu);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_win");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_menu_sub)
{
dXSARGS;
#ifdef C_SET_MENU_SUB
c_exactargs("set_menu_sub", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
WINDOW *win = c_sv2window(ST(1), 1);
int ret = set_menu_sub(menu, win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_sub");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_sub)
{
dXSARGS;
#ifdef C_MENU_SUB
c_exactargs("menu_sub", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
WINDOW * ret = menu_sub(menu);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_sub");
XSRETURN(0);
#endif
}
XS(XS_Curses_scale_menu)
{
dXSARGS;
#ifdef C_SCALE_MENU
c_exactargs("scale_menu", items, 3);
{
MENU * menu = c_sv2menu(ST(0), 0);
int rows = 0;
int cols = 0;
int ret = scale_menu(menu, &rows, &cols);
sv_setiv(ST(1), (IV)rows);;
sv_setiv(ST(2), (IV)cols);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scale_menu");
XSRETURN(0);
#endif
}
/* menu_item_current */
XS(XS_Curses_set_current_item)
{
dXSARGS;
#ifdef C_SET_CURRENT_ITEM
c_exactargs("set_current_item", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
ITEM * item = c_sv2item(ST(1), 1);
int ret = set_current_item(menu, item);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_current_item");
XSRETURN(0);
#endif
}
XS(XS_Curses_current_item)
{
dXSARGS;
#ifdef C_CURRENT_ITEM
c_exactargs("current_item", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
ITEM * ret = current_item(menu);
ST(0) = sv_newmortal();
c_item2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("current_item");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_top_row)
{
dXSARGS;
#ifdef C_SET_TOP_ROW
c_exactargs("set_top_row", items, 2);
{
MENU * menu = c_sv2menu(ST(0), 0);
int row = (int)SvIV(ST(1));
int ret = set_top_row(menu, row);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_top_row");
XSRETURN(0);
#endif
}
XS(XS_Curses_top_row)
{
dXSARGS;
#ifdef C_TOP_ROW
c_exactargs("top_row", items, 1);
{
MENU * menu = c_sv2menu(ST(0), 0);
int ret = top_row(menu);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("top_row");
XSRETURN(0);
#endif
}
XS(XS_Curses_item_index)
{
dXSARGS;
#ifdef C_ITEM_INDEX
c_exactargs("item_index", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
int ret = item_index(item);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_index");
XSRETURN(0);
#endif
}
/* menu_item_name */
XS(XS_Curses_item_name)
{
dXSARGS;
#ifdef C_ITEM_NAME
c_exactargs("item_name", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
char * ret = (char *)item_name(item);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_name");
XSRETURN(0);
#endif
}
XS(XS_Curses_item_description)
{
dXSARGS;
#ifdef C_ITEM_DESCRIPTION
c_exactargs("item_description", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
char * ret = (char *)item_description(item);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_description");
XSRETURN(0);
#endif
}
/* menu_item_new */
XS(XS_Curses_new_item)
{
dXSARGS;
#ifdef C_NEW_ITEM
c_exactargs("new_item", items, 2);
{
char * name = (char *)SvPV_nolen(ST(0));
char * descr = (char *)SvPV_nolen(ST(1));
ITEM * ret = new_item(name, descr);
ST(0) = sv_newmortal();
c_item2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("new_item");
XSRETURN(0);
#endif
}
XS(XS_Curses_free_item)
{
dXSARGS;
#ifdef C_FREE_ITEM
c_exactargs("free_item", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
int ret = free_item(item);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("free_item");
XSRETURN(0);
#endif
}
/* menu_item_opts */
XS(XS_Curses_set_item_opts)
{
dXSARGS;
#ifdef C_SET_ITEM_OPTS
c_exactargs("set_item_opts", items, 2);
{
ITEM * item = c_sv2item(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = set_item_opts(item, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_item_opts");
XSRETURN(0);
#endif
}
XS(XS_Curses_item_opts_on)
{
dXSARGS;
#ifdef C_ITEM_OPTS_ON
c_exactargs("item_opts_on", items, 2);
{
ITEM * item = c_sv2item(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = item_opts_on(item, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_opts_on");
XSRETURN(0);
#endif
}
XS(XS_Curses_item_opts_off)
{
dXSARGS;
#ifdef C_ITEM_OPTS_OFF
c_exactargs("item_opts_off", items, 2);
{
ITEM * item = c_sv2item(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = item_opts_off(item, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_opts_off");
XSRETURN(0);
#endif
}
XS(XS_Curses_item_opts)
{
dXSARGS;
#ifdef C_ITEM_OPTS
c_exactargs("item_opts", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
int ret = item_opts(item);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_opts");
XSRETURN(0);
#endif
}
/* menu_item_userptr */
XS(XS_Curses_item_userptr)
{
dXSARGS;
#ifdef C_ITEM_USERPTR
c_exactargs("item_userptr", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
char * ret = (char *)item_userptr(item);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_userptr");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_item_userptr)
{
dXSARGS;
#ifdef C_SET_ITEM_USERPTR
c_exactargs("set_item_userptr", items, 2);
{
ITEM * item = c_sv2item(ST(0), 0);
char * ptr = (char *)SvPV_nolen(ST(1));
int ret = set_item_userptr(item, ptr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_item_userptr");
XSRETURN(0);
#endif
}
/* menu_item_value */
XS(XS_Curses_set_item_value)
{
dXSARGS;
#ifdef C_SET_ITEM_VALUE
c_exactargs("set_item_value", items, 2);
{
ITEM * item = c_sv2item(ST(0), 0);
bool val = (int)SvIV(ST(1));
int ret = set_item_value(item, val);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_item_value");
XSRETURN(0);
#endif
}
XS(XS_Curses_item_value)
{
dXSARGS;
#ifdef C_ITEM_VALUE
c_exactargs("item_value", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
bool ret = item_value(item);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_value");
XSRETURN(0);
#endif
}
/* menu_item_visible */
XS(XS_Curses_item_visible)
{
dXSARGS;
#ifdef C_ITEM_VISIBLE
c_exactargs("item_visible", items, 1);
{
ITEM * item = c_sv2item(ST(0), 0);
bool ret = item_visible(item);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("item_visible");
XSRETURN(0);
#endif
}
/* ncurses menu extension functions */
XS(XS_Curses_menu_request_name)
{
dXSARGS;
#ifdef C_MENU_REQUEST_NAME
c_exactargs("menu_request_name", items, 1);
{
int request = (int)SvIV(ST(0));
char * ret = (char *)menu_request_name(request);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_request_name");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_request_by_name)
{
dXSARGS;
#ifdef C_MENU_REQUEST_BY_NAME
c_exactargs("menu_request_by_name", items, 1);
{
char * name = (char *)SvPV_nolen(ST(0));
int ret = menu_request_by_name(name);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_request_by_name");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_menu_spacing)
{
dXSARGS;
#ifdef C_SET_MENU_SPACING
c_exactargs("set_menu_spacing", items, 4);
{
MENU * menu = c_sv2menu(ST(0), 0);
int descr = (int)SvIV(ST(1));
int rows = (int)SvIV(ST(2));
int cols = (int)SvIV(ST(3));
int ret = set_menu_spacing(menu, descr, rows, cols);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_menu_spacing");
XSRETURN(0);
#endif
}
XS(XS_Curses_menu_spacing)
{
dXSARGS;
#ifdef C_MENU_SPACING
c_exactargs("menu_spacing", items, 4);
{
MENU * menu = c_sv2menu(ST(0), 0);
int descr = 0;
int rows = 0;
int cols = 0;
int ret = menu_spacing(menu, &descr, &rows, &cols);
sv_setiv(ST(1), (IV)descr);;
sv_setiv(ST(2), (IV)rows);;
sv_setiv(ST(3), (IV)cols);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("menu_spacing");
XSRETURN(0);
#endif
}
/* Form functions */
/* form_cursor */
XS(XS_Curses_pos_form_cursor)
{
dXSARGS;
#ifdef C_POS_FORM_CURSOR
c_exactargs("pos_form_cursor", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = pos_form_cursor(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("pos_form_cursor");
XSRETURN(0);
#endif
}
/* form_data */
XS(XS_Curses_data_ahead)
{
dXSARGS;
#ifdef C_DATA_AHEAD
c_exactargs("data_ahead", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
bool ret = data_ahead(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("data_ahead");
XSRETURN(0);
#endif
}
XS(XS_Curses_data_behind)
{
dXSARGS;
#ifdef C_DATA_BEHIND
c_exactargs("data_behind", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
bool ret = data_behind(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("data_behind");
XSRETURN(0);
#endif
}
/* form_driver */
XS(XS_Curses_form_driver)
{
dXSARGS;
#ifdef C_FORM_DRIVER
c_exactargs("form_driver", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
int c = (int)SvIV(ST(1));
int ret = form_driver(form, c);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_driver");
XSRETURN(0);
#endif
}
/* form_field */
XS(XS_Curses_set_form_fields)
{
dXSARGS;
#ifdef C_SET_FORM_FIELDS
c_exactargs("set_form_fields", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
FIELD **fields = (FIELD **)SvPV_nolen(ST(1));
int ret = set_form_fields(form, fields);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_form_fields");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_fields)
{
dXSARGS;
#ifdef C_FORM_FIELDS
c_exactargs("form_fields", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
FIELD ** ret = form_fields(form);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), (char *)ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_fields");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_count)
{
dXSARGS;
#ifdef C_FIELD_COUNT
c_exactargs("field_count", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = field_count(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_count");
XSRETURN(0);
#endif
}
XS(XS_Curses_move_field)
{
dXSARGS;
#ifdef C_MOVE_FIELD
c_exactargs("move_field", items, 3);
{
FIELD * field = c_sv2field(ST(0), 0);
int frow = (int)SvIV(ST(1));
int fcol = (int)SvIV(ST(2));
int ret = move_field(field, frow, fcol);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("move_field");
XSRETURN(0);
#endif
}
/* form_new */
XS(XS_Curses_new_form) {
dXSARGS;
#ifdef C_NEW_FORM
c_exactargs("new_form", items, 1);
{
FIELD ** fields = (FIELD **)SvPV_nolen(ST(0));
FORM * ret = new_form(fields);
ST(0) = sv_newmortal();
c_form2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("new_form");
XSRETURN(0);
#endif
}
XS(XS_Curses_free_form)
{
dXSARGS;
#ifdef C_FREE_FORM
c_exactargs("free_form", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = free_form(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("free_form");
XSRETURN(0);
#endif
}
/* form_new_page */
XS(XS_Curses_set_new_page)
{
dXSARGS;
#ifdef C_SET_NEW_PAGE
c_exactargs("set_new_page", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
bool new_page_flag = (int)SvIV(ST(1));
int ret = set_new_page(field, new_page_flag);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_new_page");
XSRETURN(0);
#endif
}
XS(XS_Curses_new_page)
{
dXSARGS;
#ifdef C_NEW_PAGE
c_exactargs("new_page", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
bool ret = new_page(field);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("new_page");
XSRETURN(0);
#endif
}
/* form_opts */
XS(XS_Curses_set_form_opts)
{
dXSARGS;
#ifdef C_SET_FORM_OPTS
c_exactargs("set_form_opts", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = set_form_opts(form, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_form_opts");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_opts_on)
{
dXSARGS;
#ifdef C_FORM_OPTS_ON
c_exactargs("form_opts_on", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = form_opts_on(form, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_opts_on");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_opts_off)
{
dXSARGS;
#ifdef C_FORM_OPTS_OFF
c_exactargs("form_opts_off", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = form_opts_off(form, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_opts_off");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_opts)
{
dXSARGS;
#ifdef C_FORM_OPTS
c_exactargs("form_opts", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = form_opts(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_opts");
XSRETURN(0);
#endif
}
/* form_page */
XS(XS_Curses_set_current_field)
{
dXSARGS;
#ifdef C_SET_CURRENT_FIELD
c_exactargs("set_current_field", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
FIELD * field = c_sv2field(ST(1), 1);
int ret = set_current_field(form, field);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_current_field");
XSRETURN(0);
#endif
}
XS(XS_Curses_current_field)
{
dXSARGS;
#ifdef C_CURRENT_FIELD
c_exactargs("current_field", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
FIELD * ret = current_field(form);
ST(0) = sv_newmortal();
c_field2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("current_field");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_form_page)
{
dXSARGS;
#ifdef C_SET_FORM_PAGE
c_exactargs("set_form_page", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
int n = (int)SvIV(ST(1));
int ret = set_form_page(form, n);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_form_page");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_page)
{
dXSARGS;
#ifdef C_FORM_PAGE
c_exactargs("form_page", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = form_page(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_page");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_index)
{
dXSARGS;
#ifdef C_FIELD_INDEX
c_exactargs("field_index", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
int ret = field_index(field);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_index");
XSRETURN(0);
#endif
}
/* form_post */
XS(XS_Curses_post_form)
{
dXSARGS;
#ifdef C_POST_FORM
c_exactargs("post_form", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = post_form(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("post_form");
XSRETURN(0);
#endif
}
XS(XS_Curses_unpost_form)
{
dXSARGS;
#ifdef C_UNPOST_FORM
c_exactargs("unpost_form", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
int ret = unpost_form(form);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("unpost_form");
XSRETURN(0);
#endif
}
/* form_userptr */
XS(XS_Curses_set_form_userptr)
{
dXSARGS;
#ifdef C_SET_FORM_USERPTR
c_exactargs("set_form_userptr", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
char * userptr = (char *)SvPV_nolen(ST(1));
int ret = set_form_userptr(form, userptr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_form_userptr");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_userptr)
{
dXSARGS;
#ifdef C_FORM_USERPTR
c_exactargs("form_userptr", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
char * ret = form_userptr(form);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_userptr");
XSRETURN(0);
#endif
}
/* form_win */
XS(XS_Curses_set_form_win)
{
dXSARGS;
#ifdef C_SET_FORM_WIN
c_exactargs("set_form_win", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
WINDOW *win = c_sv2window(ST(1), 1);
int ret = set_form_win(form, win);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_form_win");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_win)
{
dXSARGS;
#ifdef C_FORM_WIN
c_exactargs("form_win", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
WINDOW * ret = form_win(form);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_win");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_form_sub)
{
dXSARGS;
#ifdef C_SET_FORM_SUB
c_exactargs("set_form_sub", items, 2);
{
FORM * form = c_sv2form(ST(0), 0);
WINDOW *sub = c_sv2window(ST(1), 1);
int ret = set_form_sub(form, sub);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_form_sub");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_sub)
{
dXSARGS;
#ifdef C_FORM_SUB
c_exactargs("form_sub", items, 1);
{
FORM * form = c_sv2form(ST(0), 0);
WINDOW * ret = form_sub(form);
ST(0) = sv_newmortal();
c_window2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_sub");
XSRETURN(0);
#endif
}
XS(XS_Curses_scale_form)
{
dXSARGS;
#ifdef C_SCALE_FORM
c_exactargs("scale_form", items, 3);
{
FORM * form = c_sv2form(ST(0), 0);
int rows = 0;
int cols = 0;
int ret = scale_form(form, &rows, &cols);
sv_setiv(ST(1), (IV)rows);;
sv_setiv(ST(2), (IV)cols);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("scale_form");
XSRETURN(0);
#endif
}
/* form_field_attributes */
XS(XS_Curses_set_field_fore)
{
dXSARGS;
#ifdef C_SET_FIELD_FORE
c_exactargs("set_field_fore", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
chtype attr = c_sv2chtype(ST(1));
int ret = set_field_fore(field, attr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_fore");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_fore)
{
dXSARGS;
#ifdef C_FIELD_FORE
c_exactargs("field_fore", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
chtype ret = field_fore(field);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_fore");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_field_back)
{
dXSARGS;
#ifdef C_SET_FIELD_BACK
c_exactargs("set_field_back", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
chtype attr = c_sv2chtype(ST(1));
int ret = set_field_back(field, attr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_back");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_back)
{
dXSARGS;
#ifdef C_FIELD_BACK
c_exactargs("field_back", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
chtype ret = field_back(field);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_back");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_field_pad)
{
dXSARGS;
#ifdef C_SET_FIELD_PAD
c_exactargs("set_field_pad", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
int pad = (int)SvIV(ST(1));
int ret = set_field_pad(field, pad);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_pad");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_pad)
{
dXSARGS;
#ifdef C_FIELD_PAD
c_exactargs("field_pad", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
chtype ret = field_pad(field);
ST(0) = sv_newmortal();
c_chtype2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_pad");
XSRETURN(0);
#endif
}
/* form_field_buffer */
XS(XS_Curses_set_field_buffer)
{
dXSARGS;
#ifdef C_SET_FIELD_BUFFER
c_exactargs("set_field_buffer", items, 3);
{
FIELD * field = c_sv2field(ST(0), 0);
int buf = (int)SvIV(ST(1));
char * value = (char *)SvPV_nolen(ST(2));
int ret = set_field_buffer(field, buf, value);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_buffer");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_buffer)
{
dXSARGS;
#ifdef C_FIELD_BUFFER
c_exactargs("field_buffer", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
int buffer = (int)SvIV(ST(1));
char * ret = field_buffer(field, buffer);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_buffer");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_field_status)
{
dXSARGS;
#ifdef C_SET_FIELD_STATUS
c_exactargs("set_field_status", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
bool status = (int)SvIV(ST(1));
int ret = set_field_status(field, status);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_status");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_status)
{
dXSARGS;
#ifdef C_FIELD_STATUS
c_exactargs("field_status", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
bool ret = field_status(field);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_status");
XSRETURN(0);
#endif
}
XS(XS_Curses_set_max_field)
{
dXSARGS;
#ifdef C_SET_MAX_FIELD
c_exactargs("set_max_field", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
int max = (int)SvIV(ST(1));
int ret = set_max_field(field, max);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_max_field");
XSRETURN(0);
#endif
}
/* form_field_info */
XS(XS_Curses_field_info)
{
dXSARGS;
#ifdef C_FIELD_INFO
c_exactargs("field_info", items, 7);
{
FIELD * field = c_sv2field(ST(0), 0);
int rows = 0;
int cols = 0;
int frow = 0;
int fcol = 0;
int nrow = 0;
int nbuf = 0;
int ret = field_info(field, &rows, &cols, &frow, &fcol, &nrow, &nbuf);
sv_setiv(ST(1), (IV)rows);;
sv_setiv(ST(2), (IV)cols);;
sv_setiv(ST(3), (IV)frow);;
sv_setiv(ST(4), (IV)fcol);;
sv_setiv(ST(5), (IV)nrow);;
sv_setiv(ST(6), (IV)nbuf);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_info");
XSRETURN(0);
#endif
}
XS(XS_Curses_dynamic_field_info)
{
dXSARGS;
#ifdef C_DYNAMIC_FIELD_INFO
c_exactargs("dynamic_field_info", items, 4);
{
FIELD * field = c_sv2field(ST(0), 0);
int rows = 0;
int cols = 0;
int max = 0;
int ret = dynamic_field_info(field, &rows, &cols, &max);
sv_setiv(ST(1), (IV)rows);;
sv_setiv(ST(2), (IV)cols);;
sv_setiv(ST(3), (IV)max);;
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("dynamic_field_info");
XSRETURN(0);
#endif
}
/* form_field_just */
XS(XS_Curses_set_field_just)
{
dXSARGS;
#ifdef C_SET_FIELD_JUST
c_exactargs("set_field_just", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
int justif = (int)SvIV(ST(1));
int ret = set_field_just(field, justif);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_just");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_just)
{
dXSARGS;
#ifdef C_FIELD_JUST
c_exactargs("field_just", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
int ret = field_just(field);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_just");
XSRETURN(0);
#endif
}
/* form_field_new */
XS(XS_Curses_new_field)
{
dXSARGS;
#ifdef C_NEW_FIELD
c_exactargs("new_field", items, 6);
{
int const height = (int)SvIV(ST(0));
int const width = (int)SvIV(ST(1));
int const toprow = (int)SvIV(ST(2));
int const leftcol = (int)SvIV(ST(3));
int const offscreen = (int)SvIV(ST(4));
int const nbuffers = (int)SvIV(ST(5));
FIELD * ret = new_field(height, width, toprow, leftcol, offscreen, nbuffers);
ST(0) = sv_newmortal();
c_field2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("new_field");
XSRETURN(0);
#endif
}
XS(XS_Curses_dup_field)
{
dXSARGS;
#ifdef C_DUP_FIELD
c_exactargs("dup_field", items, 3);
{
FIELD * field = c_sv2field(ST(0), 0);
int toprow = (int)SvIV(ST(1));
int leftcol = (int)SvIV(ST(2));
FIELD * ret = dup_field(field, toprow, leftcol);
ST(0) = sv_newmortal();
c_field2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("dup_field");
XSRETURN(0);
#endif
}
XS(XS_Curses_link_field)
{
dXSARGS;
#ifdef C_LINK_FIELD
c_exactargs("link_field", items, 3);
{
FIELD * field = c_sv2field(ST(0), 0);
int toprow = (int)SvIV(ST(1));
int leftcol = (int)SvIV(ST(2));
FIELD * ret = link_field(field, toprow, leftcol);
ST(0) = sv_newmortal();
c_field2sv(ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("link_field");
XSRETURN(0);
#endif
}
XS(XS_Curses_free_field)
{
dXSARGS;
#ifdef C_FREE_FIELD
c_exactargs("free_field", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
int ret = free_field(field);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("free_field");
XSRETURN(0);
#endif
}
/* form_field_opts */
XS(XS_Curses_set_field_opts)
{
dXSARGS;
#ifdef C_SET_FIELD_OPTS
c_exactargs("set_field_opts", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = set_field_opts(field, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_opts");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_opts_on)
{
dXSARGS;
#ifdef C_FIELD_OPTS_ON
c_exactargs("field_opts_on", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = field_opts_on(field, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_opts_on");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_opts_off)
{
dXSARGS;
#ifdef C_FIELD_OPTS_OFF
c_exactargs("field_opts_off", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
int opts = (int)SvIV(ST(1));
int ret = field_opts_off(field, opts);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_opts_off");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_opts)
{
dXSARGS;
#ifdef C_FIELD_OPTS
c_exactargs("field_opts", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
int ret = field_opts(field);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_opts");
XSRETURN(0);
#endif
}
/* form_field_userptr */
XS(XS_Curses_set_field_userptr)
{
dXSARGS;
#ifdef C_SET_FIELD_USERPTR
c_exactargs("set_field_userptr", items, 2);
{
FIELD * field = c_sv2field(ST(0), 0);
char * userptr = (char *)SvPV_nolen(ST(1));
int ret = set_field_userptr(field, userptr);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("set_field_userptr");
XSRETURN(0);
#endif
}
XS(XS_Curses_field_userptr)
{
dXSARGS;
#ifdef C_FIELD_USERPTR
c_exactargs("field_userptr", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
char * ret = field_userptr(field);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_userptr");
XSRETURN(0);
#endif
}
/* form_field_validation */
XS(XS_Curses_field_arg)
{
dXSARGS;
#ifdef C_FIELD_ARG
c_exactargs("field_arg", items, 1);
{
FIELD * field = c_sv2field(ST(0), 0);
char * ret = field_arg(field);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("field_arg");
XSRETURN(0);
#endif
}
/* ncurses form extension functions */
XS(XS_Curses_form_request_name)
{
dXSARGS;
#ifdef C_FORM_REQUEST_NAME
c_exactargs("form_request_name", items, 1);
{
int request = (int)SvIV(ST(0));
char * ret = (char *)form_request_name(request);
ST(0) = sv_newmortal();
sv_setpv((SV*)ST(0), ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_request_name");
XSRETURN(0);
#endif
}
XS(XS_Curses_form_request_by_name)
{
dXSARGS;
#ifdef C_FORM_REQUEST_BY_NAME
c_exactargs("form_request_by_name", items, 1);
{
char * name = (char *)SvPV_nolen(ST(0));
int ret = form_request_by_name(name);
ST(0) = sv_newmortal();
sv_setiv(ST(0), (IV)ret);
}
XSRETURN(1);
#else
c_fun_not_there("form_request_by_name");
XSRETURN(0);
#endif
}