summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_compile.h')
-rw-r--r--Zend/zend_compile.h25
1 files changed, 16 insertions, 9 deletions
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index a885518caf..63d67660c6 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -245,26 +245,33 @@ typedef struct _zend_property_info {
#define OBJ_PROP_TO_NUM(offset) \
((offset - OBJ_PROP_TO_OFFSET(0)) / sizeof(zval))
+/* arg_info for internal functions */
+typedef struct _zend_internal_arg_info {
+ const char *name;
+ const char *class_name;
+ zend_uchar type_hint;
+ zend_uchar pass_by_reference;
+ zend_bool allow_null;
+ zend_bool is_variadic;
+} zend_internal_arg_info;
+
+/* arg_info for user functions */
typedef struct _zend_arg_info {
- const char *name; // TODO: convert into zend_string ???
- uint32_t name_len;
- const char *class_name; // TODO: convert into zend_string ???
- uint32_t class_name_len;
+ zend_string *name;
+ zend_string *class_name;
zend_uchar type_hint;
zend_uchar pass_by_reference;
zend_bool allow_null;
zend_bool is_variadic;
} zend_arg_info;
-/* the following structure repeats the layout of zend_arg_info,
+/* the following structure repeats the layout of zend_internal_arg_info,
* but its fields have different meaning. It's used as the first element of
* arg_info array to define properties of internal functions.
*/
typedef struct _zend_internal_function_info {
- const char *_name;
- uint32_t _name_len;
+ zend_uintptr_t required_num_args;
const char *_class_name;
- uint32_t required_num_args;
zend_uchar _type_hint;
zend_bool return_reference;
zend_bool _allow_null;
@@ -330,7 +337,7 @@ typedef struct _zend_internal_function {
zend_function *prototype;
uint32_t num_args;
uint32_t required_num_args;
- zend_arg_info *arg_info;
+ zend_internal_arg_info *arg_info;
/* END of common elements */
void (*handler)(INTERNAL_FUNCTION_PARAMETERS);