helly Tue Mar 9 12:35:25 2004 EDT
Modified files:
/php-src/ext/spl spl_iterators.c
Log:
Access to inner iterator was missing
http://cvs.php.net/diff.php/php-src/ext/spl/spl_iterators.c?r1=1.25&r2=1.26&ty=u
Index: php-src/ext/spl/spl_iterators.c
diff -u php-src/ext/spl/spl_iterators.c:1.25 php-src/ext/spl/spl_iterators.c:1.26
--- php-src/ext/spl/spl_iterators.c:1.25 Tue Mar 9 11:38:37 2004
+++ php-src/ext/spl/spl_iterators.c Tue Mar 9 12:35:18 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: spl_iterators.c,v 1.25 2004/03/09 16:38:37 helly Exp $ */
+/* $Id: spl_iterators.c,v 1.26 2004/03/09 17:35:18 helly Exp $ */
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -595,6 +595,19 @@
spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, zend_ce_iterator,
DIT_Default);
}
+SPL_METHOD(dual_it, getInnerIterator)
+{
+ spl_dual_it_object *intern;
+
+ intern = (spl_dual_it_object*)zend_object_store_get_object(getThis()
TSRMLS_CC);
+
+ if (intern->inner.zobject) {
+ RETVAL_ZVAL(intern->inner.zobject, 0, 0);
+ } else {
+ RETURN_NULL();
+ }
+}
+
static INLINE void spl_dual_it_free(spl_dual_it_object *intern TSRMLS_DC)
{
if (intern->current.data) {
@@ -840,12 +853,13 @@
ZEND_END_ARG_INFO();
static zend_function_entry spl_funcs_FilterIterator[] = {
- SPL_ME(dual_it, __construct, arginfo_filter_it___construct,
ZEND_ACC_PUBLIC)
- SPL_ME(FilterIterator, rewind, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(dual_it, valid, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(dual_it, key, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(dual_it, current, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(FilterIterator, next, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, __construct, arginfo_filter_it___construct,
ZEND_ACC_PUBLIC)
+ SPL_ME(FilterIterator, rewind, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, valid, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, key, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, current, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(FilterIterator, next, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, getInnerIterator, NULL, ZEND_ACC_PUBLIC)
SPL_ABSTRACT_ME(FilterIterator, accept, NULL)
{NULL, NULL, NULL}
};
@@ -856,10 +870,11 @@
ZEND_END_ARG_INFO();
static zend_function_entry spl_funcs_ParentIterator[] = {
- SPL_ME(ParentIterator, __construct, arginfo_parent_it___construct,
ZEND_ACC_PUBLIC)
- SPL_MA(ParentIterator, accept, ParentIterator, hasChildren, NULL,
ZEND_ACC_PUBLIC)
- SPL_ME(ParentIterator, hasChildren, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(ParentIterator, getChildren, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(ParentIterator, __construct, arginfo_parent_it___construct,
ZEND_ACC_PUBLIC)
+ SPL_MA(ParentIterator, accept, ParentIterator, hasChildren, NULL,
ZEND_ACC_PUBLIC)
+ SPL_ME(ParentIterator, hasChildren, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(ParentIterator, getChildren, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, getInnerIterator, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
@@ -992,14 +1007,15 @@
ZEND_END_ARG_INFO();
static zend_function_entry spl_funcs_LimitIterator[] = {
- SPL_ME(LimitIterator, __construct, arginfo_limit_it___construct,
ZEND_ACC_PUBLIC)
- SPL_ME(LimitIterator, rewind, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(LimitIterator, valid, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(dual_it, key, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(dual_it, current, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(LimitIterator, next, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(LimitIterator, seek, arginfo_limit_it_seek, ZEND_ACC_PUBLIC)
- SPL_ME(LimitIterator, getPosition, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(LimitIterator, __construct, arginfo_limit_it___construct,
ZEND_ACC_PUBLIC)
+ SPL_ME(LimitIterator, rewind, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(LimitIterator, valid, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, key, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, current, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(LimitIterator, next, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(LimitIterator, seek, arginfo_limit_it_seek,
ZEND_ACC_PUBLIC)
+ SPL_ME(LimitIterator, getPosition, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, getInnerIterator, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
@@ -1125,14 +1141,15 @@
ZEND_END_ARG_INFO();
static zend_function_entry spl_funcs_CachingIterator[] = {
- SPL_ME(CachingIterator, __construct, arginfo_caching_it___construct,
ZEND_ACC_PUBLIC)
- SPL_ME(CachingIterator, rewind, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(CachingIterator, valid, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(dual_it, key, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(dual_it, current, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(CachingIterator, next, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(CachingIterator, hasNext, NULL, ZEND_ACC_PUBLIC)
- SPL_ME(CachingIterator, __toString, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(CachingIterator, __construct, arginfo_caching_it___construct,
ZEND_ACC_PUBLIC)
+ SPL_ME(CachingIterator, rewind, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(CachingIterator, valid, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, key, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, current, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(CachingIterator, next, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(CachingIterator, hasNext, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(CachingIterator, __toString, NULL, ZEND_ACC_PUBLIC)
+ SPL_ME(dual_it, getInnerIterator, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php