Annotation of embedaddon/php/ext/spl/examples/recursivecomparedualiterator.inc, revision 1.1

1.1     ! misho       1: <?php
        !             2: 
        !             3: /** @file recursivecomparedualiterator.inc
        !             4:  * @ingroup Examples
        !             5:  * @brief class DualIterator
        !             6:  * @author  Marcus Boerger
        !             7:  * @date    2003 - 2006
        !             8:  *
        !             9:  * SPL - Standard PHP Library
        !            10:  */
        !            11: 
        !            12: /** @ingroup Examples
        !            13:  * @brief   Recursive comparison iterator for a RecursiveDualIterator
        !            14:  * @author  Marcus Boerger
        !            15:  * @version 1.0
        !            16:  */
        !            17: class RecursiveCompareDualIterator extends RecursiveIteratorIterator
        !            18: {
        !            19:        /** Used to keep end of recursion equality. That is en leaving a nesting
        !            20:         * level we need to check whether both child iterators are at their end.
        !            21:         */
        !            22:        protected $equal = false;
        !            23: 
        !            24:        /** Construct from RecursiveDualIterator
        !            25:         *
        !            26:         * @param $it      RecursiveDualIterator
        !            27:         * @param $mode    should be LEAVES_ONLY
        !            28:         * @param $flags   should be 0
        !            29:         */
        !            30:        function __construct(RecursiveDualIterator $it, $mode = self::LEAVES_ONLY, $flags = 0)
        !            31:        {
        !            32:                parent::__construct($it);
        !            33:        }
        !            34: 
        !            35:        /** Rewind iteration andcomparison process. Starting with $equal = true.
        !            36:         */     
        !            37:        function rewind()
        !            38:        {
        !            39:                $this->equal = true;
        !            40:                parent::rewind();
        !            41:        }
        !            42: 
        !            43:        /** Calculate $equal
        !            44:         * @see $equal
        !            45:         */
        !            46:        function endChildren()
        !            47:        {
        !            48:                $this->equal &= !$this->getInnerIterator()->getLHS()->valid()
        !            49:                             && !$this->getInnerIterator()->getRHS()->valid();
        !            50:        }
        !            51: 
        !            52:        /** @return whether both inner iterators are valid and have identical 
        !            53:         * current and key values or both are non valid.
        !            54:         */
        !            55:        function areIdentical()
        !            56:        {
        !            57:                return $this->equal && $this->getInnerIterator()->areIdentical();
        !            58:        }
        !            59: 
        !            60:        /** @return whether both inner iterators are valid and have equal current 
        !            61:         * and key values or both are non valid.
        !            62:         */
        !            63:        function areEqual()
        !            64:        {
        !            65:                return $this->equal && $this->getInnerIterator()->areEqual();
        !            66:        }
        !            67: }
        !            68: 
        !            69: ?>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>