Inheritance diagram for DualIterator:


Public Member Functions | |
| __construct (Iterator $lhs, Iterator $rhs, $flags=0x33) | |
| areEqual () | |
| areIdentical () | |
| current () | |
| getFlags () | |
| getLHS () | |
| getRHS () | |
| key () | |
| next () | |
| rewind () | |
| setFlags ($flags) | |
| valid () | |
Static Public Member Functions | |
| static | compareIterators (Iterator $lhs, Iterator $rhs, $identical=false) |
Public Attributes | |
| const | CURRENT_0 = 0x00 |
| const | CURRENT_ARRAY = 0x03 |
| const | CURRENT_LHS = 0x01 |
| const | CURRENT_RHS = 0x02 |
| const | DEFAULT_FLAGS = 0x33 |
| const | KEY_0 = 0x00 |
| const | KEY_ARRAY = 0x30 |
| const | KEY_LHS = 0x10 |
| const | KEY_RHS = 0x20 |
Private Attributes | |
| $flags | |
| $lhs | |
| $rhs | |
Definition at line 17 of file dualiterator.inc.
construct iterator from two iterators
Definition at line 41 of file dualiterator.inc.
References $flags, $lhs, and $rhs.
| DualIterator::areEqual | ( | ) |
Reimplemented in RecursiveDualIterator.
Definition at line 150 of file dualiterator.inc.
References valid().
Referenced by compareIterators().
00151 { 00152 return $this->valid() 00153 ? $this->lhs->current() == $this->rhs->current() 00154 && $this->lhs->key() == $this->rhs->key() 00155 : $this->lhs->valid() == $this->rhs->valid(); 00156 }
Here is the call graph for this function:

| DualIterator::areIdentical | ( | ) |
Reimplemented in RecursiveDualIterator.
Definition at line 139 of file dualiterator.inc.
References valid().
Referenced by compareIterators().
00140 { 00141 return $this->valid() 00142 ? $this->lhs->current() === $this->rhs->current() 00143 && $this->lhs->key() === $this->rhs->key() 00144 : $this->lhs->valid() == $this->rhs->valid(); 00145 }
Here is the call graph for this function:

| static DualIterator::compareIterators | ( | Iterator $ | lhs, | |
| Iterator $ | rhs, | |||
| $ | identical = false | |||
| ) | [static] |
Compare two iterators.
| lhs | Left Hand Side Iterator | |
| rhs | Right Hand Side Iterator | |
| identical | whether to use areEqual() or areIdentical() |
Definition at line 168 of file dualiterator.inc.
References $it, $lhs, $rhs, areEqual(), and areIdentical().
00170 { 00171 if ($lhs instanceof RecursiveIterator) 00172 { 00173 if ($rhs instanceof RecursiveIterator) 00174 { 00175 $it = new RecursiveDualIterator($lhs, $rhs, 00176 self::CURRENT_0 | self::KEY_0); 00177 $it = new RecursiveCompareDualIterator($it); 00178 } 00179 else 00180 { 00181 return false; 00182 } 00183 } 00184 else 00185 { 00186 $it = new DualIterator($lhs, $rhs, self::CURRENT_0 | self::KEY_0); 00187 } 00188 00189 if ($identical) 00190 { 00191 foreach($it as $n) 00192 { 00193 if (!$it->areIdentical()) 00194 { 00195 return false; 00196 } 00197 } 00198 } 00199 else 00200 { 00201 foreach($it as $n) 00202 { 00203 if (!$it->areEqual()) 00204 { 00205 return false; 00206 } 00207 } 00208 } 00209 return $identical ? $it->areIdentical() : $it->areEqual(); 00210 }
Here is the call graph for this function:

| DualIterator::current | ( | ) |
Implements Iterator.
Definition at line 94 of file dualiterator.inc.
00095 { 00096 switch($this->flags & 0x0F) 00097 { 00098 default: 00099 case self::CURRENT_ARRAY: 00100 return array($this->lhs->current(), $this->rhs->current()); 00101 case self::CURRENT_LHS: 00102 return $this->lhs->current(); 00103 case self::CURRENT_RHS: 00104 return $this->rhs->current(); 00105 case self::CURRENT_0: 00106 return NULL; 00107 } 00108 }
| DualIterator::getFlags | ( | ) |
Definition at line 72 of file dualiterator.inc.
Referenced by RecursiveDualIterator::getChildren().
| DualIterator::getLHS | ( | ) |
Definition at line 51 of file dualiterator.inc.
Referenced by RecursiveDualIterator::areEqual(), RecursiveDualIterator::areIdentical(), RecursiveDualIterator::getChildren(), and RecursiveDualIterator::hasChildren().
| DualIterator::getRHS | ( | ) |
Definition at line 58 of file dualiterator.inc.
Referenced by RecursiveDualIterator::areEqual(), RecursiveDualIterator::areIdentical(), RecursiveDualIterator::getChildren(), and RecursiveDualIterator::hasChildren().
| DualIterator::key | ( | ) |
Implements Iterator.
Definition at line 112 of file dualiterator.inc.
00113 { 00114 switch($this->flags & 0xF0) 00115 { 00116 default: 00117 case self::CURRENT_ARRAY: 00118 return array($this->lhs->key(), $this->rhs->key()); 00119 case self::CURRENT_LHS: 00120 return $this->lhs->key(); 00121 case self::CURRENT_RHS: 00122 return $this->rhs->key(); 00123 case self::CURRENT_0: 00124 return NULL; 00125 } 00126 }
| DualIterator::next | ( | ) |
move both inner iterators forward
Implements Iterator.
Definition at line 130 of file dualiterator.inc.
| DualIterator::rewind | ( | ) |
| DualIterator::setFlags | ( | $ | flags | ) |
| flags | new flags |
Definition at line 65 of file dualiterator.inc.
References $flags.
00066 { 00067 $this->flags = $flags; 00068 }
| DualIterator::valid | ( | ) |
Implements Iterator.
Definition at line 87 of file dualiterator.inc.
Referenced by areEqual(), and areIdentical().
DualIterator::$flags [private] |
Definition at line 33 of file dualiterator.inc.
Referenced by RecursiveDualIterator::__construct(), __construct(), and setFlags().
DualIterator::$lhs [private] |
Definition at line 31 of file dualiterator.inc.
Referenced by RecursiveDualIterator::__construct(), __construct(), and compareIterators().
DualIterator::$rhs [private] |
Definition at line 32 of file dualiterator.inc.
Referenced by RecursiveDualIterator::__construct(), __construct(), and compareIterators().
| const DualIterator::CURRENT_0 = 0x00 |
Definition at line 22 of file dualiterator.inc.
| const DualIterator::CURRENT_ARRAY = 0x03 |
Definition at line 21 of file dualiterator.inc.
| const DualIterator::CURRENT_LHS = 0x01 |
Definition at line 19 of file dualiterator.inc.
| const DualIterator::CURRENT_RHS = 0x02 |
Definition at line 20 of file dualiterator.inc.
| const DualIterator::DEFAULT_FLAGS = 0x33 |
Definition at line 29 of file dualiterator.inc.
| const DualIterator::KEY_0 = 0x00 |
Definition at line 27 of file dualiterator.inc.
| const DualIterator::KEY_ARRAY = 0x30 |
Definition at line 26 of file dualiterator.inc.
| const DualIterator::KEY_LHS = 0x10 |
Definition at line 24 of file dualiterator.inc.
| const DualIterator::KEY_RHS = 0x20 |
Definition at line 25 of file dualiterator.inc.
1.5.2