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>