]> granicus.if.org Git - php/commitdiff
- Update docu
authorMarcus Boerger <helly@php.net>
Sat, 8 Oct 2005 19:09:58 +0000 (19:09 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 8 Oct 2005 19:09:58 +0000 (19:09 +0000)
- Synch class consts with HEAD
- Synch example RecursiveTreeIterator (as far as possible)

ext/spl/examples/class_tree.php
ext/spl/examples/recursivetreeiterator.inc
ext/spl/internal/cachingiterator.inc
ext/spl/internal/recursiveiteratoriterator.inc
ext/spl/spl_iterators.h

index 07741a7dd873b4d72774787529ea376bc10c321e..a3083280be78be43ca254e52e0658244a2bcfc98 100755 (executable)
@@ -5,6 +5,7 @@
  * @ingroup Examples
  * @author  Marcus Boerger
  * @date    2003 - 2005
+ * @version 1.0
  *
  * Usage: php class_tree.php \<class\>
  *
index 62198c8d3646b649ae1ddf028e15358dbfe088a9..ea3cb6ea7f0e60b29e3cc53a9cd3a33edee16480 100755 (executable)
  */
 class RecursiveTreeIterator extends RecursiveIteratorIterator
 {
+       const BYPASS_CURRENT = 0x00000004;
+
        private $callToString;
+       private $rit_flags;
 
        /**
         * @param it         iterator to use as inner iterator
-        * @param flags      flags passed to RecursiveIteratoIterator (parent)
+        * @param rit_flags  flags passed to RecursiveIteratoIterator (parent)
         * @param cit_flags  flags passed to RecursiveCachingIterator (for hasNext)
+        * @param mode       mode  passed to RecursiveIteratoIterator (parent)
         */
-       function __construct(RecursiveIterator $it, $flags = self::SELF_FIRST, $cit_flags = CachingIterator::CATCH_GET_CHILD)
+       function __construct(RecursiveIterator $it, $rit_flags = 0, $cit_flags = CachingIterator::CATCH_GET_CHILD, $mode = self::SELF_FIRST)
        {
-               parent::__construct(new RecursiveCachingIterator($it, $cit_flags), $flags);
+               parent::__construct(new RecursiveCachingIterator($it, $cit_flags), $mode, $rit_flags);
+               $this->rit_flags = $rit_flags;
                $this->callToString = (bool)($cit_flags & CachingIterator::CALL_TOSTRING);
        }
 
@@ -74,7 +79,21 @@ class RecursiveTreeIterator extends RecursiveIteratorIterator
         */
        function current()
        {               
+               if ($this->rit_flags & self::BYPASS_CURRENT)
+               {
+                       return parent::current();
+               }
+               else
+               {
                return $this->getPrefix() . $this->getEntry() .  $this->getPostfix();
+               }
+       }
+
+       /** @return the current key prefixed and postfixed
+        */
+       function key()
+       {
+               return $this->getPrefix() . parent::key() .  $this->getPostfix();
        }
 
        /** Aggregates the inner iterator
index 6391322c3decaa9d3b61ffd2226b2208850508ca..1129793873f96f0e60b696099a7ff72178851799 100755 (executable)
  */
 class CachingIterator implements OuterIterator
 {
-       const CALL_TOSTRING        = 1;
-       const CATCH_GET_CHILD      = 2;
-       const TOSTRING_USE_KEY     = 4;
-       const TOSTRING_USE_CURRENT = 8;
+       const CALL_TOSTRING        = 0x00000001;
+       const CATCH_GET_CHILD      = 0x00000002;
+       const TOSTRING_USE_KEY     = 0x00000010;
+       const TOSTRING_USE_CURRENT = 0x00000020;
 
        private $it;
        private $current;
index 61a9d60a2715c782c3af17942b69c6637c151ada..716ab475ffad335de5abae7f8120a41fd7756af2 100755 (executable)
@@ -30,7 +30,7 @@ class RecursiveIteratorIterator implements OuterIterator
 
        /** Flag: Catches exceptions during getChildren() calls and simply jumps
         * to the next element. */
-       const CATCH_GET_CHILD   = 2;
+       const CATCH_GET_CHILD   = 0x00000002;
 
        private $ait = array();
        private $count = 0;
index 1f4a61025e272223d00e32bb65dcd0b11a0b43fc..92f5d97ae57363442d2c90ead8f1400b0f044f34 100755 (executable)
@@ -66,8 +66,8 @@ enum {
        /* public */
        CIT_CALL_TOSTRING        = 0x00000001,
        CIT_CATCH_GET_CHILD      = 0x00000002,
-       CIT_TOSTRING_USE_KEY     = 0x00000004,
-       CIT_TOSTRING_USE_CURRENT = 0x00000008,
+       CIT_TOSTRING_USE_KEY     = 0x00000010,
+       CIT_TOSTRING_USE_CURRENT = 0x00000020,
        CIT_PUBLIC               = 0x0000FFFF,
        /* private */
        CIT_VALID                = 0x00010000,