12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- /*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- * Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Composer\DependencyResolver;
- /**
- * An extension of SplDoublyLinkedList with seek and removal of current element
- *
- * SplDoublyLinkedList only allows deleting a particular offset and has no
- * method to set the internal iterator to a particular offset.
- *
- * @author Nils Adermann <naderman@naderman.de>
- */
- class RuleWatchChain extends \SplDoublyLinkedList
- {
- protected $offset = 0;
- /**
- * Moves the internal iterator to the specified offset
- *
- * @param int $offset The offset to seek to.
- */
- public function seek($offset)
- {
- $this->rewind();
- for ($i = 0; $i < $offset; $i++, $this->next());
- }
- /**
- * Removes the current element from the list
- *
- * As SplDoublyLinkedList only allows deleting a particular offset and
- * incorrectly sets the internal iterator if you delete the current value
- * this method sets the internal iterator back to the following element
- * using the seek method.
- */
- public function remove()
- {
- $offset = $this->key();
- $this->offsetUnset($offset);
- $this->seek($offset);
- }
- }
|