From: Marcus Boerger Date: Tue, 11 Nov 2003 18:31:50 +0000 (+0000) Subject: Add shortcut interface SeekableIterator to LimitIterator X-Git-Tag: php-5.0.0b3RC1~719 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=91ab36096eee33551e5ff13ca837b42b41000ab8;p=php Add shortcut interface SeekableIterator to LimitIterator --- diff --git a/ext/spl/examples/limititerator.inc b/ext/spl/examples/limititerator.inc index c1a19fedd9..cdc71e98ce 100755 --- a/ext/spl/examples/limititerator.inc +++ b/ext/spl/examples/limititerator.inc @@ -21,8 +21,12 @@ class LimitIterator implements Iterator { $this->it->rewind(); $this->index = 0; - while($this->index < $this->offset && $this->it->hasMore()) { - $this->next(); + if (is_a($this->it, 'SeekableIterator')) { + $this->index = $this->it->seek($this->offset); + } else { + while($this->index < $this->offset && $this->it->hasMore()) { + $this->next(); + } } } diff --git a/ext/spl/examples/seekableiterator.inc b/ext/spl/examples/seekableiterator.inc new file mode 100755 index 0000000000..157d2736f4 --- /dev/null +++ b/ext/spl/examples/seekableiterator.inc @@ -0,0 +1,16 @@ +rewind(); + $position = 0; + while($position < $index && $this->it->hasMore()) { + $this->next(); + $position++; + } + return $position; + } +} + +?> \ No newline at end of file