Annotation of embedaddon/php/ext/spl/examples/recursivecomparedualiterator.inc, revision 1.1.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>