helly           Sun Sep 18 12:51:24 2005 EDT

  Added files:                 
    /php-src/ext/spl/internal   recursivecachingiterator.inc 

  Removed files:               
    /php-src/ext/spl/internal   cachingrecursiveiterator.inc 

  Modified files:              
    /php-src/ext/spl    php_spl.c spl.php spl_iterators.c spl_iterators.h 
    /php-src/ext/spl/examples   directorygraphiterator.inc 
                                directorytreeiterator.inc 
    /php-src/ext/spl/tests      iterator_026.phpt 
  Log:
  - Rename 'CachingRecursiveIterator' to 'RecursiveCachingIterator' so that
    all of those follow the naming scheme 'Recursive<*>Iterator'
  
  
http://cvs.php.net/diff.php/php-src/ext/spl/php_spl.c?r1=1.64&r2=1.65&ty=u
Index: php-src/ext/spl/php_spl.c
diff -u php-src/ext/spl/php_spl.c:1.64 php-src/ext/spl/php_spl.c:1.65
--- php-src/ext/spl/php_spl.c:1.64      Sun Sep 18 07:34:33 2005
+++ php-src/ext/spl/php_spl.c   Sun Sep 18 12:51:20 2005
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_spl.c,v 1.64 2005/09/18 11:34:33 helly Exp $ */
+/* $Id: php_spl.c,v 1.65 2005/09/18 16:51:20 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
        #include "config.h"
@@ -154,7 +154,6 @@
        SPL_ADD_CLASS(BadFunctionCallException, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(BadMethodCallException, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(CachingIterator, z_list, sub, allow, ce_flags); \
-       SPL_ADD_CLASS(CachingRecursiveIterator, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(Countable, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(DirectoryIterator, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(DomainException, z_list, sub, allow, ce_flags); \
@@ -173,9 +172,10 @@
        SPL_ADD_CLASS(OverflowException, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(ParentIterator, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(RangeException, z_list, sub, allow, ce_flags); \
+       SPL_ADD_CLASS(RecursiveArrayIterator, z_list, sub, allow, ce_flags); \
+       SPL_ADD_CLASS(RecursiveCachingIterator, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(RecursiveDirectoryIterator, z_list, sub, allow, 
ce_flags); \
        SPL_ADD_CLASS(RecursiveFilterIterator, z_list, sub, allow, ce_flags); \
-       SPL_ADD_CLASS(RecursiveArrayIterator, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(RecursiveIterator, z_list, sub, allow, ce_flags); \
        SPL_ADD_CLASS(RecursiveIteratorIterator, z_list, sub, allow, ce_flags); 
\
        SPL_ADD_CLASS(RuntimeException, z_list, sub, allow, ce_flags); \
http://cvs.php.net/diff.php/php-src/ext/spl/spl.php?r1=1.53&r2=1.54&ty=u
Index: php-src/ext/spl/spl.php
diff -u php-src/ext/spl/spl.php:1.53 php-src/ext/spl/spl.php:1.54
--- php-src/ext/spl/spl.php:1.53        Sun Sep 18 07:34:33 2005
+++ php-src/ext/spl/spl.php     Sun Sep 18 12:51:20 2005
@@ -40,7 +40,7 @@
  * - interface SeekableIterator implements Iterator
  * - class LimitIterator implements OuterIterator
  * - class CachingIterator implements OuterIterator
- * - class CachingRecursiveIterator extends CachingIterator implements 
RecursiveIterator
+ * - class RecursiveCachingIterator extends CachingIterator implements 
RecursiveIterator
  * - class IteratorIterator implements OuterIterator
  * - class NoRewindIterator implements OuterIterator
  * - class EmptyIterator implements Iterator
http://cvs.php.net/diff.php/php-src/ext/spl/spl_iterators.c?r1=1.84&r2=1.85&ty=u
Index: php-src/ext/spl/spl_iterators.c
diff -u php-src/ext/spl/spl_iterators.c:1.84 
php-src/ext/spl/spl_iterators.c:1.85
--- php-src/ext/spl/spl_iterators.c:1.84        Sun Sep 18 07:34:34 2005
+++ php-src/ext/spl/spl_iterators.c     Sun Sep 18 12:51:20 2005
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_iterators.c,v 1.84 2005/09/18 11:34:34 helly Exp $ */
+/* $Id: spl_iterators.c,v 1.85 2005/09/18 16:51:20 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -46,7 +46,7 @@
 PHPAPI zend_class_entry *spl_ce_SeekableIterator;
 PHPAPI zend_class_entry *spl_ce_LimitIterator;
 PHPAPI zend_class_entry *spl_ce_CachingIterator;
-PHPAPI zend_class_entry *spl_ce_CachingRecursiveIterator;
+PHPAPI zend_class_entry *spl_ce_RecursiveCachingIterator;
 PHPAPI zend_class_entry *spl_ce_OuterIterator;
 PHPAPI zend_class_entry *spl_ce_IteratorIterator;
 PHPAPI zend_class_entry *spl_ce_NoRewindIterator;
@@ -794,7 +794,7 @@
                        break;
                }
                case DIT_CachingIterator:
-               case DIT_CachingRecursiveIterator: {
+               case DIT_RecursiveCachingIterator: {
                        long flags = CIT_CALL_TOSTRING;
                        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
"O|l", &zobject, ce_inner, &flags) == FAILURE) {
                                php_set_error_handling(EH_NORMAL, NULL 
TSRMLS_CC);
@@ -906,7 +906,7 @@
                efree(intern->current.str_key);
                intern->current.str_key = NULL;
        }
-       if (intern->dit_type == DIT_CachingIterator || intern->dit_type == 
DIT_CachingRecursiveIterator) {
+       if (intern->dit_type == DIT_CachingIterator || intern->dit_type == 
DIT_RecursiveCachingIterator) {
                if (intern->u.caching.zstr) {
                        zval_ptr_dtor(&intern->u.caching.zstr);
                        intern->u.caching.zstr = NULL;
@@ -1193,7 +1193,7 @@
                zval_ptr_dtor(&object->u.append.zarrayit);
        }
 
-       if (object->dit_type == DIT_CachingIterator || object->dit_type == 
DIT_CachingRecursiveIterator) {
+       if (object->dit_type == DIT_CachingIterator || object->dit_type == 
DIT_RecursiveCachingIterator) {
                if (object->u.caching.zcache) {
                        zval_ptr_dtor(&object->u.caching.zcache);
                        object->u.caching.zcache = NULL;
@@ -1449,7 +1449,7 @@
                        }
                }
                /* Recursion ? */
-               if (intern->dit_type == DIT_CachingRecursiveIterator) {
+               if (intern->dit_type == DIT_RecursiveCachingIterator) {
                        zval *retval, *zchildren, zflags;
                        zend_call_method_with_0_params(&intern->inner.zobject, 
intern->inner.ce, NULL, "haschildren", &retval);
                        if (zend_is_true(retval)) {
@@ -1462,7 +1462,7 @@
                                } else {
                                        INIT_PZVAL(&zflags);
                                        ZVAL_LONG(&zflags, 
intern->u.caching.flags & CIT_PUBLIC);
-                                       
spl_instantiate_arg_ex2(U_CLASS_ENTRY(spl_ce_CachingRecursiveIterator), 
&intern->u.caching.zchildren, 1, zchildren, &zflags TSRMLS_CC);
+                                       
spl_instantiate_arg_ex2(U_CLASS_ENTRY(spl_ce_RecursiveCachingIterator), 
&intern->u.caching.zchildren, 1, zchildren, &zflags TSRMLS_CC);
                                        zval_ptr_dtor(&zchildren);
                                }
                        }
@@ -1774,16 +1774,16 @@
        {NULL, NULL, NULL}
 };
 
-/* {{{ proto CachingRecursiveIterator::__construct(RecursiveIterator it [, 
flags = CIT_CALL_TOSTRING])
+/* {{{ proto RecursiveCachingIterator::__construct(RecursiveIterator it [, 
flags = CIT_CALL_TOSTRING])
    Create an iterator from a RecursiveIterator */
-SPL_METHOD(CachingRecursiveIterator, __construct)
+SPL_METHOD(RecursiveCachingIterator, __construct)
 {
-       spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
U_CLASS_ENTRY(spl_ce_RecursiveIterator), DIT_CachingRecursiveIterator);
+       spl_dual_it_construct(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
U_CLASS_ENTRY(spl_ce_RecursiveIterator), DIT_RecursiveCachingIterator);
 } /* }}} */
 
-/* {{{ proto bolean CachingRecursiveIterator::hasChildren()
+/* {{{ proto bolean RecursiveCachingIterator::hasChildren()
    Check whether the current element of the inner iterator has children */
-SPL_METHOD(CachingRecursiveIterator, hasChildren)
+SPL_METHOD(RecursiveCachingIterator, hasChildren)
 {
        spl_dual_it_object   *intern;
 
@@ -1792,9 +1792,9 @@
        RETURN_BOOL(intern->u.caching.zchildren);
 } /* }}} */
 
-/* {{{ proto CachingRecursiveIterator CachingRecursiveIterator::getChildren()
-  Return the inner iterator's children as a CachingRecursiveIterator */
-SPL_METHOD(CachingRecursiveIterator, getChildren)
+/* {{{ proto RecursiveCachingIterator RecursiveCachingIterator::getChildren()
+  Return the inner iterator's children as a RecursiveCachingIterator */
+SPL_METHOD(RecursiveCachingIterator, getChildren)
 {
        spl_dual_it_object   *intern;
 
@@ -1813,10 +1813,10 @@
        ZEND_ARG_INFO(0, flags)
 ZEND_END_ARG_INFO();
 
-static zend_function_entry spl_funcs_CachingRecursiveIterator[] = {
-       SPL_ME(CachingRecursiveIterator, __construct,   
arginfo_caching_rec_it___construct, ZEND_ACC_PUBLIC)
-       SPL_ME(CachingRecursiveIterator, hasChildren,   NULL, ZEND_ACC_PUBLIC)
-       SPL_ME(CachingRecursiveIterator, getChildren,   NULL, ZEND_ACC_PUBLIC)
+static zend_function_entry spl_funcs_RecursiveCachingIterator[] = {
+       SPL_ME(RecursiveCachingIterator, __construct,   
arginfo_caching_rec_it___construct, ZEND_ACC_PUBLIC)
+       SPL_ME(RecursiveCachingIterator, hasChildren,   NULL, ZEND_ACC_PUBLIC)
+       SPL_ME(RecursiveCachingIterator, getChildren,   NULL, ZEND_ACC_PUBLIC)
        {NULL, NULL, NULL}
 };
 
@@ -2259,8 +2259,8 @@
        REGISTER_SPL_CLASS_CONST_LONG(CachingIterator, "CATCH_GET_CHILD",  
CIT_CATCH_GET_CHILD); 
        REGISTER_SPL_CLASS_CONST_LONG(CachingIterator, "FULL_CACHE",       
CIT_FULL_CACHE); 
 
-       REGISTER_SPL_SUB_CLASS_EX(CachingRecursiveIterator, CachingIterator, 
spl_dual_it_new, spl_funcs_CachingRecursiveIterator);
-       REGISTER_SPL_IMPLEMENTS(CachingRecursiveIterator, RecursiveIterator);
+       REGISTER_SPL_SUB_CLASS_EX(RecursiveCachingIterator, CachingIterator, 
spl_dual_it_new, spl_funcs_RecursiveCachingIterator);
+       REGISTER_SPL_IMPLEMENTS(RecursiveCachingIterator, RecursiveIterator);
        
        REGISTER_SPL_STD_CLASS_EX(IteratorIterator, spl_dual_it_new, 
spl_funcs_IteratorIterator);
        REGISTER_SPL_ITERATOR(IteratorIterator);
http://cvs.php.net/diff.php/php-src/ext/spl/spl_iterators.h?r1=1.20&r2=1.21&ty=u
Index: php-src/ext/spl/spl_iterators.h
diff -u php-src/ext/spl/spl_iterators.h:1.20 
php-src/ext/spl/spl_iterators.h:1.21
--- php-src/ext/spl/spl_iterators.h:1.20        Sun Sep 18 07:34:34 2005
+++ php-src/ext/spl/spl_iterators.h     Sun Sep 18 12:51:20 2005
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_iterators.h,v 1.20 2005/09/18 11:34:34 helly Exp $ */
+/* $Id: spl_iterators.h,v 1.21 2005/09/18 16:51:20 helly Exp $ */
 
 #ifndef SPL_ITERATORS_H
 #define SPL_ITERATORS_H
@@ -38,7 +38,7 @@
 extern PHPAPI zend_class_entry *spl_ce_SeekableIterator;
 extern PHPAPI zend_class_entry *spl_ce_LimitIterator;
 extern PHPAPI zend_class_entry *spl_ce_CachingIterator;
-extern PHPAPI zend_class_entry *spl_ce_CachingRecursiveIterator;
+extern PHPAPI zend_class_entry *spl_ce_RecursiveCachingIterator;
 extern PHPAPI zend_class_entry *spl_ce_OuterIterator;
 extern PHPAPI zend_class_entry *spl_ce_IteratorIterator;
 extern PHPAPI zend_class_entry *spl_ce_NoRewindIterator;
@@ -55,7 +55,7 @@
        DIT_Default = 0,
        DIT_LimitIterator,
        DIT_CachingIterator,
-       DIT_CachingRecursiveIterator,
+       DIT_RecursiveCachingIterator,
        DIT_IteratorIterator,
        DIT_NoRewindIterator,
        DIT_InfiniteIterator,
http://cvs.php.net/diff.php/php-src/ext/spl/examples/directorygraphiterator.inc?r1=1.8&r2=1.9&ty=u
Index: php-src/ext/spl/examples/directorygraphiterator.inc
diff -u php-src/ext/spl/examples/directorygraphiterator.inc:1.8 
php-src/ext/spl/examples/directorygraphiterator.inc:1.9
--- php-src/ext/spl/examples/directorygraphiterator.inc:1.8     Wed Sep 14 
23:31:37 2005
+++ php-src/ext/spl/examples/directorygraphiterator.inc Sun Sep 18 12:51:24 2005
@@ -18,7 +18,7 @@
 {
        function __construct($path)
        {
-               RecursiveIteratorIterator::__construct(new 
CachingRecursiveIterator(new ParentIterator(new 
RecursiveDirectoryIterator($path)), 
CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD), 1);
+               RecursiveIteratorIterator::__construct(new 
RecursiveCachingIterator(new ParentIterator(new 
RecursiveDirectoryIterator($path)), 
CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD), 1);
        }
 }
 
http://cvs.php.net/diff.php/php-src/ext/spl/examples/directorytreeiterator.inc?r1=1.14&r2=1.15&ty=u
Index: php-src/ext/spl/examples/directorytreeiterator.inc
diff -u php-src/ext/spl/examples/directorytreeiterator.inc:1.14 
php-src/ext/spl/examples/directorytreeiterator.inc:1.15
--- php-src/ext/spl/examples/directorytreeiterator.inc:1.14     Wed Sep 14 
23:31:37 2005
+++ php-src/ext/spl/examples/directorytreeiterator.inc  Sun Sep 18 12:51:24 2005
@@ -21,7 +21,7 @@
         */
        function __construct($path)
        {
-               parent::__construct(new CachingRecursiveIterator(new 
RecursiveDirectoryIterator($path), 
CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD), 1);
+               parent::__construct(new RecursiveCachingIterator(new 
RecursiveDirectoryIterator($path), 
CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD), 1);
        }
 
        /** @return the current element prefixed with ASCII graphics
http://cvs.php.net/diff.php/php-src/ext/spl/tests/iterator_026.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/tests/iterator_026.phpt
diff -u php-src/ext/spl/tests/iterator_026.phpt:1.1 
php-src/ext/spl/tests/iterator_026.phpt:1.2
--- php-src/ext/spl/tests/iterator_026.phpt:1.1 Sun Sep 18 07:34:36 2005
+++ php-src/ext/spl/tests/iterator_026.phpt     Sun Sep 18 12:51:24 2005
@@ -6,7 +6,7 @@
 $ar = array(1, 2, array(31, 32, array(331)), 4);
 
 $it = new RecursiveArrayIterator($ar);
-$it = new CachingRecursiveIterator($it);
+$it = new RecursiveCachingIterator($it);
 $it = new RecursiveIteratorIterator($it);
 
 foreach($it as $k=>$v)

http://cvs.php.net/co.php/php-src/ext/spl/internal/recursivecachingiterator.inc?r=1.1&p=1
Index: php-src/ext/spl/internal/recursivecachingiterator.inc
+++ php-src/ext/spl/internal/recursivecachingiterator.inc
<?php

/** @file recursivecachingiterator.inc
 * @ingroup SPL
 * @brief class RecursiveCachingIterator
 * @author  Marcus Boerger
 * @date    2003 - 2005
 *
 * SPL - Standard PHP Library
 */

/**
 * @brief   Cached recursive iteration over another Iterator
 * @author  Marcus Boerger
 * @version 1.2
 * @since PHP 5.1
 *
 * @see CachingIterator
 */
class RecursiveCachingIterator extends CachingIterator implements 
RecursiveIterator
{
        private $hasChildren;
        private $getChildren;

        /** Construct from another iterator
         *
         * @param it    Iterator to cache
         * @param flags Bitmask: 
         *              - CALL_TOSTRING   (whether to call __toString() for 
every element)
         *              - CATCH_GET_CHILD (whether to catch exceptions when 
trying to get childs)
         */
        function __construct(RecursiveIterator $it, $flags = 
self::CALL_TOSTRING)
        {
                parent::__construct($it, $flags);
        }

        /** Rewind Iterator
         */     
        function rewind();
        {
           $this->hasChildren = false;
           $this->getChildren = NULL;
           parent::rewind();
        }

        /** Forward to next element if necessary then an Iterator for the 
Children
         * will be created.
         */
        function next()
        {
                if ($this->hasChildren = $this->it->hasChildren())
                {
                        try
                        {
                                $child = $this->it->getChildren();
                                if (!$this->ref)
                                {
                                        $this->ref = new ReflectionClass($this);
                                }
                                $this->getChildren = $ref->newInstance($child, 
$this->flags);
                        }
                        catch(Exception $e)
                        {
                                if (!$this->flags & self::CATCH_GET_CHILD)
                                {
                                        throw $e;
                                }
                                $this->hasChildren = false;
                                $this->getChildren = NULL;
                        }
                } else
                {
                        $this->getChildren = NULL;
                }
                parent::next();
        }
        
        private $ref;

        /** @return whether the current element has children
         * @note The check whether the Iterator for the children can be created 
was
         *       already executed. Hence when flag CATCH_GET_CHILD was given in
         *       constructor this fucntion returns false so that getChildren 
does 
         *       not try to access those children.
         */
        function hasChildren()
        {
                return $this->hasChildren;
        }

        /** @return An Iterator for the children
         */
        function getChildren()
        {
                return $this->getChildren;
        }
}

?>
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to