cvs: pecl /newt newt.c

From: Date: Tue, 17 Aug 2004 20:53:32 +0000
Subject: cvs: pecl /newt newt.c
Groups: php.pecl.cvs 
Request: Send a blank email to pecl-cvs+get-1683@lists.php.net to get a copy of this message
michael Tue Aug 17 16:53:32 2004 EDT Modified files: /pecl/newt newt.c Log: * implemented newt_button_bar via newt_vcall() http://cvs.php.net/diff.php/pecl/newt/newt.c?r1=1.13&r2=1.14&ty=u Index: pecl/newt/newt.c diff -u pecl/newt/newt.c:1.13 pecl/newt/newt.c:1.14 --- pecl/newt/newt.c:1.13 Tue Aug 17 16:23:30 2004 +++ pecl/newt/newt.c Tue Aug 17 16:53:32 2004 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: newt.c,v 1.13 2004/08/17 20:23:30 michael Exp $ */ +/* $Id: newt.c,v 1.14 2004/08/17 20:53:32 michael Exp $ */ #include <newt.h> @@ -3193,10 +3193,49 @@ /* }}} */ /* {{{ + * proto resource newt_button_bar(string button1_text, resource &button1 [, string button2_text, resource &button2 [,...]]) */ PHP_FUNCTION(newt_button_bar) { - php_error_docref (NULL TSRMLS_CC, E_WARNING, "This function is not implemented yet"); + newtComponent *buttons = NULL; + void **newt_args = NULL; + int i, bi, buttons_num; + zval ***args; + newtGrid grid; + + int argc = ZEND_NUM_ARGS(); + if (argc < 2 || argc % 2 != 0) { WRONG_PARAM_COUNT; } + if (zend_get_parameters_array_ex (argc, args) == FAILURE) { + return; + } + + buttons_num = argc/2; + + newt_args = (void **) emalloc(sizeof(void *) * argc); + buttons = (newtComponent *) emalloc(sizeof(newtComponent) * buttons_num); + + for (i=0, bi; i<argc; i+=2, bi++) { + if (Z_TYPE_PP(args[i]) != IS_STRING) { + php_error_docref (NULL TSRMLS_CC, E_ERROR, "Odd arguments must be string values"); + } + newt_args[i] = (void *)Z_STRVAL_PP(args[i]); + + buttons[bi] = NULL; + newt_args[i+1] = (void *)&buttons[bi]; + } + + grid = (newtGrid) newt_vcall ((void *)newtButtonBar, newt_args, argc); + + for (i=0; i<buttons_num; i++) { + if (buttons[i]) { + ZEND_REGISTER_RESOURCE (NULL, buttons[i], le_newt_comp); + } + } + + efree (newt_args); + efree (buttons); + + ZEND_REGISTER_RESOURCE (return_value, grid, le_newt_grid); } /* }}} */

« previous php.pecl.cvs (#1683) next »