]> granicus.if.org Git - php/commitdiff
- new parameter parsing api used
authorHartmut Holzgraefe <hholzgra@php.net>
Thu, 13 Dec 2001 09:06:11 +0000 (09:06 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Thu, 13 Dec 2001 09:06:11 +0000 (09:06 +0000)
- added proto descriptions (not complete)
- swapped x/y arguments
- indentation style fix (no seperate WS fix as most of the file changed anyway)

ext/ncurses/ncurses_functions.c

index 31c26799e7d77ddef3241da14671ea706f4a89bc..57859b4465c5a6cd30bc6b2715e4f8de3929106a 100644 (file)
@@ -1,21 +1,21 @@
 /*
-   +----------------------------------------------------------------------+
-   | PHP Version 4                                                        |
-   +----------------------------------------------------------------------+
-   | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group             |
-   +----------------------------------------------------------------------+
-   | This source file is subject to version 2.02 of the PHP license,      |
-   | that is bundled with this package in the file LICENSE, and is        |
-   | available at through the world-wide-web at                           |
-   | http://www.php.net/license/2_02.txt.                                 |
-   | If you did not receive a copy of the PHP license and are unable to   |
-   | obtain it through the world-wide-web, please send a note to          |
-   | license@php.net so we can mail you a copy immediately.               |
-   +----------------------------------------------------------------------+
-   | Authors: Hartmut Holzgraefe <hartmut@six.de>                         |
-   |                                                                      |
-   +----------------------------------------------------------------------+
- */
+  +----------------------------------------------------------------------+
+  | PHP Version 4                                                        |
+  +----------------------------------------------------------------------+
+  | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group             |
+  +----------------------------------------------------------------------+
+  | This source file is subject to version 2.02 of the PHP license,      |
+  | that is bundled with this package in the file LICENSE, and is        |
+  | available at through the world-wide-web at                           |
+  | http://www.php.net/license/2_02.txt.                                 |
+  | If you did not receive a copy of the PHP license and are unable to   |
+  | obtain it through the world-wide-web, please send a note to          |
+  | license@php.net so we can mail you a copy immediately.               |
+  +----------------------------------------------------------------------+
+  | Authors: Hartmut Holzgraefe <hartmut@six.de>                         |
+  |                                                                      |
+  +----------------------------------------------------------------------+
+*/
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 
 
 /* {{{ proto int ncurses_addch(int ch)
-    */
+   Add character at current position and advance cursor */
 PHP_FUNCTION(ncurses_addch)
 {
-  zval **ch;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &ch) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(ch);
-
-  RETURN_LONG(addch(_INT(ch)));
+       long ch;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&ch)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(addch(ch));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_color_set(int pair)
-    */
+   Set fore- and background color */
 PHP_FUNCTION(ncurses_color_set)
 {
 #ifdef HAVE_NCURSES_COLOR_SET
-  zval **pair;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &pair) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(pair);
-  RETURN_LONG(color_set(_INT(pair),NULL));
+       long pair;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&pair)==FAILURE) {
+               return;
+       }
+       RETURN_LONG(color_set(pair,NULL));
 #else
-  php_error(E_WARNING,"%s not supported in this build");
-  RETURN_FALSE;
+       php_error(E_WARNING,"%s not supported in this build");
+       RETURN_FALSE;
 #endif  
 }
 /* }}} */
 
 /* {{{ proto int ncurses_delwin(resource window)
-    */
+   Delete a ncurses window */
 PHP_FUNCTION(ncurses_delwin)
 {
-  zval **handle;
-  WINDOW *w;
+       zval **handle;
+       WINDOW *w;
 
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &handle) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
+       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &handle) == FAILURE){
+               WRONG_PARAM_COUNT;
+       }
 
-  FETCH_WINRES(w,handle);
+       FETCH_WINRES(w,handle);
 
-  zend_list_delete(_INT(handle));
+       zend_list_delete(Z_LVAL_PP(handle));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_end()
-    */
+   Stop using ncurses, clean up the screen */
 PHP_FUNCTION(ncurses_end)
 {
-  RETURN_LONG(endwin());             /* endialize the curses library */
+       RETURN_LONG(endwin());             /* endialize the curses library */
 }
 /* }}} */
 
 /* {{{ proto int ncurses_getch()
-    */
+   Read a character from keyboard */
 PHP_FUNCTION(ncurses_getch)
 {
-  RETURN_LONG(getch());
+       RETURN_LONG(getch());
 }
 /* }}} */
 
-/* {{{ proto int ncurses_has_colors()
-    */
+/* {{{ proto bool ncurses_has_colors()
+   Check if terminal has colors */
 PHP_FUNCTION(ncurses_has_colors)
 {
-  RETURN_LONG(has_colors());
+       RETURN_BOOL(has_colors());
 }
 /* }}} */
 
 /* {{{ proto int ncurses_init()
-    */
+   Initialize ncurses */
 PHP_FUNCTION(ncurses_init)
 {
-  initscr();             /* initialize the curses library */
-  keypad(stdscr, TRUE);  /* enable keyboard mapping */
-  (void) nonl();         /* tell curses not to do NL->CR/NL on output */
-  (void) cbreak();       /* take input chars one at a time, no wait for \n */}
+       initscr();             /* initialize the curses library */
+       keypad(stdscr, TRUE);  /* enable keyboard mapping */
+       (void) nonl();         /* tell curses not to do NL->CR/NL on output */
+       (void) cbreak();       /* take input chars one at a time, no wait for \n */}
 /* }}} */
 
 /* {{{ proto int ncurses_init_pair(int pair, int fg, int bg)
-    */
+   Allocate a color pair */
 PHP_FUNCTION(ncurses_init_pair)
 {
-  zval **pair, **fg, **bg;
-  if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &pair, &fg, &bg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(pair);
-  convert_to_long_ex(fg);
-  convert_to_long_ex(bg);
+       long pair, fg, bg;
 
-  RETURN_LONG(init_pair(_INT(pair),_INT(fg),_INT(bg)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll",&pair,&fg,&bg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(init_pair(pair,fg,bg));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_move(int x, int y)
-    */
+/* {{{ proto int ncurses_move(int y, int x)
+   Move output position */
 PHP_FUNCTION(ncurses_move)
 {
-  zval **x, **y;
-  if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &x, &y) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-
-  RETURN_LONG(move(_INT(x),_INT(y)));
+       long x, y;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll",&y,&x)==FAILURE) {
+               return;
+       }
+       RETURN_LONG(move(y,x));
 }
 /* }}} */
 
+
 /* {{{ proto int ncurses_newwin(int rows, int cols, int y, int x)
-    */
+   Create a new window */
 PHP_FUNCTION(ncurses_newwin)
 {
-  zval **rows,**cols,**y,**x;
-  WINDOW **pwin = (WINDOW **)emalloc(sizeof(WINDOW *));
+       long rows,cols,y,x;
+       WINDOW **pwin = (WINDOW **)emalloc(sizeof(WINDOW *));
 
-  if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &rows,&cols,&y,&x) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll",&rows,&cols,&y,&x)==FAILURE) {
+               return;
+       }
   
-  convert_to_long_ex(rows);
-  convert_to_long_ex(cols);
-  convert_to_long_ex(y);
-  convert_to_long_ex(x);
-
-  *pwin=newwin(_INT(rows),_INT(cols),_INT(y),_INT(x));
+       *pwin=newwin(rows,cols,y,x);
   
-  if(!*pwin) {
-    efree(pwin);
-    RETURN_FALSE;
-  }
+       if(!*pwin) {
+               efree(pwin);
+               RETURN_FALSE;
+       }
 
-  ZEND_REGISTER_RESOURCE(return_value, pwin, le_ncurses);
+       ZEND_REGISTER_RESOURCE(return_value, pwin, le_ncurses);
 }
 /* }}} */
 
 /* {{{ proto int ncurses_refresh(int ch)
-    */
+   Refresh screen */
 PHP_FUNCTION(ncurses_refresh)
 {
-  RETURN_LONG(refresh());
+       RETURN_LONG(refresh());
 }
 /* }}} */
 
 /* {{{ proto int ncurses_start_color()
-    */
+   Start using colors */
 PHP_FUNCTION(ncurses_start_color)
 {
-  RETURN_LONG(start_color());
+       RETURN_LONG(start_color());
 }
 /* }}} */
 
-/* ----- */
-
 /* {{{ proto int ncurses_standout()
-    */
+   Start using 'standout' attribute */
 PHP_FUNCTION(ncurses_standout)
 {
-  RETURN_LONG(standout());
+       RETURN_LONG(standout());
 }
 /* }}} */
 
 /* {{{ proto int ncurses_standend()
-    */
+   Stop using 'standout' attribute */
 PHP_FUNCTION(ncurses_standend)
 {
-  RETURN_LONG(standend());
+       RETURN_LONG(standend());
 }
 /* }}} */
 
 /* {{{ proto int ncurses_baudrate()
-    */
+   Return baudrate of terminal */
 PHP_FUNCTION(ncurses_baudrate)
 {
-  RETURN_LONG(baudrate());
+       RETURN_LONG(baudrate());
 }
 /* }}} */
 
 /* {{{ proto int ncurses_beep()
-    */
+   Let the terminal beep */
 PHP_FUNCTION(ncurses_beep)
 {
-  RETURN_LONG(beep());
+       RETURN_LONG(beep());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_can_change_color()
-    */
+   Check if we can change terminals colors */
 PHP_FUNCTION(ncurses_can_change_color)
 {
-  RETURN_LONG(can_change_color());
-}
+       RETURN_LONG(can_change_color());
+} 
 /* }}} */
 
 /* {{{ proto bool ncurses_cbreak()
-    */
+   Switch of input buffering */
 PHP_FUNCTION(ncurses_cbreak)
 {
-  RETURN_LONG(cbreak());
+       RETURN_LONG(cbreak());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_clear()
-    */
+   Clear screen */
 PHP_FUNCTION(ncurses_clear)
 {
-  RETURN_LONG(clear());
+       RETURN_LONG(clear());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_clrtobot()
-    */
+   Clear screen from current position to bottom */
 PHP_FUNCTION(ncurses_clrtobot)
 {
-  RETURN_LONG(clrtobot());
+       RETURN_LONG(clrtobot());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_clrtoeol()
-    */
+   Clear screen from current position to end of line */
 PHP_FUNCTION(ncurses_clrtoeol)
 {
-  RETURN_LONG(clrtoeol());
+       RETURN_LONG(clrtoeol());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_def_prog_mode()
   */
+ */
 PHP_FUNCTION(ncurses_def_prog_mode)
 {
-  RETURN_LONG(def_prog_mode());
+       RETURN_LONG(def_prog_mode());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_def_shell_mode()
   */
+ */
 PHP_FUNCTION(ncurses_def_shell_mode)
 {
-  RETURN_LONG(def_shell_mode());
+       RETURN_LONG(def_shell_mode());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_delch()
-    */
+   Delete character at current position, move rest of line left */
 PHP_FUNCTION(ncurses_delch)
 {
-  RETURN_LONG(delch());
+       RETURN_LONG(delch());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_deleteln()
-    */
+   Delete line at current position, move rest of screen up */
 PHP_FUNCTION(ncurses_deleteln)
 {
-  RETURN_LONG(deleteln());
+       RETURN_LONG(deleteln());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_doupdate()
-    */
+   Write all prepared refreshes to terminal */
 PHP_FUNCTION(ncurses_doupdate)
 {
-  RETURN_LONG(doupdate());
+       RETURN_LONG(doupdate());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_echo()
-    */
+   Activate keyboard input echo */
 PHP_FUNCTION(ncurses_echo)
 {
-  RETURN_LONG(echo());
+       RETURN_LONG(echo());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_erase()
-    */
+   Erease terminal screen */
 PHP_FUNCTION(ncurses_erase)
 {
-  RETURN_LONG(erase());
+       RETURN_LONG(erase());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_erasechar()
-    */
+   Return current erase character */
 PHP_FUNCTION(ncurses_erasechar)
 {
-  RETURN_LONG(erasechar());
+       RETURN_LONG(erasechar());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_flash()
-    */
+   Flash terminal screen (visual bell) */
 PHP_FUNCTION(ncurses_flash)
 {
-  RETURN_LONG(flash());
+       RETURN_LONG(flash());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_flushinp()
-    */
+   Flush keyboard input buffer */
 PHP_FUNCTION(ncurses_flushinp)
 {
-  RETURN_LONG(flushinp());
+       RETURN_LONG(flushinp());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_has_ic()
-    */
+   Check for insert- and delete-capabilities */
 PHP_FUNCTION(ncurses_has_ic)
 {
-  RETURN_LONG(has_ic());
+       RETURN_LONG(has_ic());
 }
 /* }}} */
 
 
 /* {{{ proto bool ncurses_has_il()
-    */
+   Check for line insert- and delete-capabilities */
 PHP_FUNCTION(ncurses_has_il)
 {
-  RETURN_LONG(has_il());
+       RETURN_LONG(has_il());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_inch()
-    */
+   Get character and attribute at current position */
 PHP_FUNCTION(ncurses_inch)
 {
-  RETURN_LONG(inch());
+       RETURN_LONG(inch());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_insertln()
-    */
+   Insert a line, move rest of screen down */
 PHP_FUNCTION(ncurses_insertln)
 {
-  RETURN_LONG(insertln());
+       RETURN_LONG(insertln());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_isendwin()
-    */
+   Ncurses is in endwin mode, normal screen output may be performed */
 PHP_FUNCTION(ncurses_isendwin)
 {
-  RETURN_LONG(isendwin());
+       RETURN_LONG(isendwin());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_killchar()
-    */
+   Return current line kill character */
 PHP_FUNCTION(ncurses_killchar)
 {
-  RETURN_LONG(killchar());
+       RETURN_LONG(killchar());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_nl()
-    */
+   Translate newline and carriage return / line feed */
 PHP_FUNCTION(ncurses_nl)
 {
-  RETURN_LONG(nl());
+       RETURN_LONG(nl());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_nocbreak()
-    */
+   Switch terminal to cooked mode */
 PHP_FUNCTION(ncurses_nocbreak)
 {
-  RETURN_LONG(nocbreak());
+       RETURN_LONG(nocbreak());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_noecho()
-    */
+   Switch off keyboard input echo */
 PHP_FUNCTION(ncurses_noecho)
 {
-  RETURN_LONG(noecho());
+       RETURN_LONG(noecho());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_nonl()
-    */
+   Do not ranslate newline and carriage return / line feed */
 PHP_FUNCTION(ncurses_nonl)
 {
-  RETURN_LONG(nonl());
+       RETURN_LONG(nonl());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_noraw()
-    */
+   Switch terminal out of raw mode */
 PHP_FUNCTION(ncurses_noraw)
 {
-  RETURN_LONG(noraw());
+       RETURN_LONG(noraw());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_raw()
-    */
+   Switch terminal into raw mode */
 PHP_FUNCTION(ncurses_raw)
 {
-  RETURN_LONG(raw());
+       RETURN_LONG(raw());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_resetty()
-    */
+   Restore saved terminal state */
 PHP_FUNCTION(ncurses_resetty)
 {
-  RETURN_LONG(resetty());
+       RETURN_LONG(resetty());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_savetty()
-    */
+   Save terminal state */
 PHP_FUNCTION(ncurses_savetty)
 {
-  RETURN_LONG(savetty());
+       RETURN_LONG(savetty());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_termattrs()
-    */
+   Return a logical OR of all attribute flags supported by terminal */
 PHP_FUNCTION(ncurses_termattrs)
 {
-  RETURN_LONG(termattrs());
+       RETURN_LONG(termattrs());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_use_default_colors()
-    */
+   Assign terminal default colors to color id -1 */
 PHP_FUNCTION(ncurses_use_default_colors)
 {
-  RETURN_LONG(use_default_colors());
+       RETURN_LONG(use_default_colors());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_slk_attr()
   */
+ */
 PHP_FUNCTION(ncurses_slk_attr)
 {
-  RETURN_LONG(slk_attr());
+       RETURN_LONG(slk_attr());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_slk_clear()
   */
+ */
 PHP_FUNCTION(ncurses_slk_clear)
 {
-  RETURN_LONG(slk_clear());
+       RETURN_LONG(slk_clear());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_slk_noutrefresh()
   */
+ */
 PHP_FUNCTION(ncurses_slk_noutrefresh)
 {
-  RETURN_LONG(slk_noutrefresh());
+       RETURN_LONG(slk_noutrefresh());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_slk_refresh()
   */
+ */
 PHP_FUNCTION(ncurses_slk_refresh)
 {
-  RETURN_LONG(slk_refresh());
+       RETURN_LONG(slk_refresh());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_slk_restore()
   */
+ */
 PHP_FUNCTION(ncurses_slk_restore)
 {
-  RETURN_LONG(slk_restore());
+       RETURN_LONG(slk_restore());
 }
 /* }}} */
 
 /* {{{ proto bool ncurses_slk_touch()
   */
+ */
 PHP_FUNCTION(ncurses_slk_touch)
 {
-  RETURN_LONG(slk_touch());
+       RETURN_LONG(slk_touch());
 }
 /* }}} */
 
 /* {{{ proto int ncurses_attroff(int intarg)
-    */
+   Turn off the given attributes */
 PHP_FUNCTION(ncurses_attroff)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(attroff(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(attroff(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_attron(int intarg)
-    */
+   Turn on the given attributes */
 PHP_FUNCTION(ncurses_attron)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(attron(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(attron(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_attrset(int intarg)
-    */
+   Set given attributes */
 PHP_FUNCTION(ncurses_attrset)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(attrset(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(attrset(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_bkgd(int intarg)
-    */
+   Set background property for terminal screen */
 PHP_FUNCTION(ncurses_bkgd)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(bkgd(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(bkgd(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_curs_set(int intarg)
-    */
+   Set cursor state */
 PHP_FUNCTION(ncurses_curs_set)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(curs_set(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(curs_set(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_delay_output(int intarg)
-    */
+   Delay output on terminal using padding characters */
 PHP_FUNCTION(ncurses_delay_output)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(delay_output(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(delay_output(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_echochar(int intarg)
-    */
+   Single character output including refresh */
 PHP_FUNCTION(ncurses_echochar)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(echochar(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(echochar(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_halfdelay(int intarg)
-    */
+   Put terminal into halfdelay mode */
 PHP_FUNCTION(ncurses_halfdelay)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(halfdelay(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(halfdelay(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_has_key(int intarg)
-    */
+   Check for presence of a function key on terminal keyboard */
 PHP_FUNCTION(ncurses_has_key)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(has_key(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(has_key(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_insch(int intarg)
-    */
+   Insert character moving rest of line including character at current position */
 PHP_FUNCTION(ncurses_insch)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(insch(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(insch(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_insdelln(int intarg)
-    */
+   Insert lines before current line scrolling down (negative numbers delete and scroll up) */
 PHP_FUNCTION(ncurses_insdelln)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(insdelln(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(insdelln(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_mouseinterval(int intarg)
-    */
+   Set timeout for mouse button clicks */
 PHP_FUNCTION(ncurses_mouseinterval)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(mouseinterval(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(mouseinterval(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_napms(int intarg)
-    */
+   Âµs sleep */
 PHP_FUNCTION(ncurses_napms)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(napms(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(napms(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_scrl(int intarg)
-    */
+   Scroll window content up or down without changing current position */
 PHP_FUNCTION(ncurses_scrl)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(scrl(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(scrl(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_slk_attroff(int intarg)
   */
+ */
 PHP_FUNCTION(ncurses_slk_attroff)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
-
-  RETURN_LONG(slk_attroff(_INT(intarg)));
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(slk_attroff(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_slk_attron(int intarg)
   */
+ */
 PHP_FUNCTION(ncurses_slk_attron)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(slk_attron(_INT(intarg)));
+       RETURN_LONG(slk_attron(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_slk_attrset(int intarg)
   */
+ */
 PHP_FUNCTION(ncurses_slk_attrset)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(slk_attrset(_INT(intarg)));
+       RETURN_LONG(slk_attrset(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_slk_color(int intarg)
   */
+ */
 PHP_FUNCTION(ncurses_slk_color)
 {
 #ifdef HAVE_NCURSES_SLK_COLOR
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(slk_color(_INT(intarg)));
+       RETURN_LONG(slk_color(intarg));
 #else
-  php_error(E_WARNING,"%s not supported in this build");
-  RETURN_FALSE;
+       php_error(E_WARNING,"%s not supported in this build");
+       RETURN_FALSE;
 #endif  
 }
 /* }}} */
 
 /* {{{ proto int ncurses_slk_init(int intarg)
   */
+ */
 PHP_FUNCTION(ncurses_slk_init)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(slk_init(_INT(intarg)));
+       RETURN_LONG(slk_init(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_typeahead(int intarg)
-    */
+   Specify different filedescriptor for typeahead checking */
 PHP_FUNCTION(ncurses_typeahead)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(typeahead(_INT(intarg)));
+       RETURN_LONG(typeahead(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_ungetch(int intarg)
-    */
+   Put a character back into the input stream */
 PHP_FUNCTION(ncurses_ungetch)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(ungetch(_INT(intarg)));
+       RETURN_LONG(ungetch(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_vidattr(int intarg)
   */
+ */
 PHP_FUNCTION(ncurses_vidattr)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(vidattr(_INT(intarg)));
+       RETURN_LONG(vidattr(intarg));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_use_extended_names(int intarg)
-    */
+   Control use of extended names in terminfo descriptions */
 PHP_FUNCTION(ncurses_use_extended_names)
 {
 #ifdef HAVE_NCURSES_USE_EXTENDED_NAMES
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(use_extended_names(_INT(intarg)));
+       RETURN_LONG(use_extended_names(intarg));
 #else
-  php_error(E_WARNING,"%s not supported in this build");
-  RETURN_FALSE;
+       php_error(E_WARNING,"%s not supported in this build");
+       RETURN_FALSE;
 #endif  
 }
 /* }}} */
 
-/* {{{ proto int ncurses_bkgdset(int intarg)
-    */
+/* {{{ proto void ncurses_bkgdset(int intarg)
+   Control screen background */
 PHP_FUNCTION(ncurses_bkgdset)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  bkgdset(_INT(intarg));
+       bkgdset(intarg);
 }
 /* }}} */
 
 /* {{{ proto int ncurses_filter()
   */
+ */
 PHP_FUNCTION(ncurses_filter)
 {
-  filter();
+       filter();
 }
 /* }}} */
 
 /* {{{ proto int ncurses_noqiflush()
-    */
+   Do not flush on signal characters*/
 PHP_FUNCTION(ncurses_noqiflush)
 {
-  noqiflush();
+       noqiflush();
 }
 /* }}} */
 
 /* {{{ proto int ncurses_qiflush()
-    */
+   Flush on signal characters */
 PHP_FUNCTION(ncurses_qiflush)
 {
-  qiflush();
+       qiflush();
 }
 /* }}} */
 
-/* {{{ proto int ncurses_timeout(int intarg)
-    */
+/* {{{ proto void ncurses_timeout(int intarg)
+   Set timeout for special key sequences */
 PHP_FUNCTION(ncurses_timeout)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  timeout(_INT(intarg));
+       timeout(intarg);
 }
 /* }}} */
 
-/* {{{ proto int ncurses_use_env(int intarg)
-    */
+/* {{{ proto void ncurses_use_env(int intarg)
+   Control use of environment information about terminal size */
 PHP_FUNCTION(ncurses_use_env)
 {
-  zval **intarg;
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &intarg) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
-  
-  convert_to_long_ex(intarg);
+       long intarg;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",&intarg)==FAILURE) {
+               return;
+       }
 
-  use_env(_INT(intarg));
+       use_env(intarg);
 }
 /* }}} */
 
 /* {{{ proto int ncurses_addstr(string text)
-   */
+   Output text at current position */
 PHP_FUNCTION(ncurses_addstr)
 {
-  zval **data;
-
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &data) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(data);
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(addstr(_STRING(data)));
+       RETURN_LONG(addstr(str));
 }
 /* }}} */
 
-
-
-
-/**********************  area of work *************************************/
-
-
-
-
 /* {{{ proto int ncurses_putp(string text)
  */
+ */
 PHP_FUNCTION(ncurses_putp)
 {
-  zval **data;
-
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &data) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(data);
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(putp(_STRING(data)));
+       RETURN_LONG(putp(str));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_scr_dump(string text)
-   */
+   Dump screen content to file */
 PHP_FUNCTION(ncurses_scr_dump)
 {
-  zval **data;
+       char *str;
+       int str_len;
 
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &data) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
 
-  convert_to_string_ex(data);
-
-  RETURN_LONG(scr_dump(_STRING(data)));
+       RETURN_LONG(scr_dump(str));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_scr_init(string text)
-   */
+   Initialize screen from file dump */
 PHP_FUNCTION(ncurses_scr_init)
 {
-  zval **data;
-
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &data) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(data);
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(scr_init(_STRING(data)));
+       RETURN_LONG(scr_init(str));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_scr_restore(string text)
-   */
+   Restore screen from file dump */
 PHP_FUNCTION(ncurses_scr_restore)
 {
-  zval **data;
+       char *str;
+       int str_len;
 
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &data) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
 
-  convert_to_string_ex(data);
-
-  RETURN_LONG(scr_restore(_STRING(data)));
+       RETURN_LONG(scr_restore(str));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_scr_set(string text)
-   */
+   Inherit screen from file dump */
 PHP_FUNCTION(ncurses_scr_set)
 {
-  zval **data;
-
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &data) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(data);
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
 
-  RETURN_LONG(scr_set(_STRING(data)));
+       RETURN_LONG(scr_set(str));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_mvaddch(int x, int y, int c)
-   */
+/* {{{ proto int ncurses_mvaddch(int y, int x, int c)
+   Move current position and add character */
 PHP_FUNCTION(ncurses_mvaddch)
 {
-  zval **x,**y,**c;
-
-  if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &x, &y, &c) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-  convert_to_long_ex(c);
-
-  RETURN_LONG(mvaddch(_INT(x),_INT(y),_INT(c)));
+       long y,x,c;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll",&y,&x,&c)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvaddch(y,x,c));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_mvaddchnstr(int x, int y, string s, int n)
-   */
+/* {{{ proto int ncurses_mvaddchnstr(int y, int x, string s, int n)
+   Move position and add attrributed string with specified length */
 PHP_FUNCTION(ncurses_mvaddchnstr)
 {
-  zval **x,**y,**s,**n;
+       long y,x,n;
+       char *str;
+       int str_len;
 
-  if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &x, &y, &s, &n) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-  convert_to_string_ex(s);
-  convert_to_long_ex(n);
-
-  RETURN_LONG(mvaddchnstr(_INT(x),_INT(y),(chtype *)_STRING(s),_INT(n)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llsl",&y,&x,&str,&str_len,&n)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvaddchnstr(y,x,(chtype *)str,n));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_addchnstr(string s, int n)
-   */
+   Add attributed string with specified length at current position */
 PHP_FUNCTION(ncurses_addchnstr)
 {
-  zval **s,**n;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &s, &n) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_string_ex(s);
-  convert_to_long_ex(n);
+       long n;
+       char *str;
+       int str_len;
 
-  RETURN_LONG(addchnstr((chtype *)_STRING(s),_INT(n)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl",&str,&str_len,&n)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(addchnstr((chtype *)str,n));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_mvaddchstr(int x, int y, string s)
-   */
+/* {{{ proto int ncurses_mvaddchstr(int y, int x, string s)
+   Move position and add attributed string */
 PHP_FUNCTION(ncurses_mvaddchstr)
 {
-  zval **x,**y,**s;
+       long y,x;
+       char *str;
+       int str_len;
 
-  if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &x, &y, &s) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-  convert_to_string_ex(s);
-
-  RETURN_LONG(mvaddchstr(_INT(x),_INT(y),(chtype *)_STRING(s)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls",&y,&x,&str,&str_len)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvaddchstr(y,x,(chtype *)str));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_addchstr(string s)
-   */
+   Add attributed string at current position */
 PHP_FUNCTION(ncurses_addchstr)
 {
-  zval **s;
-
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &s) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(s);
-
-  RETURN_LONG(addchstr((chtype *)_STRING(s)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(addchstr((chtype *)str));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_mvaddnstr(int x, int y, string s, int n)
-   */
+/* {{{ proto int ncurses_mvaddnstr(int y, int x, string s, int n)
+   Move position and add string with specified length */
 PHP_FUNCTION(ncurses_mvaddnstr)
 {
-  zval **x,**y,**s,**n;
-
-  if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &x, &y, &s, &n) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long y,x,n;
+       char *str;
+       int str_len;
 
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-  convert_to_string_ex(s);
-  convert_to_long_ex(n);
-
-  RETURN_LONG(mvaddnstr(_INT(x),_INT(y),_STRING(s),_INT(n)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llsl",&y,&x,&str,&str_len,&n)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvaddnstr(y,x,str,n));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_addnstr(int x, int y, string s, int n)
-   */
+/* {{{ proto int ncurses_addnstr(string s, int n)
+   Add string with specified length at current position */
 PHP_FUNCTION(ncurses_addnstr)
 {
-  zval **s,**n;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &s, &n) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long n;
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(s);
-  convert_to_long_ex(n);
-
-  RETURN_LONG(addnstr(_STRING(s),_INT(n)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl",&str,&str_len,&n)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(addnstr(str,n));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_mvaddstr(int x, int y, string s)
-   */
+/* {{{ proto int ncurses_mvaddstr(int y, int x, string s)
+   Move position and add string */
 PHP_FUNCTION(ncurses_mvaddstr)
 {
-  zval **x,**y,**s;
-
-  if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &x, &y, &s) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long y,x;
+       char *str;
+       int str_len;
 
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-  convert_to_string_ex(s);
-
-  RETURN_LONG(mvaddstr(_INT(x),_INT(y),_STRING(s)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls",&y,&x,&str,&str_len)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvaddstr(y,x,str));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_mvdelch(int x, int y)
-   */
+/* {{{ proto int ncurses_mvdelch(int y, int x)
+   Move position and delete character, shift rest of line left */
 PHP_FUNCTION(ncurses_mvdelch)
 {
-  zval **x,**y,**c;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &x, &y) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long y,x;
 
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-
-  RETURN_LONG(mvdelch(_INT(x),_INT(y)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls",&y,&x)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvdelch(y,x));
 }
 /* }}} */
 
 
-/* {{{ proto int ncurses_mvgetch(int x, int y)
-   */
+/* {{{ proto int ncurses_mvgetch(int y, int x)
+   Move position and get character at new position */
 PHP_FUNCTION(ncurses_mvgetch)
 {
-  zval **x,**y;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &x, &y) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long y,x;
 
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-
-  RETURN_LONG(mvgetch(_INT(x),_INT(y)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls",&y,&x)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvgetch(y,x));
 }
 /* }}} */
 
-/* {{{ proto int ncurses_mvinch(int x, int y)
-   */
+/* {{{ proto int ncurses_mvinch(int y, int x)
+   Move position and get attributed character at new position */
 PHP_FUNCTION(ncurses_mvinch)
 {
-  zval **x,**y;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &x, &y) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long y,x;
 
-  convert_to_long_ex(x);
-  convert_to_long_ex(y);
-
-  RETURN_LONG(mvinch(_INT(x),_INT(y)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lls",&y,&x)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvinch(y,x));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_insstr(string)
-   */
+   Insert string at current position, moving rest of line right */
 PHP_FUNCTION(ncurses_insstr)
 {
-  zval **str;
-
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(str);
-
-  RETURN_LONG(insstr(_STRING(str)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(insstr(str));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_instr(string)
  */
+ */
 PHP_FUNCTION(ncurses_instr)
 {
-  zval **str;
-
-  if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       char *str;
+       int str_len;
 
-  convert_to_string_ex(str);
-
-  RETURN_LONG(instr(_STRING(str)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",&str,&str_len)==FAILURE) {
+               return;
+       }
+       
+       RETURN_LONG(instr(str));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_mvhline(int,int,int,int)
  */
+ */
 PHP_FUNCTION(ncurses_mvhline)
 {
-  zval **i1,**i2,**i3,**i4;
+       long i1,i2,i3,i4;
 
-  if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &i1, &i2, &i3, &i4) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_long_ex(i1);
-  convert_to_long_ex(i2);
-  convert_to_long_ex(i3);
-  convert_to_long_ex(i4);
-
-  RETURN_LONG(mvhline(_INT(i1),_INT(i2),_INT(i3),_INT(i4)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll",&i1,&i2,&i3,&i4)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvhline(i1,i2,i3,i4));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_mvcur(int,int,int,int)
  */
+ */
 PHP_FUNCTION(ncurses_mvcur)
 {
-  zval **i1,**i2,**i3,**i4;
-
-  if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &i1, &i2, &i3, &i4) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long i1,i2,i3,i4;
 
-  convert_to_long_ex(i1);
-  convert_to_long_ex(i2);
-  convert_to_long_ex(i3);
-  convert_to_long_ex(i4);
-
-  RETURN_LONG(mvcur(_INT(i1),_INT(i2),_INT(i3),_INT(i4)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll",&i1,&i2,&i3,&i4)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(mvcur(i1,i2,i3,i4));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_init_color(int,int,int,int)
  */
+ */
 PHP_FUNCTION(ncurses_init_color)
 {
-  zval **i1,**i2,**i3,**i4;
-
-  if(ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &i1, &i2, &i3, &i4) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_long_ex(i1);
-  convert_to_long_ex(i2);
-  convert_to_long_ex(i3);
-  convert_to_long_ex(i4);
+       long i1,i2,i3,i4;
 
-  RETURN_LONG(init_color(_INT(i1),_INT(i2),_INT(i3),_INT(i4)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll",&i1,&i2,&i3,&i4)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(init_color(i1,i2,i3,i4));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_border(int,int,int,int,int,int,int,int)
  */
+ */
 PHP_FUNCTION(ncurses_border)
 {
-  zval **i1,**i2,**i3,**i4,**i5,**i6,**i7,**i8;
-
-  if(ZEND_NUM_ARGS() != 8 || zend_get_parameters_ex(8, &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long i1,i2,i3,i4,i5,i6,i7,i8;
 
-  convert_to_long_ex(i1);
-  convert_to_long_ex(i2);
-  convert_to_long_ex(i3);
-  convert_to_long_ex(i4);
-  convert_to_long_ex(i5);
-  convert_to_long_ex(i6);
-  convert_to_long_ex(i7);
-  convert_to_long_ex(i8);
-
-  RETURN_LONG(border(_INT(i1),_INT(i2),_INT(i3),_INT(i4),_INT(i5),_INT(i6),_INT(i7),_INT(i8)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llllllll",&i1,&i2,&i3,&i4,&i5,&i6,&i7,&i8)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(border(i1,i2,i3,i4,i5,i6,i7,i8));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_assume_default_colors(int,int)
  */
+ */
 PHP_FUNCTION(ncurses_assume_default_colors)
 {
 #ifdef HAVE_NCURSES_ASSUME_DEFAULT_COLORS
-  zval **i1,**i2;
+       long i1,i2;
 
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &i1, &i2) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_long_ex(i1);
-  convert_to_long_ex(i2);
-
-  RETURN_LONG(assume_default_colors(_INT(i1),_INT(i2)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll",&i1,&i2)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(assume_default_colors(i1,i2));
 #else
-  php_error(E_WARNING,"%s not supported in this build");
-  RETURN_FALSE;
+       php_error(E_WARNING,"%s not supported in this build");
+       RETURN_FALSE;
 #endif  
 }
 /* }}} */
 
 /* {{{ proto int ncurses_define_key(string,int)
  */
+ */
 PHP_FUNCTION(ncurses_define_key)
 {
-  zval **s1,**i2;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &s1, &i2) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_string_ex(s1);
-  convert_to_long_ex(i2);
+       long n;
+       char *str;
+       int str_len;
 
-  RETURN_LONG(define_key(_STRING(s1),_INT(i2)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl",&str,&str_len,&n)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(define_key(str,n));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_hline(int,int)
  */
+ */
 PHP_FUNCTION(ncurses_hline)
 {
-  zval **i1,**i2;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &i1, &i2) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long i1,i2;
 
-  convert_to_long_ex(i1);
-  convert_to_long_ex(i2);
-
-  RETURN_LONG(hline(_INT(i1),_INT(i2)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll",&i1,&i2)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(hline(i1,i2));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_vline(int,int)
  */
+ */
 PHP_FUNCTION(ncurses_vline)
 {
-  zval **i1,**i2;
+       long i1,i2;
 
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &i1, &i2) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
-
-  convert_to_long_ex(i1);
-  convert_to_long_ex(i2);
-
-  RETURN_LONG(vline(_INT(i1),_INT(i2)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll",&i1,&i2)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(vline(i1,i2));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_keyok(int,bool)
  */
+ */
 PHP_FUNCTION(ncurses_keyok)
 {
-  zval **i1,**b2;
-
-  if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &i1, &b2) == FAILURE) {
-    WRONG_PARAM_COUNT;
-  }
+       long i,b;
 
-  convert_to_long_ex(i1);
-  convert_to_long_ex(b2);
-
-  RETURN_LONG(hline(_INT(i1),_INT(b2)));
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll",&i,&b)==FAILURE) {
+        return;
+       }
+       
+       RETURN_LONG(hline(i,b));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_mvwaddstr(resource window, int y, int x, string text)
   */
+ */
 PHP_FUNCTION(ncurses_mvwaddstr)
 {
-  zval **handle, **x, **y, **text;
-  WINDOW **w;
+       zval **handle, **x, **y, **text;
+       WINDOW **w;
 
-  if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &handle, &y, &x, &text) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
+       if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &handle, &y, &x, &text) == FAILURE){
+               WRONG_PARAM_COUNT;
+       }
 
-  FETCH_WINRES(w,handle);
+       FETCH_WINRES(w,handle);
 
-  convert_to_long_ex(y);
-  convert_to_long_ex(x);
-  convert_to_string_ex(text);
+       convert_to_long_ex(y);
+       convert_to_long_ex(x);
+       convert_to_string_ex(text);
 
-  RETURN_LONG(mvwaddstr(*w,_INT(y),_INT(x),_STRING(text)));
+
+       RETURN_LONG(mvwaddstr(*w,Z_LVAL_PP(y),Z_LVAL_PP(x),Z_STRVAL_PP(text)));
 }
 /* }}} */
 
 /* {{{ proto int ncurses_wrefresh(resource window)
   */
+ */
 PHP_FUNCTION(ncurses_wrefresh)
 {
-  zval **handle;
-  WINDOW **w;
+       zval **handle;
+       WINDOW **w;
 
-  if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &handle) == FAILURE){
-    WRONG_PARAM_COUNT;
-  }
+       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &handle) == FAILURE){
+               WRONG_PARAM_COUNT;
+       }
 
-  FETCH_WINRES(w,handle);
+       FETCH_WINRES(w,handle);
 
-  RETURN_LONG(wrefresh(*w));
+       RETURN_LONG(wrefresh(*w));
 }
 /* }}} */