Re: [PATCH] Add 'Z' flag to zend_parse_parameters*()
| From: | fuhs at purdue dot edu | Date: | Wed, 09 Jul 2003 00:05:18 +0000 |
| Subject: | Re: [PATCH] Add 'Z' flag to zend_parse_parameters*() | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-3320@lists.php.net to get a copy of this message | ||
One more time. I hope it's not too obvious that I'm new at this :)
This patch would add a 'Z' flag to zend_parse_parameters*().
Example:
#typdef zvar zval**
zvar a_zvar;
zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &zvar);
Josh
Index: zend_API.c =================================================================== RCS file: /usr/src/local/master/php/Zend/zend_API.c,v retrieving revision 1.1.1.2 diff -u -p -r1.1.1.2 zend_API.c --- zend_API.c 22 May 2003 18:22:20 -0000 1.1.1.2 +++ zend_API.c 18 Jun 2003 20:31:35 -0000 @@ -422,7 +422,16 @@ static char *zend_parse_arg_impl(zval ** } } break; - + case 'Z': + { + zval ***p=va_arg(*va, zval ***); + if(Z_TYPE_PP(arg) == IS_NULL && return_null){ + *p = NULL; + } else { + *p = arg; + } + } + break; default: return "unknown"; } @@ -471,7 +480,7 @@ static int zend_parse_va_args(int num_ar case 's': case 'b': case 'r': case 'a': case 'o': case 'O': - case 'z': + case 'z': case 'Z': max_num_args++; break;
Index: zend_API.c =================================================================== RCS file: /usr/src/local/master/php/Zend/zend_API.c,v retrieving revision 1.1.1.2 diff -u -p -r1.1.1.2 zend_API.c --- zend_API.c 22 May 2003 18:22:20 -0000 1.1.1.2 +++ zend_API.c 18 Jun 2003 20:31:35 -0000 @@ -422,7 +422,16 @@ static char *zend_parse_arg_impl(zval ** } } break; - + case 'Z': + { + zval ***p=va_arg(*va, zval ***); + if(Z_TYPE_PP(arg) == IS_NULL && return_null){ + *p = NULL; + } else { + *p = arg; + } + } + break; default: return "unknown"; } @@ -471,7 +480,7 @@ static int zend_parse_va_args(int num_ar case 's': case 'b': case 'r': case 'a': case 'o': case 'O': - case 'z': + case 'z': case 'Z': max_num_args++; break;