xref: /PHP-8.3/ext/spl/spl_array_arginfo.h (revision 7b355e8d)
1 /* This is a generated file, edit the .stub.php file instead.
2  * Stub hash: d0ce4612e25d2b8a765544c835fa2347ae9b23f2 */
3 
4 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject___construct, 0, 0, 0)
5 	ZEND_ARG_TYPE_MASK(0, array, MAY_BE_ARRAY|MAY_BE_OBJECT, "[]")
6 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0")
7 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, iteratorClass, IS_STRING, 0, "ArrayIterator::class")
8 ZEND_END_ARG_INFO()
9 
10 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_offsetExists, 0, 1, _IS_BOOL, 0)
11 	ZEND_ARG_TYPE_INFO(0, key, IS_MIXED, 0)
12 ZEND_END_ARG_INFO()
13 
14 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_offsetGet, 0, 1, IS_MIXED, 0)
15 	ZEND_ARG_TYPE_INFO(0, key, IS_MIXED, 0)
16 ZEND_END_ARG_INFO()
17 
18 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_offsetSet, 0, 2, IS_VOID, 0)
19 	ZEND_ARG_TYPE_INFO(0, key, IS_MIXED, 0)
20 	ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
21 ZEND_END_ARG_INFO()
22 
23 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_offsetUnset, 0, 1, IS_VOID, 0)
24 	ZEND_ARG_TYPE_INFO(0, key, IS_MIXED, 0)
25 ZEND_END_ARG_INFO()
26 
27 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_append, 0, 1, IS_VOID, 0)
28 	ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
29 ZEND_END_ARG_INFO()
30 
31 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_getArrayCopy, 0, 0, IS_ARRAY, 0)
32 ZEND_END_ARG_INFO()
33 
34 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_count, 0, 0, IS_LONG, 0)
35 ZEND_END_ARG_INFO()
36 
37 #define arginfo_class_ArrayObject_getFlags arginfo_class_ArrayObject_count
38 
39 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_setFlags, 0, 1, IS_VOID, 0)
40 	ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
41 ZEND_END_ARG_INFO()
42 
43 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_asort, 0, 0, IS_TRUE, 0)
44 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "SORT_REGULAR")
45 ZEND_END_ARG_INFO()
46 
47 #define arginfo_class_ArrayObject_ksort arginfo_class_ArrayObject_asort
48 
49 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_uasort, 0, 1, IS_TRUE, 0)
50 	ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
51 ZEND_END_ARG_INFO()
52 
53 #define arginfo_class_ArrayObject_uksort arginfo_class_ArrayObject_uasort
54 
55 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_natsort, 0, 0, IS_TRUE, 0)
56 ZEND_END_ARG_INFO()
57 
58 #define arginfo_class_ArrayObject_natcasesort arginfo_class_ArrayObject_natsort
59 
60 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_unserialize, 0, 1, IS_VOID, 0)
61 	ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
62 ZEND_END_ARG_INFO()
63 
64 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_serialize, 0, 0, IS_STRING, 0)
65 ZEND_END_ARG_INFO()
66 
67 #define arginfo_class_ArrayObject___serialize arginfo_class_ArrayObject_getArrayCopy
68 
69 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject___unserialize, 0, 1, IS_VOID, 0)
70 	ZEND_ARG_TYPE_INFO(0, data, IS_ARRAY, 0)
71 ZEND_END_ARG_INFO()
72 
73 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_ArrayObject_getIterator, 0, 0, Iterator, 0)
74 ZEND_END_ARG_INFO()
75 
76 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_exchangeArray, 0, 1, IS_ARRAY, 0)
77 	ZEND_ARG_TYPE_MASK(0, array, MAY_BE_ARRAY|MAY_BE_OBJECT, NULL)
78 ZEND_END_ARG_INFO()
79 
80 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayObject_setIteratorClass, 0, 1, IS_VOID, 0)
81 	ZEND_ARG_TYPE_INFO(0, iteratorClass, IS_STRING, 0)
82 ZEND_END_ARG_INFO()
83 
84 #define arginfo_class_ArrayObject_getIteratorClass arginfo_class_ArrayObject_serialize
85 
86 #define arginfo_class_ArrayObject___debugInfo arginfo_class_ArrayObject_getArrayCopy
87 
88 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayIterator___construct, 0, 0, 0)
89 	ZEND_ARG_TYPE_MASK(0, array, MAY_BE_ARRAY|MAY_BE_OBJECT, "[]")
90 	ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0")
91 ZEND_END_ARG_INFO()
92 
93 #define arginfo_class_ArrayIterator_offsetExists arginfo_class_ArrayObject_offsetExists
94 
95 #define arginfo_class_ArrayIterator_offsetGet arginfo_class_ArrayObject_offsetGet
96 
97 #define arginfo_class_ArrayIterator_offsetSet arginfo_class_ArrayObject_offsetSet
98 
99 #define arginfo_class_ArrayIterator_offsetUnset arginfo_class_ArrayObject_offsetUnset
100 
101 #define arginfo_class_ArrayIterator_append arginfo_class_ArrayObject_append
102 
103 #define arginfo_class_ArrayIterator_getArrayCopy arginfo_class_ArrayObject_getArrayCopy
104 
105 #define arginfo_class_ArrayIterator_count arginfo_class_ArrayObject_count
106 
107 #define arginfo_class_ArrayIterator_getFlags arginfo_class_ArrayObject_count
108 
109 #define arginfo_class_ArrayIterator_setFlags arginfo_class_ArrayObject_setFlags
110 
111 #define arginfo_class_ArrayIterator_asort arginfo_class_ArrayObject_asort
112 
113 #define arginfo_class_ArrayIterator_ksort arginfo_class_ArrayObject_asort
114 
115 #define arginfo_class_ArrayIterator_uasort arginfo_class_ArrayObject_uasort
116 
117 #define arginfo_class_ArrayIterator_uksort arginfo_class_ArrayObject_uasort
118 
119 #define arginfo_class_ArrayIterator_natsort arginfo_class_ArrayObject_natsort
120 
121 #define arginfo_class_ArrayIterator_natcasesort arginfo_class_ArrayObject_natsort
122 
123 #define arginfo_class_ArrayIterator_unserialize arginfo_class_ArrayObject_unserialize
124 
125 #define arginfo_class_ArrayIterator_serialize arginfo_class_ArrayObject_serialize
126 
127 #define arginfo_class_ArrayIterator___serialize arginfo_class_ArrayObject_getArrayCopy
128 
129 #define arginfo_class_ArrayIterator___unserialize arginfo_class_ArrayObject___unserialize
130 
131 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayIterator_rewind, 0, 0, IS_VOID, 0)
132 ZEND_END_ARG_INFO()
133 
134 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayIterator_current, 0, 0, IS_MIXED, 0)
135 ZEND_END_ARG_INFO()
136 
137 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_ArrayIterator_key, 0, 0, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_NULL)
138 ZEND_END_ARG_INFO()
139 
140 #define arginfo_class_ArrayIterator_next arginfo_class_ArrayIterator_rewind
141 
142 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayIterator_valid, 0, 0, _IS_BOOL, 0)
143 ZEND_END_ARG_INFO()
144 
145 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_ArrayIterator_seek, 0, 1, IS_VOID, 0)
146 	ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
147 ZEND_END_ARG_INFO()
148 
149 #define arginfo_class_ArrayIterator___debugInfo arginfo_class_ArrayObject_getArrayCopy
150 
151 #define arginfo_class_RecursiveArrayIterator_hasChildren arginfo_class_ArrayIterator_valid
152 
153 ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_RecursiveArrayIterator_getChildren, 0, 0, RecursiveArrayIterator, 1)
154 ZEND_END_ARG_INFO()
155 
156 
157 ZEND_METHOD(ArrayObject, __construct);
158 ZEND_METHOD(ArrayObject, offsetExists);
159 ZEND_METHOD(ArrayObject, offsetGet);
160 ZEND_METHOD(ArrayObject, offsetSet);
161 ZEND_METHOD(ArrayObject, offsetUnset);
162 ZEND_METHOD(ArrayObject, append);
163 ZEND_METHOD(ArrayObject, getArrayCopy);
164 ZEND_METHOD(ArrayObject, count);
165 ZEND_METHOD(ArrayObject, getFlags);
166 ZEND_METHOD(ArrayObject, setFlags);
167 ZEND_METHOD(ArrayObject, asort);
168 ZEND_METHOD(ArrayObject, ksort);
169 ZEND_METHOD(ArrayObject, uasort);
170 ZEND_METHOD(ArrayObject, uksort);
171 ZEND_METHOD(ArrayObject, natsort);
172 ZEND_METHOD(ArrayObject, natcasesort);
173 ZEND_METHOD(ArrayObject, unserialize);
174 ZEND_METHOD(ArrayObject, serialize);
175 ZEND_METHOD(ArrayObject, __serialize);
176 ZEND_METHOD(ArrayObject, __unserialize);
177 ZEND_METHOD(ArrayObject, getIterator);
178 ZEND_METHOD(ArrayObject, exchangeArray);
179 ZEND_METHOD(ArrayObject, setIteratorClass);
180 ZEND_METHOD(ArrayObject, getIteratorClass);
181 ZEND_METHOD(ArrayObject, __debugInfo);
182 ZEND_METHOD(ArrayIterator, __construct);
183 ZEND_METHOD(ArrayIterator, rewind);
184 ZEND_METHOD(ArrayIterator, current);
185 ZEND_METHOD(ArrayIterator, key);
186 ZEND_METHOD(ArrayIterator, next);
187 ZEND_METHOD(ArrayIterator, valid);
188 ZEND_METHOD(ArrayIterator, seek);
189 ZEND_METHOD(RecursiveArrayIterator, hasChildren);
190 ZEND_METHOD(RecursiveArrayIterator, getChildren);
191 
192 
193 static const zend_function_entry class_ArrayObject_methods[] = {
194 	ZEND_ME(ArrayObject, __construct, arginfo_class_ArrayObject___construct, ZEND_ACC_PUBLIC)
195 	ZEND_ME(ArrayObject, offsetExists, arginfo_class_ArrayObject_offsetExists, ZEND_ACC_PUBLIC)
196 	ZEND_ME(ArrayObject, offsetGet, arginfo_class_ArrayObject_offsetGet, ZEND_ACC_PUBLIC)
197 	ZEND_ME(ArrayObject, offsetSet, arginfo_class_ArrayObject_offsetSet, ZEND_ACC_PUBLIC)
198 	ZEND_ME(ArrayObject, offsetUnset, arginfo_class_ArrayObject_offsetUnset, ZEND_ACC_PUBLIC)
199 	ZEND_ME(ArrayObject, append, arginfo_class_ArrayObject_append, ZEND_ACC_PUBLIC)
200 	ZEND_ME(ArrayObject, getArrayCopy, arginfo_class_ArrayObject_getArrayCopy, ZEND_ACC_PUBLIC)
201 	ZEND_ME(ArrayObject, count, arginfo_class_ArrayObject_count, ZEND_ACC_PUBLIC)
202 	ZEND_ME(ArrayObject, getFlags, arginfo_class_ArrayObject_getFlags, ZEND_ACC_PUBLIC)
203 	ZEND_ME(ArrayObject, setFlags, arginfo_class_ArrayObject_setFlags, ZEND_ACC_PUBLIC)
204 	ZEND_ME(ArrayObject, asort, arginfo_class_ArrayObject_asort, ZEND_ACC_PUBLIC)
205 	ZEND_ME(ArrayObject, ksort, arginfo_class_ArrayObject_ksort, ZEND_ACC_PUBLIC)
206 	ZEND_ME(ArrayObject, uasort, arginfo_class_ArrayObject_uasort, ZEND_ACC_PUBLIC)
207 	ZEND_ME(ArrayObject, uksort, arginfo_class_ArrayObject_uksort, ZEND_ACC_PUBLIC)
208 	ZEND_ME(ArrayObject, natsort, arginfo_class_ArrayObject_natsort, ZEND_ACC_PUBLIC)
209 	ZEND_ME(ArrayObject, natcasesort, arginfo_class_ArrayObject_natcasesort, ZEND_ACC_PUBLIC)
210 	ZEND_ME(ArrayObject, unserialize, arginfo_class_ArrayObject_unserialize, ZEND_ACC_PUBLIC)
211 	ZEND_ME(ArrayObject, serialize, arginfo_class_ArrayObject_serialize, ZEND_ACC_PUBLIC)
212 	ZEND_ME(ArrayObject, __serialize, arginfo_class_ArrayObject___serialize, ZEND_ACC_PUBLIC)
213 	ZEND_ME(ArrayObject, __unserialize, arginfo_class_ArrayObject___unserialize, ZEND_ACC_PUBLIC)
214 	ZEND_ME(ArrayObject, getIterator, arginfo_class_ArrayObject_getIterator, ZEND_ACC_PUBLIC)
215 	ZEND_ME(ArrayObject, exchangeArray, arginfo_class_ArrayObject_exchangeArray, ZEND_ACC_PUBLIC)
216 	ZEND_ME(ArrayObject, setIteratorClass, arginfo_class_ArrayObject_setIteratorClass, ZEND_ACC_PUBLIC)
217 	ZEND_ME(ArrayObject, getIteratorClass, arginfo_class_ArrayObject_getIteratorClass, ZEND_ACC_PUBLIC)
218 	ZEND_ME(ArrayObject, __debugInfo, arginfo_class_ArrayObject___debugInfo, ZEND_ACC_PUBLIC)
219 	ZEND_FE_END
220 };
221 
222 
223 static const zend_function_entry class_ArrayIterator_methods[] = {
224 	ZEND_ME(ArrayIterator, __construct, arginfo_class_ArrayIterator___construct, ZEND_ACC_PUBLIC)
225 	ZEND_MALIAS(ArrayObject, offsetExists, offsetExists, arginfo_class_ArrayIterator_offsetExists, ZEND_ACC_PUBLIC)
226 	ZEND_MALIAS(ArrayObject, offsetGet, offsetGet, arginfo_class_ArrayIterator_offsetGet, ZEND_ACC_PUBLIC)
227 	ZEND_MALIAS(ArrayObject, offsetSet, offsetSet, arginfo_class_ArrayIterator_offsetSet, ZEND_ACC_PUBLIC)
228 	ZEND_MALIAS(ArrayObject, offsetUnset, offsetUnset, arginfo_class_ArrayIterator_offsetUnset, ZEND_ACC_PUBLIC)
229 	ZEND_MALIAS(ArrayObject, append, append, arginfo_class_ArrayIterator_append, ZEND_ACC_PUBLIC)
230 	ZEND_MALIAS(ArrayObject, getArrayCopy, getArrayCopy, arginfo_class_ArrayIterator_getArrayCopy, ZEND_ACC_PUBLIC)
231 	ZEND_MALIAS(ArrayObject, count, count, arginfo_class_ArrayIterator_count, ZEND_ACC_PUBLIC)
232 	ZEND_MALIAS(ArrayObject, getFlags, getFlags, arginfo_class_ArrayIterator_getFlags, ZEND_ACC_PUBLIC)
233 	ZEND_MALIAS(ArrayObject, setFlags, setFlags, arginfo_class_ArrayIterator_setFlags, ZEND_ACC_PUBLIC)
234 	ZEND_MALIAS(ArrayObject, asort, asort, arginfo_class_ArrayIterator_asort, ZEND_ACC_PUBLIC)
235 	ZEND_MALIAS(ArrayObject, ksort, ksort, arginfo_class_ArrayIterator_ksort, ZEND_ACC_PUBLIC)
236 	ZEND_MALIAS(ArrayObject, uasort, uasort, arginfo_class_ArrayIterator_uasort, ZEND_ACC_PUBLIC)
237 	ZEND_MALIAS(ArrayObject, uksort, uksort, arginfo_class_ArrayIterator_uksort, ZEND_ACC_PUBLIC)
238 	ZEND_MALIAS(ArrayObject, natsort, natsort, arginfo_class_ArrayIterator_natsort, ZEND_ACC_PUBLIC)
239 	ZEND_MALIAS(ArrayObject, natcasesort, natcasesort, arginfo_class_ArrayIterator_natcasesort, ZEND_ACC_PUBLIC)
240 	ZEND_MALIAS(ArrayObject, unserialize, unserialize, arginfo_class_ArrayIterator_unserialize, ZEND_ACC_PUBLIC)
241 	ZEND_MALIAS(ArrayObject, serialize, serialize, arginfo_class_ArrayIterator_serialize, ZEND_ACC_PUBLIC)
242 	ZEND_MALIAS(ArrayObject, __serialize, __serialize, arginfo_class_ArrayIterator___serialize, ZEND_ACC_PUBLIC)
243 	ZEND_MALIAS(ArrayObject, __unserialize, __unserialize, arginfo_class_ArrayIterator___unserialize, ZEND_ACC_PUBLIC)
244 	ZEND_ME(ArrayIterator, rewind, arginfo_class_ArrayIterator_rewind, ZEND_ACC_PUBLIC)
245 	ZEND_ME(ArrayIterator, current, arginfo_class_ArrayIterator_current, ZEND_ACC_PUBLIC)
246 	ZEND_ME(ArrayIterator, key, arginfo_class_ArrayIterator_key, ZEND_ACC_PUBLIC)
247 	ZEND_ME(ArrayIterator, next, arginfo_class_ArrayIterator_next, ZEND_ACC_PUBLIC)
248 	ZEND_ME(ArrayIterator, valid, arginfo_class_ArrayIterator_valid, ZEND_ACC_PUBLIC)
249 	ZEND_ME(ArrayIterator, seek, arginfo_class_ArrayIterator_seek, ZEND_ACC_PUBLIC)
250 	ZEND_MALIAS(ArrayObject, __debugInfo, __debugInfo, arginfo_class_ArrayIterator___debugInfo, ZEND_ACC_PUBLIC)
251 	ZEND_FE_END
252 };
253 
254 
255 static const zend_function_entry class_RecursiveArrayIterator_methods[] = {
256 	ZEND_ME(RecursiveArrayIterator, hasChildren, arginfo_class_RecursiveArrayIterator_hasChildren, ZEND_ACC_PUBLIC)
257 	ZEND_ME(RecursiveArrayIterator, getChildren, arginfo_class_RecursiveArrayIterator_getChildren, ZEND_ACC_PUBLIC)
258 	ZEND_FE_END
259 };
260 
register_class_ArrayObject(zend_class_entry * class_entry_IteratorAggregate,zend_class_entry * class_entry_ArrayAccess,zend_class_entry * class_entry_Serializable,zend_class_entry * class_entry_Countable)261 static zend_class_entry *register_class_ArrayObject(zend_class_entry *class_entry_IteratorAggregate, zend_class_entry *class_entry_ArrayAccess, zend_class_entry *class_entry_Serializable, zend_class_entry *class_entry_Countable)
262 {
263 	zend_class_entry ce, *class_entry;
264 
265 	INIT_CLASS_ENTRY(ce, "ArrayObject", class_ArrayObject_methods);
266 	class_entry = zend_register_internal_class_ex(&ce, NULL);
267 	zend_class_implements(class_entry, 4, class_entry_IteratorAggregate, class_entry_ArrayAccess, class_entry_Serializable, class_entry_Countable);
268 
269 	zval const_STD_PROP_LIST_value;
270 	ZVAL_LONG(&const_STD_PROP_LIST_value, SPL_ARRAY_STD_PROP_LIST);
271 	zend_string *const_STD_PROP_LIST_name = zend_string_init_interned("STD_PROP_LIST", sizeof("STD_PROP_LIST") - 1, 1);
272 	zend_declare_class_constant_ex(class_entry, const_STD_PROP_LIST_name, &const_STD_PROP_LIST_value, ZEND_ACC_PUBLIC, NULL);
273 	zend_string_release(const_STD_PROP_LIST_name);
274 
275 	zval const_ARRAY_AS_PROPS_value;
276 	ZVAL_LONG(&const_ARRAY_AS_PROPS_value, SPL_ARRAY_ARRAY_AS_PROPS);
277 	zend_string *const_ARRAY_AS_PROPS_name = zend_string_init_interned("ARRAY_AS_PROPS", sizeof("ARRAY_AS_PROPS") - 1, 1);
278 	zend_declare_class_constant_ex(class_entry, const_ARRAY_AS_PROPS_name, &const_ARRAY_AS_PROPS_value, ZEND_ACC_PUBLIC, NULL);
279 	zend_string_release(const_ARRAY_AS_PROPS_name);
280 
281 	return class_entry;
282 }
283 
register_class_ArrayIterator(zend_class_entry * class_entry_SeekableIterator,zend_class_entry * class_entry_ArrayAccess,zend_class_entry * class_entry_Serializable,zend_class_entry * class_entry_Countable)284 static zend_class_entry *register_class_ArrayIterator(zend_class_entry *class_entry_SeekableIterator, zend_class_entry *class_entry_ArrayAccess, zend_class_entry *class_entry_Serializable, zend_class_entry *class_entry_Countable)
285 {
286 	zend_class_entry ce, *class_entry;
287 
288 	INIT_CLASS_ENTRY(ce, "ArrayIterator", class_ArrayIterator_methods);
289 	class_entry = zend_register_internal_class_ex(&ce, NULL);
290 	zend_class_implements(class_entry, 4, class_entry_SeekableIterator, class_entry_ArrayAccess, class_entry_Serializable, class_entry_Countable);
291 
292 	zval const_STD_PROP_LIST_value;
293 	ZVAL_LONG(&const_STD_PROP_LIST_value, SPL_ARRAY_STD_PROP_LIST);
294 	zend_string *const_STD_PROP_LIST_name = zend_string_init_interned("STD_PROP_LIST", sizeof("STD_PROP_LIST") - 1, 1);
295 	zend_declare_class_constant_ex(class_entry, const_STD_PROP_LIST_name, &const_STD_PROP_LIST_value, ZEND_ACC_PUBLIC, NULL);
296 	zend_string_release(const_STD_PROP_LIST_name);
297 
298 	zval const_ARRAY_AS_PROPS_value;
299 	ZVAL_LONG(&const_ARRAY_AS_PROPS_value, SPL_ARRAY_ARRAY_AS_PROPS);
300 	zend_string *const_ARRAY_AS_PROPS_name = zend_string_init_interned("ARRAY_AS_PROPS", sizeof("ARRAY_AS_PROPS") - 1, 1);
301 	zend_declare_class_constant_ex(class_entry, const_ARRAY_AS_PROPS_name, &const_ARRAY_AS_PROPS_value, ZEND_ACC_PUBLIC, NULL);
302 	zend_string_release(const_ARRAY_AS_PROPS_name);
303 
304 	return class_entry;
305 }
306 
register_class_RecursiveArrayIterator(zend_class_entry * class_entry_ArrayIterator,zend_class_entry * class_entry_RecursiveIterator)307 static zend_class_entry *register_class_RecursiveArrayIterator(zend_class_entry *class_entry_ArrayIterator, zend_class_entry *class_entry_RecursiveIterator)
308 {
309 	zend_class_entry ce, *class_entry;
310 
311 	INIT_CLASS_ENTRY(ce, "RecursiveArrayIterator", class_RecursiveArrayIterator_methods);
312 	class_entry = zend_register_internal_class_ex(&ce, class_entry_ArrayIterator);
313 	zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
314 
315 	zval const_CHILD_ARRAYS_ONLY_value;
316 	ZVAL_LONG(&const_CHILD_ARRAYS_ONLY_value, SPL_ARRAY_CHILD_ARRAYS_ONLY);
317 	zend_string *const_CHILD_ARRAYS_ONLY_name = zend_string_init_interned("CHILD_ARRAYS_ONLY", sizeof("CHILD_ARRAYS_ONLY") - 1, 1);
318 	zend_declare_class_constant_ex(class_entry, const_CHILD_ARRAYS_ONLY_name, &const_CHILD_ARRAYS_ONLY_value, ZEND_ACC_PUBLIC, NULL);
319 	zend_string_release(const_CHILD_ARRAYS_ONLY_name);
320 
321 	return class_entry;
322 }
323