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