ncurses_functions.c [plain text]
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_ini.h"
#include "php_ncurses.h"
#define FETCH_WINRES(r, z) ZEND_FETCH_RESOURCE(r, WINDOW **, z, -1, "ncurses_window", le_ncurses_windows)
#if HAVE_NCURSES_PANEL
# define FETCH_PANEL(r, z) ZEND_FETCH_RESOURCE(r, PANEL **, z, -1, "ncurses_panel", le_ncurses_panels)
#endif
#define IS_NCURSES_INITIALIZED() \
if (!NCURSES_G(registered_constants)) { \
php_error_docref(NULL TSRMLS_CC, E_WARNING, "You must initialize ncruses via ncurses_init(), before calling any ncurses functions."); \
RETURN_FALSE; \
}
PHP_FUNCTION(ncurses_addch)
{
long ch;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &ch) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(addch(ch));
}
PHP_FUNCTION(ncurses_waddch)
{
long ch;
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &handle, &ch) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(waddch(*win, ch));
}
#ifdef HAVE_NCURSES_COLOR_SET
PHP_FUNCTION(ncurses_color_set)
{
long pair;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &pair) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(color_set(pair,NULL));
}
#endif
PHP_FUNCTION(ncurses_delwin)
{
zval *handle;
WINDOW **w;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(w, &handle);
zend_list_delete(Z_LVAL_P(handle));
RETURN_TRUE;
}
PHP_FUNCTION(ncurses_end)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(endwin());
}
PHP_FUNCTION(ncurses_getch)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(getch());
}
PHP_FUNCTION(ncurses_has_colors)
{
IS_NCURSES_INITIALIZED();
RETURN_BOOL(has_colors());
}
PHP_FUNCTION(ncurses_init)
{
initscr();
keypad(stdscr, TRUE);
(void) nonl();
(void) cbreak();
if (!NCURSES_G(registered_constants)) {
zend_constant c;
WINDOW **pscr = (WINDOW**)emalloc(sizeof(WINDOW *));
zval *zscr;
*pscr = stdscr;
MAKE_STD_ZVAL(zscr);
ZEND_REGISTER_RESOURCE(zscr, pscr, le_ncurses_windows);
c.value = *zscr;
zval_copy_ctor(&c.value);
c.flags = CONST_CS;
c.name = zend_strndup(ZEND_STRL("STDSCR"));
c.name_len = sizeof("STDSCR");
zend_register_constant(&c TSRMLS_CC);
#define PHP_NCURSES_DEF_CONST(x) \
ZVAL_LONG(zscr, x); \
c.value = *zscr; \
zval_copy_ctor(&c.value); \
c.flags = CONST_CS; \
c.name = zend_strndup(ZEND_STRL("NCURSES_" #x)); \
c.name_len = sizeof("NCURSES_" #x); \
zend_register_constant(&c TSRMLS_CC)
PHP_NCURSES_DEF_CONST(ACS_ULCORNER);
PHP_NCURSES_DEF_CONST(ACS_LLCORNER);
PHP_NCURSES_DEF_CONST(ACS_URCORNER);
PHP_NCURSES_DEF_CONST(ACS_LRCORNER);
PHP_NCURSES_DEF_CONST(ACS_LTEE);
PHP_NCURSES_DEF_CONST(ACS_RTEE);
PHP_NCURSES_DEF_CONST(ACS_BTEE);
PHP_NCURSES_DEF_CONST(ACS_TTEE);
PHP_NCURSES_DEF_CONST(ACS_HLINE);
PHP_NCURSES_DEF_CONST(ACS_VLINE);
PHP_NCURSES_DEF_CONST(ACS_PLUS);
PHP_NCURSES_DEF_CONST(ACS_S1);
PHP_NCURSES_DEF_CONST(ACS_S9);
PHP_NCURSES_DEF_CONST(ACS_DIAMOND);
PHP_NCURSES_DEF_CONST(ACS_CKBOARD);
PHP_NCURSES_DEF_CONST(ACS_DEGREE);
PHP_NCURSES_DEF_CONST(ACS_PLMINUS);
PHP_NCURSES_DEF_CONST(ACS_BULLET);
PHP_NCURSES_DEF_CONST(ACS_LARROW);
PHP_NCURSES_DEF_CONST(ACS_RARROW);
PHP_NCURSES_DEF_CONST(ACS_DARROW);
PHP_NCURSES_DEF_CONST(ACS_UARROW);
PHP_NCURSES_DEF_CONST(ACS_BOARD);
PHP_NCURSES_DEF_CONST(ACS_LANTERN);
PHP_NCURSES_DEF_CONST(ACS_BLOCK);
FREE_ZVAL(zscr);
NCURSES_G(registered_constants) = 1;
}
}
PHP_FUNCTION(ncurses_init_pair)
{
long pair, fg, bg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &pair, &fg, &bg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(init_pair(pair,fg,bg));
}
PHP_FUNCTION(ncurses_move)
{
long x, y;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &y, &x) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(move(y,x));
}
PHP_FUNCTION(ncurses_newpad)
{
long rows,cols;
WINDOW **pwin;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &rows, &cols) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
pwin = (WINDOW **)emalloc(sizeof(WINDOW *));
*pwin = newpad(rows,cols);
if(!*pwin) {
efree(pwin);
RETURN_FALSE;
}
ZEND_REGISTER_RESOURCE(return_value, pwin, le_ncurses_windows);
}
PHP_FUNCTION(ncurses_prefresh)
{
WINDOW **pwin;
zval *phandle;
long pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllll", &phandle, &pminrow,
&pmincol, &sminrow, &smincol, &smaxrow, &smaxcol) == FAILURE) {
return;
}
FETCH_WINRES(pwin, &phandle);
RETURN_LONG(prefresh(*pwin, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol));
}
PHP_FUNCTION(ncurses_pnoutrefresh)
{
WINDOW **pwin;
zval *phandle;
long pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllll", &phandle, &pminrow,
&pmincol, &sminrow, &smincol, &smaxrow, &smaxcol) == FAILURE) {
return;
}
FETCH_WINRES(pwin, &phandle);
RETURN_LONG(pnoutrefresh(*pwin, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol));
}
PHP_FUNCTION(ncurses_newwin)
{
long rows,cols,y,x;
WINDOW **pwin;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &rows, &cols, &y, &x) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
pwin = (WINDOW **)emalloc(sizeof(WINDOW *));
*pwin=newwin(rows,cols,y,x);
if(!*pwin) {
efree(pwin);
RETURN_FALSE;
}
ZEND_REGISTER_RESOURCE(return_value, pwin, le_ncurses_windows);
}
PHP_FUNCTION(ncurses_refresh)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(refresh());
}
PHP_FUNCTION(ncurses_start_color)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(start_color());
}
PHP_FUNCTION(ncurses_standout)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(standout());
}
PHP_FUNCTION(ncurses_standend)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(standend());
}
PHP_FUNCTION(ncurses_baudrate)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(baudrate());
}
PHP_FUNCTION(ncurses_beep)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(beep());
}
PHP_FUNCTION(ncurses_can_change_color)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(can_change_color());
}
PHP_FUNCTION(ncurses_cbreak)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(cbreak());
}
PHP_FUNCTION(ncurses_clear)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(clear());
}
PHP_FUNCTION(ncurses_clrtobot)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(clrtobot());
}
PHP_FUNCTION(ncurses_clrtoeol)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(clrtoeol());
}
PHP_FUNCTION(ncurses_reset_prog_mode)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(reset_prog_mode());
}
PHP_FUNCTION(ncurses_reset_shell_mode)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(reset_shell_mode());
}
PHP_FUNCTION(ncurses_def_prog_mode)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(def_prog_mode());
}
PHP_FUNCTION(ncurses_def_shell_mode)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(def_shell_mode());
}
PHP_FUNCTION(ncurses_delch)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(delch());
}
PHP_FUNCTION(ncurses_deleteln)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(deleteln());
}
PHP_FUNCTION(ncurses_doupdate)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(doupdate());
}
PHP_FUNCTION(ncurses_echo)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(echo());
}
PHP_FUNCTION(ncurses_erase)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(erase());
}
PHP_FUNCTION(ncurses_erasechar)
{
char temp[2];
IS_NCURSES_INITIALIZED();
temp[0] = erasechar();
temp[1] = '\0';
RETURN_STRINGL (temp, 1, 1);
}
PHP_FUNCTION(ncurses_flash)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(flash());
}
PHP_FUNCTION(ncurses_flushinp)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(flushinp());
}
PHP_FUNCTION(ncurses_has_ic)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(has_ic());
}
PHP_FUNCTION(ncurses_has_il)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(has_il());
}
PHP_FUNCTION(ncurses_inch)
{
char temp[2];
IS_NCURSES_INITIALIZED();
temp[0] = inch();
temp[1] = '\0';
RETURN_STRINGL (temp, 1, 1);
}
PHP_FUNCTION(ncurses_insertln)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(insertln());
}
PHP_FUNCTION(ncurses_isendwin)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(isendwin());
}
PHP_FUNCTION(ncurses_killchar)
{
char temp[2];
IS_NCURSES_INITIALIZED();
temp[0] = killchar();
temp[1] = '\0';
RETURN_STRINGL (temp, 1, 1);
}
PHP_FUNCTION(ncurses_nl)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(nl());
}
PHP_FUNCTION(ncurses_nocbreak)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(nocbreak());
}
PHP_FUNCTION(ncurses_noecho)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(noecho());
}
PHP_FUNCTION(ncurses_nonl)
{
RETURN_LONG(nonl());
}
PHP_FUNCTION(ncurses_noraw)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(noraw());
}
PHP_FUNCTION(ncurses_raw)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(raw());
}
PHP_FUNCTION(ncurses_meta)
{
zend_bool enable;
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &handle, &enable) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(meta(*win, enable));
}
PHP_FUNCTION(ncurses_werase)
{
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(werase(*win));
}
PHP_FUNCTION(ncurses_resetty)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(resetty());
}
PHP_FUNCTION(ncurses_savetty)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(savetty());
}
PHP_FUNCTION(ncurses_termattrs)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(termattrs());
}
PHP_FUNCTION(ncurses_use_default_colors)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(use_default_colors());
}
PHP_FUNCTION(ncurses_slk_attr)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_attr());
}
PHP_FUNCTION(ncurses_slk_clear)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_clear());
}
PHP_FUNCTION(ncurses_slk_noutrefresh)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_noutrefresh());
}
PHP_FUNCTION(ncurses_slk_refresh)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_refresh());
}
PHP_FUNCTION(ncurses_slk_restore)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_restore());
}
PHP_FUNCTION(ncurses_slk_touch)
{
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_touch());
}
PHP_FUNCTION(ncurses_slk_set)
{
char *str;
int len;
long labelnr;
long format;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lsl", &labelnr, &str, &len, &format) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_BOOL(slk_set(labelnr, str, format));
}
PHP_FUNCTION(ncurses_attroff)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(attroff(intarg));
}
PHP_FUNCTION(ncurses_attron)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(attron(intarg));
}
PHP_FUNCTION(ncurses_attrset)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(attrset(intarg));
}
PHP_FUNCTION(ncurses_bkgd)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(bkgd(intarg));
}
PHP_FUNCTION(ncurses_curs_set)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(curs_set(intarg));
}
PHP_FUNCTION(ncurses_delay_output)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(delay_output(intarg));
}
PHP_FUNCTION(ncurses_echochar)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(echochar(intarg));
}
PHP_FUNCTION(ncurses_halfdelay)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(halfdelay(intarg));
}
PHP_FUNCTION(ncurses_has_key)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(has_key(intarg));
}
PHP_FUNCTION(ncurses_insch)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(insch(intarg));
}
PHP_FUNCTION(ncurses_insdelln)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(insdelln(intarg));
}
PHP_FUNCTION(ncurses_mouseinterval)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mouseinterval(intarg));
}
PHP_FUNCTION(ncurses_napms)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(napms(intarg));
}
PHP_FUNCTION(ncurses_scrl)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(scrl(intarg));
}
PHP_FUNCTION(ncurses_slk_attroff)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_attroff(intarg));
}
PHP_FUNCTION(ncurses_slk_attron)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_attron(intarg));
}
PHP_FUNCTION(ncurses_slk_attrset)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_attrset(intarg));
}
#ifdef HAVE_NCURSES_SLK_COLOR
PHP_FUNCTION(ncurses_slk_color)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_color(intarg));
}
#endif
PHP_FUNCTION(ncurses_slk_init)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(slk_init(intarg));
}
PHP_FUNCTION(ncurses_typeahead)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(typeahead(intarg));
}
PHP_FUNCTION(ncurses_ungetch)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(ungetch(intarg));
}
PHP_FUNCTION(ncurses_vidattr)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(vidattr(intarg));
}
#ifdef HAVE_NCURSES_USE_EXTENDED_NAMES
PHP_FUNCTION(ncurses_use_extended_names)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(use_extended_names(intarg));
}
#endif
PHP_FUNCTION(ncurses_bkgdset)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
bkgdset(intarg);
}
PHP_FUNCTION(ncurses_filter)
{
IS_NCURSES_INITIALIZED();
filter();
}
PHP_FUNCTION(ncurses_noqiflush)
{
IS_NCURSES_INITIALIZED();
noqiflush();
}
PHP_FUNCTION(ncurses_qiflush)
{
IS_NCURSES_INITIALIZED();
qiflush();
}
PHP_FUNCTION(ncurses_timeout)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
timeout(intarg);
}
PHP_FUNCTION(ncurses_use_env)
{
long intarg;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &intarg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
use_env(intarg);
}
PHP_FUNCTION(ncurses_addstr)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(addstr(str));
}
PHP_FUNCTION(ncurses_putp)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(putp(str));
}
PHP_FUNCTION(ncurses_scr_dump)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(scr_dump(str));
}
PHP_FUNCTION(ncurses_scr_init)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(scr_init(str));
}
PHP_FUNCTION(ncurses_scr_restore)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(scr_restore(str));
}
PHP_FUNCTION(ncurses_scr_set)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(scr_set(str));
}
PHP_FUNCTION(ncurses_mvaddch)
{
long y,x,c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &y, &x, &c) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvaddch(y,x,c));
}
PHP_FUNCTION(ncurses_mvaddchnstr)
{
long y,x,n;
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llsl", &y, &x, &str, &str_len, &n) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvaddchnstr(y,x,(chtype *)str,n));
}
PHP_FUNCTION(ncurses_addchnstr)
{
long n;
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(addchnstr((chtype *)str,n));
}
PHP_FUNCTION(ncurses_mvaddchstr)
{
long y,x;
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &y, &x, &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvaddchstr(y,x,(chtype *)str));
}
PHP_FUNCTION(ncurses_addchstr)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(addchstr((chtype *)str));
}
PHP_FUNCTION(ncurses_mvaddnstr)
{
long y,x,n;
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llsl", &y, &x, &str, &str_len, &n) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvaddnstr(y,x,str,n));
}
PHP_FUNCTION(ncurses_addnstr)
{
long n;
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(addnstr(str,n));
}
PHP_FUNCTION(ncurses_mvaddstr)
{
long y,x;
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls", &y, &x, &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvaddstr(y,x,str));
}
PHP_FUNCTION(ncurses_mvdelch)
{
long y,x;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &y, &x) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvdelch(y,x));
}
PHP_FUNCTION(ncurses_mvgetch)
{
long y,x;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &y, &x) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvgetch(y,x));
}
PHP_FUNCTION(ncurses_mvinch)
{
long y,x;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &y, &x) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvinch(y,x));
}
PHP_FUNCTION(ncurses_insstr)
{
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(insstr(str));
}
PHP_FUNCTION(ncurses_instr)
{
ulong retval;
zval *param;
char *str;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", ¶m) == FAILURE ) {
return;
}
IS_NCURSES_INITIALIZED();
str = (char *)emalloc(COLS + 1);
retval = instr(str);
ZVAL_STRING(param, str, 1);
efree(str);
RETURN_LONG(retval);
}
PHP_FUNCTION(ncurses_mvhline)
{
long i1,i2,i3,i4;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &i1, &i2, &i3, &i4) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvhline(i1,i2,i3,i4));
}
PHP_FUNCTION(ncurses_mvvline)
{
long i1,i2,i3,i4;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &i1, &i2, &i3, &i4) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvvline(i1,i2,i3,i4));
}
PHP_FUNCTION(ncurses_mvcur)
{
long i1,i2,i3,i4;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &i1, &i2, &i3, &i4) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(mvcur(i1,i2,i3,i4));
}
PHP_FUNCTION(ncurses_init_color)
{
long i1,i2,i3,i4;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &i1, &i2, &i3, &i4) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(init_color(i1,i2,i3,i4));
}
PHP_FUNCTION(ncurses_color_content)
{
zval *r, *g, *b;
short rv, gv, bv;
int retval;
long c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lzzz", &c, &r, &g, &b) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
retval = color_content(c, &rv, &gv, &bv);
ZVAL_LONG(r, rv);
ZVAL_LONG(g, gv);
ZVAL_LONG(b, bv);
RETURN_LONG(retval);
}
PHP_FUNCTION(ncurses_pair_content)
{
zval *f, *b;
short fv, bv;
int retval;
long p;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lzz", &p, &f, &b) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
retval = pair_content(p, &fv, &bv);
ZVAL_LONG(f, fv);
ZVAL_LONG(b, bv);
RETURN_LONG(retval);
}
PHP_FUNCTION(ncurses_border)
{
long i1,i2,i3,i4,i5,i6,i7,i8;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llllllll", &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(border(i1,i2,i3,i4,i5,i6,i7,i8));
}
PHP_FUNCTION(ncurses_wborder)
{
long i1,i2,i3,i4,i5,i6,i7,i8;
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllllll", &handle, &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wborder(*win,i1,i2,i3,i4,i5,i6,i7,i8));
}
#ifdef HAVE_NCURSES_ASSUME_DEFAULT_COLORS
PHP_FUNCTION(ncurses_assume_default_colors)
{
long i1,i2;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &i1, &i2) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(assume_default_colors(i1,i2));
}
#endif
PHP_FUNCTION(ncurses_define_key)
{
long n;
char *str;
int str_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(define_key(str,n));
}
PHP_FUNCTION(ncurses_hline)
{
long i1,i2;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &i1, &i2) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(hline(i1,i2));
}
PHP_FUNCTION(ncurses_vline)
{
long i1,i2;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &i1, &i2) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(vline(i1,i2));
}
PHP_FUNCTION(ncurses_whline)
{
long i1,i2;
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &handle, &i1, &i2) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(whline(*win,i1,i2));
}
PHP_FUNCTION(ncurses_wvline)
{
long i1,i2;
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &handle, &i1, &i2) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wvline(*win,i1,i2));
}
PHP_FUNCTION(ncurses_keyok)
{
long i,b;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &i, &b) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
RETURN_LONG(hline(i,b));
}
PHP_FUNCTION(ncurses_mvwaddstr)
{
zval *handle;
long y, x;
int text_len;
char *text;
WINDOW **w;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlls", &handle, &y, &x, &text, &text_len) == FAILURE) {
return;
}
FETCH_WINRES(w, &handle);
RETURN_LONG(mvwaddstr(*w,y,x,text));
}
PHP_FUNCTION(ncurses_wrefresh)
{
zval *handle;
WINDOW **w;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(w, &handle);
RETURN_LONG(wrefresh(*w));
}
PHP_FUNCTION(ncurses_termname)
{
char temp[15];
IS_NCURSES_INITIALIZED();
strlcpy(temp, termname(), sizeof(temp));
RETURN_STRINGL (temp, strlen(temp), 1);
}
PHP_FUNCTION(ncurses_longname)
{
char temp[128];
IS_NCURSES_INITIALIZED();
strlcpy(temp, longname(), sizeof(temp));
RETURN_STRINGL (temp, strlen(temp), 1);
}
PHP_FUNCTION(ncurses_mousemask)
{
ulong oldmask;
ulong retval;
zval *param;
long newmask;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz", &newmask, ¶m) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
retval = mousemask(newmask, &oldmask);
ZVAL_LONG(param, oldmask);
RETURN_LONG(retval);
}
PHP_FUNCTION(ncurses_getmouse)
{
zval *arg;
MEVENT mevent;
ulong retval;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
zval_dtor(arg);
array_init(arg);
retval = getmouse(&mevent);
add_assoc_long(arg, "id", mevent.id);
add_assoc_long(arg, "x", mevent.x);
add_assoc_long(arg, "y", mevent.y);
add_assoc_long(arg, "z", mevent.z);
add_assoc_long(arg, "mmask", mevent.bstate);
RETURN_BOOL(retval == 0);
}
PHP_FUNCTION(ncurses_ungetmouse)
{
zval *arg, **zvalue;
MEVENT mevent;
ulong retval;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arg) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
if (zend_hash_find(Z_ARRVAL_P(arg), "id", sizeof("id"), (void **) &zvalue) == SUCCESS) {
convert_to_long_ex(zvalue);
mevent.id = Z_LVAL_PP(zvalue);
}
if (zend_hash_find(Z_ARRVAL_P(arg), "x", sizeof("x"), (void **) &zvalue) == SUCCESS) {
convert_to_long_ex(zvalue);
mevent.x = Z_LVAL_PP(zvalue);
}
if (zend_hash_find(Z_ARRVAL_P(arg), "y", sizeof("y"), (void **) &zvalue) == SUCCESS) {
convert_to_long_ex(zvalue);
mevent.y = Z_LVAL_PP(zvalue);
}
if (zend_hash_find(Z_ARRVAL_P(arg), "z", sizeof("z"), (void **) &zvalue) == SUCCESS) {
convert_to_long_ex(zvalue);
mevent.z = Z_LVAL_PP(zvalue);
}
if (zend_hash_find(Z_ARRVAL_P(arg), "mmask", sizeof("mmask"), (void **) &zvalue) == SUCCESS) {
convert_to_long_ex(zvalue);
mevent.bstate = Z_LVAL_PP(zvalue);
}
retval = ungetmouse(&mevent);
RETURN_LONG(retval);
}
PHP_FUNCTION(ncurses_mouse_trafo)
{
zval *x, *y;
zend_bool toscreen;
int nx, ny, retval;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzb", &y, &x, &toscreen) == FAILURE) {
return;
}
IS_NCURSES_INITIALIZED();
convert_to_long(y);
convert_to_long(x);
nx = Z_LVAL_P(x);
ny = Z_LVAL_P(y);
retval = mouse_trafo(&ny, &nx, toscreen);
ZVAL_LONG(x, nx);
ZVAL_LONG(y, ny);
RETURN_BOOL(retval);
}
PHP_FUNCTION(ncurses_wmouse_trafo)
{
zval *handle, *x, *y;
int nx, ny, retval;
WINDOW **win;
zend_bool toscreen;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rzzb", &handle, &y, &x, &toscreen) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
convert_to_long(x);
convert_to_long(y);
nx = Z_LVAL_P(x);
ny = Z_LVAL_P(y);
retval = wmouse_trafo (*win, &ny, &nx, toscreen);
ZVAL_LONG(x, nx);
ZVAL_LONG(y, ny);
RETURN_BOOL(retval);
}
PHP_FUNCTION(ncurses_getyx)
{
zval *handle, *x, *y;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rzz", &handle, &y, &x) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
convert_to_long(x);
convert_to_long(y);
getyx(*win, Z_LVAL_P(y), Z_LVAL_P(x));
}
PHP_FUNCTION(ncurses_getmaxyx)
{
zval *handle, *x, *y;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rzz", &handle, &y, &x) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
convert_to_long(x);
convert_to_long(y);
getmaxyx(*win, Z_LVAL_P(y), Z_LVAL_P(x));
}
PHP_FUNCTION(ncurses_wmove)
{
zval *handle, *x, *y;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rzz", &handle, &y, &x) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
convert_to_long(x);
convert_to_long(y);
RETURN_LONG(wmove(*win, Z_LVAL_P(y), Z_LVAL_P(x)));
}
PHP_FUNCTION(ncurses_keypad)
{
zval *handle;
zend_bool bf;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &handle, &bf) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(keypad(*win, bf));
}
#ifdef HAVE_NCURSES_COLOR_SET
PHP_FUNCTION(ncurses_wcolor_set)
{
zval *handle;
long color_pair;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &handle, &color_pair) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wcolor_set(*win, color_pair, 0));
}
#endif
PHP_FUNCTION(ncurses_wclear)
{
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wclear(*win));
}
PHP_FUNCTION(ncurses_wnoutrefresh)
{
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wnoutrefresh(*win));
}
PHP_FUNCTION(ncurses_waddstr)
{
zval *handle;
char *str;
int str_len;
long n = 0;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &handle, &str, &str_len, &n) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
if (!n) {
RETURN_LONG(waddstr(*win, str));
} else {
RETURN_LONG(waddnstr(*win, str, n));
}
}
PHP_FUNCTION(ncurses_wgetch)
{
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wgetch(*win));
}
PHP_FUNCTION(ncurses_wattroff)
{
zval *handle;
WINDOW **win;
long attrs;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &handle, &attrs) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wattroff(*win, attrs));
}
PHP_FUNCTION(ncurses_wattron)
{
zval *handle;
WINDOW **win;
long attrs;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &handle, &attrs) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wattron(*win, attrs));
}
PHP_FUNCTION(ncurses_wattrset)
{
zval *handle;
WINDOW **win;
long attrs;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &handle, &attrs) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wattrset(*win, attrs));
}
PHP_FUNCTION(ncurses_wstandend)
{
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wstandend(*win));
}
PHP_FUNCTION(ncurses_wstandout)
{
zval *handle;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
RETURN_LONG(wstandout(*win));
}
#if HAVE_NCURSES_PANEL
PHP_FUNCTION(ncurses_new_panel)
{
zval *handle;
WINDOW **win;
PANEL **panel;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_WINRES(win, &handle);
panel = (PANEL **)emalloc(sizeof(PANEL *));
*panel = new_panel(*win);
if (*panel == NULL) {
efree(panel);
RETURN_FALSE;
} else {
long id = ZEND_REGISTER_RESOURCE(return_value, panel, le_ncurses_panels);
set_panel_userptr(*panel, (void*)id);
}
}
PHP_FUNCTION(ncurses_del_panel)
{
zval *handle;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
zend_list_delete(Z_RESVAL_P(handle));
RETURN_TRUE;
}
PHP_FUNCTION(ncurses_hide_panel)
{
zval *handle;
PANEL **panel;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_PANEL(panel, &handle);
RETURN_LONG(hide_panel(*panel));
}
PHP_FUNCTION(ncurses_show_panel)
{
zval *handle;
PANEL **panel;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_PANEL(panel, &handle);
RETURN_LONG(show_panel(*panel));
}
PHP_FUNCTION(ncurses_top_panel)
{
zval *handle;
PANEL **panel;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_PANEL(panel, &handle);
RETURN_LONG(top_panel(*panel));
}
PHP_FUNCTION(ncurses_bottom_panel)
{
zval *handle;
PANEL **panel;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &handle) == FAILURE) {
return;
}
FETCH_PANEL(panel, &handle);
RETURN_LONG(bottom_panel(*panel));
}
PHP_FUNCTION(ncurses_move_panel)
{
zval *handle;
PANEL **panel;
long startx, starty;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &handle, &startx, &starty) == FAILURE) {
return;
}
FETCH_PANEL(panel, &handle);
RETURN_LONG(move_panel(*panel, startx, starty));
}
PHP_FUNCTION(ncurses_replace_panel)
{
zval *phandle, *whandle;
PANEL **panel;
WINDOW **window;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr", &phandle, &whandle) == FAILURE) {
return;
}
FETCH_PANEL(panel, &phandle);
FETCH_WINRES(window, &whandle);
RETURN_LONG(replace_panel(*panel, *window));
}
PHP_FUNCTION(ncurses_panel_above)
{
zval *phandle = NULL;
PANEL **panel;
PANEL *above;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r!", &phandle) == FAILURE) {
return;
}
if (phandle) {
FETCH_PANEL(panel, &phandle);
above = panel_above(*panel);
} else {
IS_NCURSES_INITIALIZED();
above = panel_above((PANEL *)0);
}
if (above) {
long id = (long)panel_userptr(above);
zend_list_addref(id);
RETURN_RESOURCE(id);
} else {
RETURN_FALSE;
}
}
PHP_FUNCTION(ncurses_panel_below)
{
zval *phandle = NULL;
PANEL **panel;
PANEL *below;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r!", &phandle) == FAILURE) {
return;
}
if (phandle) {
FETCH_PANEL(panel, &phandle);
below = panel_below(*panel);
} else {
below = panel_below((PANEL *)0);
}
if (below) {
long id = (long)panel_userptr(below);
zend_list_addref(id);
RETURN_RESOURCE(id);
} else {
RETURN_FALSE;
}
}
PHP_FUNCTION(ncurses_panel_window)
{
zval *phandle = NULL;
PANEL **panel;
WINDOW **win;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &phandle) == FAILURE) {
return;
}
FETCH_PANEL(panel, &phandle);
win = (WINDOW **)emalloc(sizeof(WINDOW *));
*win = panel_window(*panel);
if (*win == NULL) {
efree(win);
RETURN_FALSE;
}
ZEND_REGISTER_RESOURCE(return_value, win, le_ncurses_windows);
}
PHP_FUNCTION(ncurses_update_panels)
{
IS_NCURSES_INITIALIZED();
update_panels();
}
#endif