helly Sat Oct 29 11:37:58 2005 EDT Modified files: /php-src/ext/spl spl_array.c spl_array.h spl_iterators.c Log: - Add AppendIterator::getIteratorIndex - Add AppendIterator::getArrayIterator http://cvs.php.net/diff.php/php-src/ext/spl/spl_array.c?r1=1.85&r2=1.86&ty=u Index: php-src/ext/spl/spl_array.c diff -u php-src/ext/spl/spl_array.c:1.85 php-src/ext/spl/spl_array.c:1.86 --- php-src/ext/spl/spl_array.c:1.85 Sun Oct 9 05:55:30 2005 +++ php-src/ext/spl/spl_array.c Sat Oct 29 11:37:56 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_array.c,v 1.85 2005/10/09 09:55:30 helly Exp $ */ +/* $Id: spl_array.c,v 1.86 2005/10/29 15:37:56 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -1151,7 +1151,11 @@ Return current array key */ SPL_METHOD(Array, key) { - zval *object = getThis(); + spl_array_iterator_key(getThis(), return_value TSRMLS_CC); +} + +void spl_array_iterator_key(zval *object, zval *return_value TSRMLS_DC) /* {{{ */ +{ spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); char *string_key; uint string_length; http://cvs.php.net/diff.php/php-src/ext/spl/spl_array.h?r1=1.14&r2=1.15&ty=u Index: php-src/ext/spl/spl_array.h diff -u php-src/ext/spl/spl_array.h:1.14 php-src/ext/spl/spl_array.h:1.15 --- php-src/ext/spl/spl_array.h:1.14 Sun Sep 18 07:34:34 2005 +++ php-src/ext/spl/spl_array.h Sat Oct 29 11:37:57 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_array.h,v 1.14 2005/09/18 11:34:34 helly Exp $ */ +/* $Id: spl_array.h,v 1.15 2005/10/29 15:37:57 helly Exp $ */ #ifndef SPL_ARRAY_H #define SPL_ARRAY_H @@ -32,6 +32,7 @@ PHP_MINIT_FUNCTION(spl_array); extern void spl_array_iterator_append(zval *object, zval *append_value TSRMLS_DC); +extern void spl_array_iterator_key(zval *object, zval *return_value TSRMLS_DC); #endif /* SPL_ARRAY_H */ http://cvs.php.net/diff.php/php-src/ext/spl/spl_iterators.c?r1=1.93&r2=1.94&ty=u Index: php-src/ext/spl/spl_iterators.c diff -u php-src/ext/spl/spl_iterators.c:1.93 php-src/ext/spl/spl_iterators.c:1.94 --- php-src/ext/spl/spl_iterators.c:1.93 Fri Oct 28 04:07:17 2005 +++ php-src/ext/spl/spl_iterators.c Sat Oct 29 11:37:57 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_iterators.c,v 1.93 2005/10/28 08:07:17 dmitry Exp $ */ +/* $Id: spl_iterators.c,v 1.94 2005/10/29 15:37:57 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -2199,7 +2199,6 @@ intern->inner.object = zend_object_store_get_object(*it TSRMLS_CC); intern->inner.iterator = intern->inner.ce->get_iterator(intern->inner.ce, *it TSRMLS_CC); spl_dual_it_rewind(intern TSRMLS_CC); - intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator TSRMLS_CC); return SUCCESS; } else { return FAILURE; @@ -2209,6 +2208,7 @@ void spl_append_it_fetch(spl_dual_it_object *intern TSRMLS_DC) /* {{{*/ { while (spl_dual_it_valid(intern TSRMLS_CC) != SUCCESS) { + intern->u.append.iterator->funcs->move_forward(intern->u.append.iterator TSRMLS_CC); if (spl_append_it_next_iterator(intern TSRMLS_CC) != SUCCESS) { return; } @@ -2292,6 +2292,28 @@ spl_append_it_next(intern TSRMLS_CC); } /* }}} */ +/* {{{ proto AppendIterator::getIteratorIndex() + Get index of iterator */ +SPL_METHOD(AppendIterator, getIteratorIndex) +{ + spl_dual_it_object *intern; + + intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC); + + spl_array_iterator_key(intern->u.append.zarrayit, return_value TSRMLS_CC); +} /* }}} */ + +/* {{{ proto AppendIterator::getArrayIterator() + Get access to inner ArrayIterator */ +SPL_METHOD(AppendIterator, getArrayIterator) +{ + spl_dual_it_object *intern; + + intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC); + + RETURN_ZVAL(intern->u.append.zarrayit, 1, 0); +} /* }}} */ + static ZEND_BEGIN_ARG_INFO(arginfo_append_it_append, 0) ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0) @@ -2306,6 +2328,8 @@ SPL_ME(dual_it, current, NULL, ZEND_ACC_PUBLIC) SPL_ME(AppendIterator, next, NULL, ZEND_ACC_PUBLIC) SPL_ME(dual_it, getInnerIterator, NULL, ZEND_ACC_PUBLIC) + SPL_ME(AppendIterator, getIteratorIndex, NULL, ZEND_ACC_PUBLIC) + SPL_ME(AppendIterator, getArrayIterator, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} };
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php