[PHP-DEV] Help - Merging Resource into a call_function array

2001-10-18 Thread Alan Knowles

Can someone help me out with this one, - I'm sure that I've not acheived what I was 
aiming at - adding the Resource, myresource to the array prior to calling the callback 
function

the code below is from the url_request callback wrapper for gtkhtml - if this works - 
you can build a working web browser/editor in php.. 

regards

alan


static void php_gtk_html_url_request_callback (GtkHTML *html, const char *url, 
GtkHTMLStream *gs, zval* callback_data) 
{



zval *myresource = NULL; 
zval *retval = NULL;
zval **callback = NULL, **extra = NULL;
zval **callback_filename = NULL, **callback_lineno = NULL;
zval ***args, *params;
char *callback_name;
TSRMLS_FETCH();

zend_hash_index_find(Z_ARRVAL_P(callback_data), 0, (void **)callback);
zend_hash_index_find(Z_ARRVAL_P(callback_data), 1, (void **)extra);
zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void 
**)callback_filename);
zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)callback_lineno);

if (!php_gtk_is_callable(*callback, 0, callback_name)) {
php_error(E_WARNING, Unable to call ctree callback '%s' specified in 
%s on line %d, callback_name, Z_STRVAL_PP(callback_filename), 
Z_LVAL_PP(callback_lineno));
efree(callback_name);
return;
}

params = php_gtk_build_value((s), url);
ZEND_REGISTER_RESOURCE(myresource, gs, le_gtkhtmlstream);
zend_hash_next_index_insert(Z_ARRVAL_P(params), (zval *) myresource, 
sizeof(zval *), NULL);

if (extra)
php_array_merge(Z_ARRVAL_P(params), Z_ARRVAL_PP(extra), 0);

args = php_gtk_hash_as_array(params);

call_user_function_ex(EG(function_table), NULL, *callback, retval, 
zend_hash_num_elements(Z_ARRVAL_P(params)), args, 0, NULL TSRMLS_CC);
if (retval)
zval_ptr_dtor(retval);
efree(args);
zval_ptr_dtor(params);

}

-- 
PHP Development Mailing List http://www.php.net/
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] Help - Merging Resource into a call_function array

2001-10-18 Thread Andrei Zmievski

I don't understand the problem, can you rephrase?

On Thu, 18 Oct 2001, Alan Knowles wrote:
 Can someone help me out with this one, - I'm sure that I've not acheived what I was 
aiming at - adding the Resource, myresource to the array prior to calling the 
callback function
 
 the code below is from the url_request callback wrapper for gtkhtml - if this works 
- you can build a working web browser/editor in php.. 
 
 regards
 
 alan
 
 
 static void php_gtk_html_url_request_callback (GtkHTML *html, const char *url, 
GtkHTMLStream *gs, zval* callback_data) 
 {
 
 
 
   zval *myresource = NULL; 
   zval *retval = NULL;
   zval **callback = NULL, **extra = NULL;
   zval **callback_filename = NULL, **callback_lineno = NULL;
   zval ***args, *params;
   char *callback_name;
   TSRMLS_FETCH();
 
   zend_hash_index_find(Z_ARRVAL_P(callback_data), 0, (void **)callback);
   zend_hash_index_find(Z_ARRVAL_P(callback_data), 1, (void **)extra);
   zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void 
**)callback_filename);
   zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)callback_lineno);
 
   if (!php_gtk_is_callable(*callback, 0, callback_name)) {
   php_error(E_WARNING, Unable to call ctree callback '%s' specified in 
%s on line %d, callback_name, Z_STRVAL_PP(callback_filename), 
Z_LVAL_PP(callback_lineno));
   efree(callback_name);
   return;
   }
 
   params = php_gtk_build_value((s), url);
 ZEND_REGISTER_RESOURCE(myresource, gs, le_gtkhtmlstream);
   zend_hash_next_index_insert(Z_ARRVAL_P(params), (zval *) myresource, 
sizeof(zval *), NULL);
   
   if (extra)
   php_array_merge(Z_ARRVAL_P(params), Z_ARRVAL_PP(extra), 0);
   
   args = php_gtk_hash_as_array(params);
   
   call_user_function_ex(EG(function_table), NULL, *callback, retval, 
zend_hash_num_elements(Z_ARRVAL_P(params)), args, 0, NULL TSRMLS_CC);
   if (retval)
   zval_ptr_dtor(retval);
   efree(args);
   zval_ptr_dtor(params);
 
 }
 
 -- 
 PHP Development Mailing List http://www.php.net/
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 To contact the list administrators, e-mail: [EMAIL PROTECTED]
 



-Andrei

Give a man a fish; you have fed him for today.  Teach a man to use
the Net and he won't bother you for weeks.
   -Author unknown

-- 
PHP Development Mailing List http://www.php.net/
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]