@@ -105,50 +105,61 @@ typedef struct _zend_fcall_info_cache {
105
105
#define _ZEND_ARG_INFO_FLAGS (pass_by_ref , is_variadic ) \
106
106
(((pass_by_ref) << _ZEND_SEND_MODE_SHIFT) | ((is_variadic) ? _ZEND_IS_VARIADIC_BIT : 0))
107
107
108
+ /* Arginfo structures without type information */
108
109
#define ZEND_ARG_INFO (pass_by_ref , name ) \
109
- { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 0))},
110
- #define ZEND_ARG_OBJ_INFO (pass_by_ref , name , classname , allow_null ) \
111
- { #name, ZEND_TYPE_INIT_CLASS_CONST(#classname, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)) },
112
- #define ZEND_ARG_ARRAY_INFO (pass_by_ref , name , allow_null ) \
113
- { #name, ZEND_TYPE_INIT_CODE(IS_ARRAY, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)) },
114
- #define ZEND_ARG_CALLABLE_INFO (pass_by_ref , name , allow_null ) \
115
- { #name, ZEND_TYPE_INIT_CODE(IS_CALLABLE, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)) },
116
- #define ZEND_ARG_TYPE_INFO (pass_by_ref , name , type_hint , allow_null ) \
117
- { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)) },
118
- #define ZEND_ARG_TYPE_MASK (pass_by_ref , name , type_mask ) \
119
- { #name, ZEND_TYPE_INIT_MASK(type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)) },
110
+ { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), NULL },
111
+ #define ZEND_ARG_INFO_WITH_DEFAULT_VALUE (pass_by_ref , name , default_value ) \
112
+ { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), default_value },
120
113
#define ZEND_ARG_VARIADIC_INFO (pass_by_ref , name ) \
121
- { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 1)) },
114
+ { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 1)), NULL },
115
+ /* Arginfo structures with simple type information */
116
+ #define ZEND_ARG_TYPE_INFO (pass_by_ref , name , type_hint , allow_null ) \
117
+ { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), NULL },
118
+ #define ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE (pass_by_ref , name , type_hint , allow_null , default_value ) \
119
+ { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), default_value },
122
120
#define ZEND_ARG_VARIADIC_TYPE_INFO (pass_by_ref , name , type_hint , allow_null ) \
123
- { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1)) },
121
+ { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1)), NULL },
122
+ /* Arginfo structures with complex type information */
123
+ #define ZEND_ARG_TYPE_MASK (pass_by_ref , name , type_mask , default_value ) \
124
+ { #name, ZEND_TYPE_INIT_MASK(type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), default_value },
125
+ /* Arginfo structures with object type information */
126
+ #define ZEND_ARG_OBJ_INFO (pass_by_ref , name , classname , allow_null ) \
127
+ { #name, ZEND_TYPE_INIT_CLASS_CONST(#classname, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), NULL },
128
+ #define ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE (pass_by_ref , name , classname , allow_null , default_value ) \
129
+ { #name, ZEND_TYPE_INIT_CLASS_CONST(#classname, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), default_value },
124
130
#define ZEND_ARG_VARIADIC_OBJ_INFO (pass_by_ref , name , classname , allow_null ) \
125
- { #name, ZEND_TYPE_INIT_CLASS_CONST(#classname, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1)) },
131
+ { #name, ZEND_TYPE_INIT_CLASS_CONST(#classname, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1)), NULL },
132
+ /* Legacy arginfo structures */
133
+ #define ZEND_ARG_ARRAY_INFO (pass_by_ref , name , allow_null ) \
134
+ { #name, ZEND_TYPE_INIT_CODE(IS_ARRAY, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), NULL },
135
+ #define ZEND_ARG_CALLABLE_INFO (pass_by_ref , name , allow_null ) \
136
+ { #name, ZEND_TYPE_INIT_CODE(IS_CALLABLE, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0)), NULL },
126
137
127
138
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX (name , return_reference , required_num_args , class_name , allow_null ) \
128
139
static const zend_internal_arg_info name[] = { \
129
140
{ (const char*)(zend_uintptr_t)(required_num_args), \
130
- ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0)) },
141
+ ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0)), NULL },
131
142
132
143
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO (name , class_name , allow_null ) \
133
144
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, 0, -1, class_name, allow_null)
134
145
135
146
#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX (name , return_reference , required_num_args , type ) \
136
147
static const zend_internal_arg_info name[] = { \
137
- { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_MASK(type | _ZEND_ARG_INFO_FLAGS(return_reference, 0)) },
148
+ { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_MASK(type | _ZEND_ARG_INFO_FLAGS(return_reference, 0)), NULL },
138
149
139
150
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX (name , return_reference , required_num_args , class_name , type ) \
140
151
static const zend_internal_arg_info name[] = { \
141
- { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type | _ZEND_ARG_INFO_FLAGS(return_reference, 0)) },
152
+ { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type | _ZEND_ARG_INFO_FLAGS(return_reference, 0)), NULL },
142
153
143
154
#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX (name , return_reference , required_num_args , type , allow_null ) \
144
155
static const zend_internal_arg_info name[] = { \
145
- { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_CODE(type, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0)) },
156
+ { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_CODE(type, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0)), NULL },
146
157
#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO (name , type , allow_null ) \
147
158
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, 0, -1, type, allow_null)
148
159
149
160
#define ZEND_BEGIN_ARG_INFO_EX (name , _unused , return_reference , required_num_args ) \
150
161
static const zend_internal_arg_info name[] = { \
151
- { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(return_reference, 0)) },
162
+ { (const char*)(zend_uintptr_t)(required_num_args), ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(return_reference, 0)), NULL },
152
163
#define ZEND_BEGIN_ARG_INFO (name , _unused ) \
153
164
ZEND_BEGIN_ARG_INFO_EX(name, {}, ZEND_RETURN_VALUE, -1)
154
165
#define ZEND_END_ARG_INFO () };
0 commit comments