Skip to content

Commit a824bcf

Browse files
committed
- MFH: Make IteratorIterator base of most SPL iterators
1 parent 7b70ca4 commit a824bcf

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

ext/spl/spl_iterators.c

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2147,8 +2147,13 @@ PHP_MINIT_FUNCTION(spl_iterators)
21472147
REGISTER_SPL_CLASS_CONST_LONG(RecursiveIteratorIterator, "CHILD_FIRST", RIT_CHILD_FIRST);
21482148
REGISTER_SPL_CLASS_CONST_LONG(RecursiveIteratorIterator, "CATCH_GET_CHILD", RIT_CATCH_GET_CHILD);
21492149

2150-
REGISTER_SPL_STD_CLASS_EX(FilterIterator, spl_dual_it_new, spl_funcs_FilterIterator);
2151-
REGISTER_SPL_ITERATOR(FilterIterator);
2150+
REGISTER_SPL_INTERFACE(OuterIterator);
2151+
REGISTER_SPL_ITERATOR(OuterIterator);
2152+
2153+
REGISTER_SPL_STD_CLASS_EX(IteratorIterator, spl_dual_it_new, spl_funcs_IteratorIterator);
2154+
REGISTER_SPL_ITERATOR(IteratorIterator);
2155+
2156+
REGISTER_SPL_SUB_CLASS_EX(FilterIterator, IteratorIterator, spl_dual_it_new, spl_funcs_FilterIterator);
21522157
spl_ce_FilterIterator->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
21532158

21542159
REGISTER_SPL_SUB_CLASS_EX(RecursiveFilterIterator, FilterIterator, spl_dual_it_new, spl_funcs_RecursiveFilterIterator);
@@ -2159,11 +2164,9 @@ PHP_MINIT_FUNCTION(spl_iterators)
21592164
REGISTER_SPL_INTERFACE(SeekableIterator);
21602165
REGISTER_SPL_ITERATOR(SeekableIterator);
21612166

2162-
REGISTER_SPL_STD_CLASS_EX(LimitIterator, spl_dual_it_new, spl_funcs_LimitIterator);
2163-
REGISTER_SPL_ITERATOR(LimitIterator);
2167+
REGISTER_SPL_SUB_CLASS_EX(LimitIterator, IteratorIterator, spl_dual_it_new, spl_funcs_LimitIterator);
21642168

2165-
REGISTER_SPL_STD_CLASS_EX(CachingIterator, spl_dual_it_new, spl_funcs_CachingIterator);
2166-
REGISTER_SPL_ITERATOR(CachingIterator);
2169+
REGISTER_SPL_SUB_CLASS_EX(CachingIterator, IteratorIterator, spl_dual_it_new, spl_funcs_CachingIterator);
21672170

21682171
REGISTER_SPL_CLASS_CONST_LONG(CachingIterator, "CALL_TOSTRING", CIT_CALL_TOSTRING);
21692172
REGISTER_SPL_CLASS_CONST_LONG(CachingIterator, "CATCH_GET_CHILD", CIT_CATCH_GET_CHILD);
@@ -2173,25 +2176,11 @@ PHP_MINIT_FUNCTION(spl_iterators)
21732176
REGISTER_SPL_SUB_CLASS_EX(RecursiveCachingIterator, CachingIterator, spl_dual_it_new, spl_funcs_RecursiveCachingIterator);
21742177
REGISTER_SPL_IMPLEMENTS(RecursiveCachingIterator, RecursiveIterator);
21752178

2176-
REGISTER_SPL_STD_CLASS_EX(IteratorIterator, spl_dual_it_new, spl_funcs_IteratorIterator);
2177-
REGISTER_SPL_ITERATOR(IteratorIterator);
2178-
2179-
REGISTER_SPL_STD_CLASS_EX(NoRewindIterator, spl_dual_it_new, spl_funcs_NoRewindIterator);
2180-
REGISTER_SPL_ITERATOR(NoRewindIterator);
2181-
2182-
REGISTER_SPL_INTERFACE(OuterIterator);
2183-
REGISTER_SPL_ITERATOR(OuterIterator);
2179+
REGISTER_SPL_SUB_CLASS_EX(NoRewindIterator, IteratorIterator, spl_dual_it_new, spl_funcs_NoRewindIterator);
21842180

2185-
REGISTER_SPL_STD_CLASS_EX(AppendIterator, spl_dual_it_new, spl_funcs_AppendIterator);
2181+
REGISTER_SPL_SUB_CLASS_EX(AppendIterator, IteratorIterator, spl_dual_it_new, spl_funcs_AppendIterator);
21862182

21872183
REGISTER_SPL_IMPLEMENTS(RecursiveIteratorIterator, OuterIterator);
2188-
REGISTER_SPL_IMPLEMENTS(CachingIterator, OuterIterator);
2189-
REGISTER_SPL_IMPLEMENTS(FilterIterator, OuterIterator);
2190-
REGISTER_SPL_IMPLEMENTS(LimitIterator, OuterIterator);
2191-
REGISTER_SPL_IMPLEMENTS(IteratorIterator, OuterIterator);
2192-
REGISTER_SPL_IMPLEMENTS(NoRewindIterator, OuterIterator);
2193-
REGISTER_SPL_IMPLEMENTS(AppendIterator, OuterIterator);
2194-
21952184
REGISTER_SPL_SUB_CLASS_EX(InfiniteIterator, IteratorIterator, spl_dual_it_new, spl_funcs_InfiniteIterator);
21962185

21972186
REGISTER_SPL_STD_CLASS_EX(EmptyIterator, NULL, spl_funcs_EmptyIterator);

0 commit comments

Comments
 (0)