Skip to content

Commit 4f4c031

Browse files
committed
Generate ext/spl class entries from stubs
Closes GH-6709
1 parent 6b0f14f commit 4f4c031

29 files changed

+843
-233
lines changed

ext/spl/php_spl.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/** @generate-class-entries */
44

55
/** @param object|string $object_or_class */
66
function class_implements($object_or_class, bool $autoload = true): array|false {}

ext/spl/php_spl_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 920cc4fca334f59316fc4276277958c9738afb3e */
2+
* Stub hash: 54d193c03c2652ce40adabd10d88666a86e32728 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_implements, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
55
ZEND_ARG_INFO(0, object_or_class)

ext/spl/spl_array.c

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1817,7 +1817,7 @@ PHP_METHOD(ArrayObject, __unserialize)
18171817
RETURN_THROWS();
18181818
}
18191819

1820-
if (!instanceof_function(ce, spl_ce_Iterator)) {
1820+
if (!instanceof_function(ce, zend_ce_iterator)) {
18211821
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0,
18221822
"Cannot deserialize ArrayObject with iterator class '%s'; this class does not implement the Iterator interface",
18231823
ZSTR_VAL(Z_STR_P(iterator_class_zv)));
@@ -1842,11 +1842,9 @@ PHP_METHOD(ArrayObject, __debugInfo)
18421842
/* {{{ PHP_MINIT_FUNCTION(spl_array) */
18431843
PHP_MINIT_FUNCTION(spl_array)
18441844
{
1845-
REGISTER_SPL_STD_CLASS_EX(ArrayObject, spl_array_object_new, class_ArrayObject_methods);
1846-
REGISTER_SPL_IMPLEMENTS(ArrayObject, Aggregate);
1847-
REGISTER_SPL_IMPLEMENTS(ArrayObject, ArrayAccess);
1848-
REGISTER_SPL_IMPLEMENTS(ArrayObject, Serializable);
1849-
REGISTER_SPL_IMPLEMENTS(ArrayObject, Countable);
1845+
spl_ce_ArrayObject = register_class_ArrayObject(zend_ce_aggregate, zend_ce_arrayaccess, zend_ce_serializable, zend_ce_countable);
1846+
spl_ce_ArrayObject->create_object = spl_array_object_new;
1847+
18501848
memcpy(&spl_handler_ArrayObject, &std_object_handlers, sizeof(zend_object_handlers));
18511849

18521850
spl_handler_ArrayObject.offset = XtOffsetOf(spl_array_object, std);
@@ -1870,25 +1868,21 @@ PHP_MINIT_FUNCTION(spl_array)
18701868
spl_handler_ArrayObject.dtor_obj = zend_objects_destroy_object;
18711869
spl_handler_ArrayObject.free_obj = spl_array_object_free_storage;
18721870

1873-
REGISTER_SPL_STD_CLASS_EX(ArrayIterator, spl_array_object_new, class_ArrayIterator_methods);
1874-
REGISTER_SPL_IMPLEMENTS(ArrayIterator, Iterator);
1875-
REGISTER_SPL_IMPLEMENTS(ArrayIterator, ArrayAccess);
1876-
REGISTER_SPL_IMPLEMENTS(ArrayIterator, SeekableIterator);
1877-
REGISTER_SPL_IMPLEMENTS(ArrayIterator, Serializable);
1878-
REGISTER_SPL_IMPLEMENTS(ArrayIterator, Countable);
1879-
memcpy(&spl_handler_ArrayIterator, &spl_handler_ArrayObject, sizeof(zend_object_handlers));
1871+
spl_ce_ArrayIterator = register_class_ArrayIterator(spl_ce_SeekableIterator, zend_ce_arrayaccess, zend_ce_serializable, zend_ce_countable);
1872+
spl_ce_ArrayIterator->create_object = spl_array_object_new;
18801873
spl_ce_ArrayIterator->get_iterator = spl_array_get_iterator;
18811874
spl_ce_ArrayIterator->ce_flags |= ZEND_ACC_REUSE_GET_ITERATOR;
18821875

1876+
memcpy(&spl_handler_ArrayIterator, &spl_handler_ArrayObject, sizeof(zend_object_handlers));
18831877

18841878
REGISTER_SPL_CLASS_CONST_LONG(ArrayObject, "STD_PROP_LIST", SPL_ARRAY_STD_PROP_LIST);
18851879
REGISTER_SPL_CLASS_CONST_LONG(ArrayObject, "ARRAY_AS_PROPS", SPL_ARRAY_ARRAY_AS_PROPS);
18861880

18871881
REGISTER_SPL_CLASS_CONST_LONG(ArrayIterator, "STD_PROP_LIST", SPL_ARRAY_STD_PROP_LIST);
18881882
REGISTER_SPL_CLASS_CONST_LONG(ArrayIterator, "ARRAY_AS_PROPS", SPL_ARRAY_ARRAY_AS_PROPS);
18891883

1890-
REGISTER_SPL_SUB_CLASS_EX(RecursiveArrayIterator, ArrayIterator, spl_array_object_new, class_RecursiveArrayIterator_methods);
1891-
REGISTER_SPL_IMPLEMENTS(RecursiveArrayIterator, RecursiveIterator);
1884+
spl_ce_RecursiveArrayIterator = register_class_RecursiveArrayIterator(spl_ce_ArrayIterator, spl_ce_RecursiveIterator);
1885+
spl_ce_RecursiveArrayIterator->create_object = spl_array_object_new;
18921886
spl_ce_RecursiveArrayIterator->get_iterator = spl_array_get_iterator;
18931887
spl_ce_RecursiveArrayIterator->ce_flags |= ZEND_ACC_REUSE_GET_ITERATOR;
18941888

ext/spl/spl_array.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/** @generate-class-entries */
44

55
class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Countable
66
{

ext/spl/spl_array_arginfo.h

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: da85db1e5e985ddbefaf38598133e3cba46475f2 */
2+
* Stub hash: 38cb41de1caa42ba96573cbbd33e5ae971065b8a */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject___construct, 0, 0, 0)
55
ZEND_ARG_TYPE_MASK(0, array, MAY_BE_ARRAY|MAY_BE_OBJECT, "[]")
@@ -244,3 +244,36 @@ static const zend_function_entry class_RecursiveArrayIterator_methods[] = {
244244
ZEND_ME(RecursiveArrayIterator, getChildren, arginfo_class_RecursiveArrayIterator_getChildren, ZEND_ACC_PUBLIC)
245245
ZEND_FE_END
246246
};
247+
248+
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)
249+
{
250+
zend_class_entry ce, *class_entry;
251+
252+
INIT_CLASS_ENTRY(ce, "ArrayObject", class_ArrayObject_methods);
253+
class_entry = zend_register_internal_class_ex(&ce, NULL);
254+
zend_class_implements(class_entry, 4, class_entry_IteratorAggregate, class_entry_ArrayAccess, class_entry_Serializable, class_entry_Countable);
255+
256+
return class_entry;
257+
}
258+
259+
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)
260+
{
261+
zend_class_entry ce, *class_entry;
262+
263+
INIT_CLASS_ENTRY(ce, "ArrayIterator", class_ArrayIterator_methods);
264+
class_entry = zend_register_internal_class_ex(&ce, NULL);
265+
zend_class_implements(class_entry, 4, class_entry_SeekableIterator, class_entry_ArrayAccess, class_entry_Serializable, class_entry_Countable);
266+
267+
return class_entry;
268+
}
269+
270+
static zend_class_entry *register_class_RecursiveArrayIterator(zend_class_entry *class_entry_ArrayIterator, zend_class_entry *class_entry_RecursiveIterator)
271+
{
272+
zend_class_entry ce, *class_entry;
273+
274+
INIT_CLASS_ENTRY(ce, "RecursiveArrayIterator", class_RecursiveArrayIterator_methods);
275+
class_entry = zend_register_internal_class_ex(&ce, class_entry_ArrayIterator);
276+
zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
277+
278+
return class_entry;
279+
}

ext/spl/spl_directory.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2730,7 +2730,9 @@ PHP_METHOD(SplFileObject, seek)
27302730
/* {{{ PHP_MINIT_FUNCTION(spl_directory) */
27312731
PHP_MINIT_FUNCTION(spl_directory)
27322732
{
2733-
REGISTER_SPL_STD_CLASS_EX(SplFileInfo, spl_filesystem_object_new, class_SplFileInfo_methods);
2733+
spl_ce_SplFileInfo = register_class_SplFileInfo(zend_ce_stringable);
2734+
spl_ce_SplFileInfo->create_object = spl_filesystem_object_new;
2735+
27342736
memcpy(&spl_filesystem_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
27352737
spl_filesystem_object_handlers.offset = XtOffsetOf(spl_filesystem_object, std);
27362738
spl_filesystem_object_handlers.clone_obj = spl_filesystem_object_clone;
@@ -2739,16 +2741,14 @@ PHP_MINIT_FUNCTION(spl_directory)
27392741
spl_filesystem_object_handlers.free_obj = spl_filesystem_object_free_storage;
27402742
spl_ce_SplFileInfo->serialize = zend_class_serialize_deny;
27412743
spl_ce_SplFileInfo->unserialize = zend_class_unserialize_deny;
2742-
REGISTER_SPL_IMPLEMENTS(SplFileInfo, Stringable);
2743-
2744-
2745-
REGISTER_SPL_SUB_CLASS_EX(DirectoryIterator, SplFileInfo, spl_filesystem_object_new, class_DirectoryIterator_methods);
2746-
zend_class_implements(spl_ce_DirectoryIterator, 1, zend_ce_iterator);
2747-
REGISTER_SPL_IMPLEMENTS(DirectoryIterator, SeekableIterator);
27482744

2745+
spl_ce_DirectoryIterator = register_class_DirectoryIterator(spl_ce_SplFileInfo, spl_ce_SeekableIterator);
2746+
spl_ce_DirectoryIterator->create_object = spl_filesystem_object_new;
27492747
spl_ce_DirectoryIterator->get_iterator = spl_filesystem_dir_get_iterator;
27502748

2751-
REGISTER_SPL_SUB_CLASS_EX(FilesystemIterator, DirectoryIterator, spl_filesystem_object_new, class_FilesystemIterator_methods);
2749+
spl_ce_FilesystemIterator = register_class_FilesystemIterator(spl_ce_DirectoryIterator);
2750+
spl_ce_FilesystemIterator->create_object = spl_filesystem_object_new;
2751+
spl_ce_FilesystemIterator->get_iterator = spl_filesystem_tree_get_iterator;
27522752

27532753
REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "CURRENT_MODE_MASK", SPL_FILE_DIR_CURRENT_MODE_MASK);
27542754
REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "CURRENT_AS_PATHNAME", SPL_FILE_DIR_CURRENT_AS_PATHNAME);
@@ -2763,30 +2763,29 @@ PHP_MINIT_FUNCTION(spl_directory)
27632763
REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "SKIP_DOTS", SPL_FILE_DIR_SKIPDOTS);
27642764
REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "UNIX_PATHS", SPL_FILE_DIR_UNIXPATHS);
27652765

2766-
spl_ce_FilesystemIterator->get_iterator = spl_filesystem_tree_get_iterator;
2767-
2768-
REGISTER_SPL_SUB_CLASS_EX(RecursiveDirectoryIterator, FilesystemIterator, spl_filesystem_object_new, class_RecursiveDirectoryIterator_methods);
2769-
REGISTER_SPL_IMPLEMENTS(RecursiveDirectoryIterator, RecursiveIterator);
2766+
spl_ce_RecursiveDirectoryIterator = register_class_RecursiveDirectoryIterator(spl_ce_FilesystemIterator, spl_ce_RecursiveIterator);
2767+
spl_ce_RecursiveDirectoryIterator->create_object = spl_filesystem_object_new;
27702768

27712769
memcpy(&spl_filesystem_object_check_handlers, &spl_filesystem_object_handlers, sizeof(zend_object_handlers));
27722770
spl_filesystem_object_check_handlers.clone_obj = NULL;
27732771
spl_filesystem_object_check_handlers.get_method = spl_filesystem_object_get_method_check;
27742772

27752773
#ifdef HAVE_GLOB
2776-
REGISTER_SPL_SUB_CLASS_EX(GlobIterator, FilesystemIterator, spl_filesystem_object_new_check, class_GlobIterator_methods);
2777-
REGISTER_SPL_IMPLEMENTS(GlobIterator, Countable);
2774+
spl_ce_GlobIterator = register_class_GlobIterator(spl_ce_FilesystemIterator, zend_ce_countable);
2775+
spl_ce_GlobIterator->create_object = spl_filesystem_object_new_check;
27782776
#endif
27792777

2780-
REGISTER_SPL_SUB_CLASS_EX(SplFileObject, SplFileInfo, spl_filesystem_object_new_check, class_SplFileObject_methods);
2781-
REGISTER_SPL_IMPLEMENTS(SplFileObject, RecursiveIterator);
2782-
REGISTER_SPL_IMPLEMENTS(SplFileObject, SeekableIterator);
2778+
spl_ce_SplFileObject = register_class_SplFileObject(spl_ce_SplFileInfo, spl_ce_RecursiveIterator, spl_ce_SeekableIterator);
2779+
spl_ce_SplFileObject->create_object = spl_filesystem_object_new_check;
27832780

27842781
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, "DROP_NEW_LINE", SPL_FILE_OBJECT_DROP_NEW_LINE);
27852782
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, "READ_AHEAD", SPL_FILE_OBJECT_READ_AHEAD);
27862783
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, "SKIP_EMPTY", SPL_FILE_OBJECT_SKIP_EMPTY);
27872784
REGISTER_SPL_CLASS_CONST_LONG(SplFileObject, "READ_CSV", SPL_FILE_OBJECT_READ_CSV);
27882785

2789-
REGISTER_SPL_SUB_CLASS_EX(SplTempFileObject, SplFileObject, spl_filesystem_object_new_check, class_SplTempFileObject_methods);
2786+
spl_ce_SplTempFileObject = register_class_SplTempFileObject(spl_ce_SplFileObject);
2787+
spl_ce_SplTempFileObject->create_object = spl_filesystem_object_new_check;
2788+
27902789
return SUCCESS;
27912790
}
27922791
/* }}} */

ext/spl/spl_directory.stub.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/** @generate-class-entries */
44

5-
class SplFileInfo
5+
class SplFileInfo implements Stringable
66
{
77
public function __construct(string $filename) {}
88

ext/spl/spl_directory_arginfo.h

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 285af54cf7b3f3ef3f0d673b248c5afbd4cc440e */
2+
* Stub hash: de510a0512057bfaecbac8228107600ed14e2ba5 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo___construct, 0, 0, 1)
55
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
@@ -471,3 +471,78 @@ static const zend_function_entry class_SplTempFileObject_methods[] = {
471471
ZEND_ME(SplTempFileObject, __construct, arginfo_class_SplTempFileObject___construct, ZEND_ACC_PUBLIC)
472472
ZEND_FE_END
473473
};
474+
475+
static zend_class_entry *register_class_SplFileInfo(zend_class_entry *class_entry_Stringable)
476+
{
477+
zend_class_entry ce, *class_entry;
478+
479+
INIT_CLASS_ENTRY(ce, "SplFileInfo", class_SplFileInfo_methods);
480+
class_entry = zend_register_internal_class_ex(&ce, NULL);
481+
zend_class_implements(class_entry, 1, class_entry_Stringable);
482+
483+
return class_entry;
484+
}
485+
486+
static zend_class_entry *register_class_DirectoryIterator(zend_class_entry *class_entry_SplFileInfo, zend_class_entry *class_entry_SeekableIterator)
487+
{
488+
zend_class_entry ce, *class_entry;
489+
490+
INIT_CLASS_ENTRY(ce, "DirectoryIterator", class_DirectoryIterator_methods);
491+
class_entry = zend_register_internal_class_ex(&ce, class_entry_SplFileInfo);
492+
zend_class_implements(class_entry, 1, class_entry_SeekableIterator);
493+
494+
return class_entry;
495+
}
496+
497+
static zend_class_entry *register_class_FilesystemIterator(zend_class_entry *class_entry_DirectoryIterator)
498+
{
499+
zend_class_entry ce, *class_entry;
500+
501+
INIT_CLASS_ENTRY(ce, "FilesystemIterator", class_FilesystemIterator_methods);
502+
class_entry = zend_register_internal_class_ex(&ce, class_entry_DirectoryIterator);
503+
504+
return class_entry;
505+
}
506+
507+
static zend_class_entry *register_class_RecursiveDirectoryIterator(zend_class_entry *class_entry_FilesystemIterator, zend_class_entry *class_entry_RecursiveIterator)
508+
{
509+
zend_class_entry ce, *class_entry;
510+
511+
INIT_CLASS_ENTRY(ce, "RecursiveDirectoryIterator", class_RecursiveDirectoryIterator_methods);
512+
class_entry = zend_register_internal_class_ex(&ce, class_entry_FilesystemIterator);
513+
zend_class_implements(class_entry, 1, class_entry_RecursiveIterator);
514+
515+
return class_entry;
516+
}
517+
518+
static zend_class_entry *register_class_GlobIterator(zend_class_entry *class_entry_FilesystemIterator, zend_class_entry *class_entry_Countable)
519+
{
520+
zend_class_entry ce, *class_entry;
521+
522+
INIT_CLASS_ENTRY(ce, "GlobIterator", class_GlobIterator_methods);
523+
class_entry = zend_register_internal_class_ex(&ce, class_entry_FilesystemIterator);
524+
zend_class_implements(class_entry, 1, class_entry_Countable);
525+
526+
return class_entry;
527+
}
528+
529+
static zend_class_entry *register_class_SplFileObject(zend_class_entry *class_entry_SplFileInfo, zend_class_entry *class_entry_RecursiveIterator, zend_class_entry *class_entry_SeekableIterator)
530+
{
531+
zend_class_entry ce, *class_entry;
532+
533+
INIT_CLASS_ENTRY(ce, "SplFileObject", class_SplFileObject_methods);
534+
class_entry = zend_register_internal_class_ex(&ce, class_entry_SplFileInfo);
535+
zend_class_implements(class_entry, 2, class_entry_RecursiveIterator, class_entry_SeekableIterator);
536+
537+
return class_entry;
538+
}
539+
540+
static zend_class_entry *register_class_SplTempFileObject(zend_class_entry *class_entry_SplFileObject)
541+
{
542+
zend_class_entry ce, *class_entry;
543+
544+
INIT_CLASS_ENTRY(ce, "SplTempFileObject", class_SplTempFileObject_methods);
545+
class_entry = zend_register_internal_class_ex(&ce, class_entry_SplFileObject);
546+
547+
return class_entry;
548+
}

ext/spl/spl_dllist.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,7 +1332,12 @@ zend_object_iterator *spl_dllist_get_iterator(zend_class_entry *ce, zval *object
13321332

13331333
PHP_MINIT_FUNCTION(spl_dllist) /* {{{ */
13341334
{
1335-
REGISTER_SPL_STD_CLASS_EX(SplDoublyLinkedList, spl_dllist_object_new, class_SplDoublyLinkedList_methods);
1335+
spl_ce_SplDoublyLinkedList = register_class_SplDoublyLinkedList(
1336+
zend_ce_iterator, zend_ce_countable, zend_ce_arrayaccess, zend_ce_serializable
1337+
);
1338+
spl_ce_SplDoublyLinkedList->create_object = spl_dllist_object_new;
1339+
spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator;
1340+
13361341
memcpy(&spl_handler_SplDoublyLinkedList, &std_object_handlers, sizeof(zend_object_handlers));
13371342

13381343
spl_handler_SplDoublyLinkedList.offset = XtOffsetOf(spl_dllist_object, std);
@@ -1347,17 +1352,12 @@ PHP_MINIT_FUNCTION(spl_dllist) /* {{{ */
13471352
REGISTER_SPL_CLASS_CONST_LONG(SplDoublyLinkedList, "IT_MODE_DELETE",SPL_DLLIST_IT_DELETE);
13481353
REGISTER_SPL_CLASS_CONST_LONG(SplDoublyLinkedList, "IT_MODE_KEEP", 0);
13491354

1350-
REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Iterator);
1351-
REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Countable);
1352-
REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, ArrayAccess);
1353-
REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Serializable);
1354-
1355-
spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator;
1356-
1357-
REGISTER_SPL_SUB_CLASS_EX(SplQueue, SplDoublyLinkedList, spl_dllist_object_new, class_SplQueue_methods);
1358-
REGISTER_SPL_SUB_CLASS_EX(SplStack, SplDoublyLinkedList, spl_dllist_object_new, class_SplStack_methods);
1359-
1355+
spl_ce_SplQueue = register_class_SplQueue(spl_ce_SplDoublyLinkedList);
1356+
spl_ce_SplQueue->create_object = spl_dllist_object_new;
13601357
spl_ce_SplQueue->get_iterator = spl_dllist_get_iterator;
1358+
1359+
spl_ce_SplStack = register_class_SplStack(spl_ce_SplDoublyLinkedList);
1360+
spl_ce_SplStack->create_object = spl_dllist_object_new;
13611361
spl_ce_SplStack->get_iterator = spl_dllist_get_iterator;
13621362

13631363
return SUCCESS;

ext/spl/spl_dllist.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
/** @generate-function-entries */
3+
/** @generate-class-entries */
44

55
class SplDoublyLinkedList implements Iterator, Countable, ArrayAccess, Serializable
66
{

ext/spl/spl_dllist_arginfo.h

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 404df73577d733275e386226e11887b37a500ade */
2+
* Stub hash: d0c98e1628895a81ac0b4abe62dede9ed2c7f55e */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList_add, 0, 0, 2)
55
ZEND_ARG_TYPE_INFO(0, index, IS_LONG, 0)
@@ -144,3 +144,34 @@ static const zend_function_entry class_SplQueue_methods[] = {
144144
static const zend_function_entry class_SplStack_methods[] = {
145145
ZEND_FE_END
146146
};
147+
148+
static zend_class_entry *register_class_SplDoublyLinkedList(zend_class_entry *class_entry_Iterator, zend_class_entry *class_entry_Countable, zend_class_entry *class_entry_ArrayAccess, zend_class_entry *class_entry_Serializable)
149+
{
150+
zend_class_entry ce, *class_entry;
151+
152+
INIT_CLASS_ENTRY(ce, "SplDoublyLinkedList", class_SplDoublyLinkedList_methods);
153+
class_entry = zend_register_internal_class_ex(&ce, NULL);
154+
zend_class_implements(class_entry, 4, class_entry_Iterator, class_entry_Countable, class_entry_ArrayAccess, class_entry_Serializable);
155+
156+
return class_entry;
157+
}
158+
159+
static zend_class_entry *register_class_SplQueue(zend_class_entry *class_entry_SplDoublyLinkedList)
160+
{
161+
zend_class_entry ce, *class_entry;
162+
163+
INIT_CLASS_ENTRY(ce, "SplQueue", class_SplQueue_methods);
164+
class_entry = zend_register_internal_class_ex(&ce, class_entry_SplDoublyLinkedList);
165+
166+
return class_entry;
167+
}
168+
169+
static zend_class_entry *register_class_SplStack(zend_class_entry *class_entry_SplDoublyLinkedList)
170+
{
171+
zend_class_entry ce, *class_entry;
172+
173+
INIT_CLASS_ENTRY(ce, "SplStack", class_SplStack_methods);
174+
class_entry = zend_register_internal_class_ex(&ce, class_entry_SplDoublyLinkedList);
175+
176+
return class_entry;
177+
}

0 commit comments

Comments
 (0)