cvs: pecl /newt newt.c
| From: | Michael Spector | 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);
}
/* }}} */