2003-11-11 18:31:50 +00:00
|
|
|
<?php
|
|
|
|
|
2004-10-29 20:58:58 +00:00
|
|
|
/** @file seekableiterator.inc
|
2004-10-31 19:05:37 +00:00
|
|
|
* @ingroup SPL
|
2004-10-29 20:58:58 +00:00
|
|
|
* @brief class SeekableIterator
|
|
|
|
* @author Marcus Boerger
|
2005-02-08 19:10:06 +00:00
|
|
|
* @date 2003 - 2005
|
2004-10-29 20:58:58 +00:00
|
|
|
*
|
|
|
|
* SPL - Standard PHP Library
|
|
|
|
*/
|
|
|
|
|
|
|
|
/** @brief seekable iterator
|
|
|
|
* @author Marcus Boerger
|
|
|
|
* @version 1.0
|
2005-02-17 00:24:57 +00:00
|
|
|
* @since PHP 5.0
|
2003-12-06 19:03:17 +00:00
|
|
|
*
|
|
|
|
* Turns a normal iterator ino a seekable iterator. When there is a way
|
|
|
|
* to seek on an iterator LimitIterator can use this to efficiently rewind
|
|
|
|
* to offset.
|
|
|
|
*/
|
2003-11-17 00:55:37 +00:00
|
|
|
interface SeekableIterator implements Iterator
|
2003-11-11 18:31:50 +00:00
|
|
|
{
|
2003-12-06 19:03:17 +00:00
|
|
|
/** Seek to an absolute position
|
|
|
|
*
|
|
|
|
* \param $index position to seek to
|
|
|
|
* \return void
|
|
|
|
*
|
2005-03-01 23:44:05 +00:00
|
|
|
* The method should throw an exception if it is not possible to seek to
|
|
|
|
* the given position. Typically this exception should be of type
|
|
|
|
* OutOfBoundsException.
|
|
|
|
\code
|
2003-11-17 00:55:37 +00:00
|
|
|
function seek($index);
|
2005-03-01 23:44:05 +00:00
|
|
|
$this->rewind();
|
2003-11-11 18:31:50 +00:00
|
|
|
$position = 0;
|
2004-03-08 17:33:31 +00:00
|
|
|
while($position < $index && $this->valid()) {
|
2003-11-11 18:31:50 +00:00
|
|
|
$this->next();
|
|
|
|
$position++;
|
|
|
|
}
|
2005-03-01 23:44:05 +00:00
|
|
|
if (!$this->valid()) {
|
|
|
|
throw new OutOfBoundsException('Invalid seek position');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
\endcode
|
|
|
|
*/
|
|
|
|
function seek($index);
|
2003-11-11 18:31:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
?>
|