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.
P.S.
Posting this message to php.internals seems to fail.
--
NetCat
FREE 10MB Email + AntiSpam + POP3 + more.
Get it at http://www.doal.co.il:81/free/?c=antispam
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 pecl-dev@lists.php.net
----- Original Message -----
From: "netcat" netcat@abox.co.il
To: "PHP Development" internals@lists.php.net
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.
Wez Furlong wrote:
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(....)
}
}
Thanks a lot, it seems to work.
Also take a look in Zend/zend.h at the definitions for
INTERNAL_FUNCTION_PARAMETERS and
INTERNAL_FUNCTION_PARAM_PASSTHRU
I will. Thanks again.
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 pecl-dev@lists.php.net----- Original Message -----
From: "netcat" netcat@abox.co.il
To: "PHP Development" internals@lists.php.net
Sent: Tuesday, October 07, 2003 9:43 AM
Subject: [PHP-DEV] help request: passing return valueHi 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.
--
NetCat
SPAM-Free 10mb Free email + Antivirus + POP3 + more...
Get it at http://www.doal.co.il:81/free/?c=all-spam