summaryrefslogtreecommitdiff
path: root/Zend/zend_iterators.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-02-12 18:08:11 +0400
committerDmitry Stogov <dmitry@zend.com>2014-02-12 18:08:11 +0400
commitbe82a077769641331ee5914c60df44ba3f862aff (patch)
tree673803f676ae69c0a3aabc3046feafdf0361b670 /Zend/zend_iterators.c
parent4e66abad54b25ca367fcb6da78524e3c4024e2a0 (diff)
downloadphp-git-be82a077769641331ee5914c60df44ba3f862aff.tar.gz
Use better data structures (incomplete)
Diffstat (limited to 'Zend/zend_iterators.c')
-rw-r--r--Zend/zend_iterators.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c
index b433cbe1ab..bb41ab9000 100644
--- a/Zend/zend_iterators.c
+++ b/Zend/zend_iterators.c
@@ -24,8 +24,12 @@
static zend_class_entry zend_iterator_class_entry;
+static void iter_wrapper_dtor(zend_object *object TSRMLS_DC);
+
static zend_object_handlers iterator_object_handlers = {
- ZEND_OBJECTS_STORE_HANDLERS,
+ iter_wrapper_dtor,
+ NULL,
+ NULL,
NULL, /* prop read */
NULL, /* prop write */
NULL, /* read dim */
@@ -61,20 +65,9 @@ static void iter_wrapper_dtor(zend_object *object TSRMLS_DC)
iter->funcs->dtor(iter TSRMLS_CC);
}
-ZEND_API zval *zend_iterator_wrap(zend_object_iterator *iter TSRMLS_DC)
+ZEND_API void zend_iterator_wrap(zend_object_iterator *iter, zval *wrapped TSRMLS_DC)
{
-//???
- return NULL;
-#if 0
- zval *wrapped;
-
- MAKE_STD_ZVAL(wrapped);
- Z_TYPE_P(wrapped) = IS_OBJECT;
- Z_OBJ_HANDLE_P(wrapped) = zend_objects_store_put(iter, iter_wrapper_dtor, NULL, NULL TSRMLS_CC);
- Z_OBJ_HT_P(wrapped) = &iterator_object_handlers;
-
- return wrapped;
-#endif
+ ZVAL_OBJ(wrapped, &iter->std);
}
ZEND_API enum zend_object_iterator_kind zend_iterator_unwrap(