summaryrefslogtreecommitdiff
path: root/ext/spl/spl_array.c
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2006-02-06 01:42:37 +0000
committerMarcus Boerger <helly@php.net>2006-02-06 01:42:37 +0000
commit0d1594692df663a08891e2d8d493cef38605a864 (patch)
tree57b85b6ca3a66d2a699151c7ac7cfc50862f1620 /ext/spl/spl_array.c
parent1630242347f62da2e0908588d2b86f079d4ed0bb (diff)
downloadphp-git-0d1594692df663a08891e2d8d493cef38605a864.tar.gz
- Simplify
Diffstat (limited to 'ext/spl/spl_array.c')
-rwxr-xr-xext/spl/spl_array.c31
1 files changed, 5 insertions, 26 deletions
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c
index b730954e2e..5f06ac6cf6 100755
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -119,6 +119,8 @@ static void spl_array_object_free_storage(void *object TSRMLS_DC)
}
/* }}} */
+zend_object_iterator *spl_array_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC);
+
/* {{{ spl_array_object_new */
static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, spl_array_object **obj, zval *orig TSRMLS_DC)
{
@@ -156,6 +158,9 @@ static zend_object_value spl_array_object_new_ex(zend_class_entry *class_type, s
while (parent) {
if (parent == U_CLASS_ENTRY(spl_ce_ArrayIterator) || parent == U_CLASS_ENTRY(spl_ce_RecursiveArrayIterator)) {
retval.handlers = &spl_handler_ArrayIterator;
+#if MBO_0
+ class_type->get_iterator = spl_array_get_iterator;
+#endif
break;
} else if (parent == U_CLASS_ENTRY(spl_ce_ArrayObject)) {
retval.handlers = &spl_handler_ArrayObject;
@@ -801,31 +806,6 @@ zend_object_iterator_funcs spl_array_it_funcs = {
spl_array_it_rewind
};
-zend_object_iterator *spl_array_obj_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) /* {{{ */
-{
- zval *iterator = zend_user_it_new_iterator(ce, object TSRMLS_CC);
- zend_object_iterator *new_iterator;
-
- zend_class_entry *ce_it = iterator && Z_TYPE_P(iterator) == IS_OBJECT ? Z_OBJCE_P(iterator) : NULL;
-
- if (!ce || !ce_it || !ce_it->get_iterator || (ce_it->get_iterator == zend_user_it_get_new_iterator && iterator == object)) {
- if (!EG(exception))
- {
- zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Objects returned by %v::getIterator() must be traversable or implement interface Iterator", ce->name);
- }
- if (iterator)
- {
- zval_ptr_dtor(&iterator);
- }
- return NULL;
- }
-
- new_iterator = ce_it->get_iterator(ce_it, iterator, by_ref TSRMLS_CC);
- zval_ptr_dtor(&iterator);
- return new_iterator;
-}
-/* }}} */
-
zend_object_iterator *spl_array_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) /* {{{ */
{
spl_array_it *iterator;
@@ -1467,7 +1447,6 @@ PHP_MINIT_FUNCTION(spl_array)
REGISTER_SPL_IMPLEMENTS(ArrayObject, Aggregate);
REGISTER_SPL_IMPLEMENTS(ArrayObject, ArrayAccess);
memcpy(&spl_handler_ArrayObject, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
- spl_ce_ArrayObject->get_iterator = spl_array_obj_get_iterator;
spl_handler_ArrayObject.clone_obj = spl_array_object_clone;
spl_handler_ArrayObject.read_dimension = spl_array_read_dimension;