PHP_FUNCTION (or ZEND_FUNCTION - they are the same) includes the function paramters; one of those is:
zval *return_value; which already contains an allocated zval (set to NULL). If you want to change this in one of your own functions, you could do something like this: int f1(zval *return_value, ...) { ... change the return_value here ... return SUCCESS; } PHP_FUNCTION(my_func) { if (f1(return_value) == SUCCESS) { /* it worked */ return; } else { /* it didn't work */ php_error(....) } } Also take a look in Zend/zend.h at the definitions for INTERNAL_FUNCTION_PARAMETERS and INTERNAL_FUNCTION_PARAM_PASSTHRU which can be used in you own function declarations to handle the php function paramters. Hope that helps, --Wez. PS: You're welcome to join the PHP Extension Community Library, or PECL, on [EMAIL PROTECTED] ----- Original Message ----- From: "netcat" <[EMAIL PROTECTED]> To: "PHP Development" <[EMAIL PROTECTED]> Sent: Tuesday, October 07, 2003 9:43 AM Subject: [PHP-DEV] help request: passing return value > Hi internals. > > [background] > I'm newbie here and with php extensions. > Working on php extension. > It should give access to librep. > I have very little experience with C. > > [problem] > > zval f1(some_args) { > zval r; > ... > return r; > } > > /* f1 can return many different types */ > > ZEND_FUNCTION(f2) { > /* working on some_args here */ > ... > ... > /* here i need to return what > f1(some_args) returns */ > } > > What's the best way to pass the result ? > Any macro that would ? > [tried] > > To look at another modules. > > Make f1 be (zval *) and > "*return_value=*rep_data_converter(result);" > in f2. > Since zval is not very simple structure - it doesn't work. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php