helly           Tue Apr 27 14:15:00 2004 EDT

  Added files:                 
    /php-src/ext/spl/examples   emptyiterator.inc infiniteiterator.inc 
  Log:
  - More examples
  
  

http://cvs.php.net/co.php/php-src/ext/spl/examples/emptyiterator.inc?r=1.1&p=1
Index: php-src/ext/spl/examples/emptyiterator.inc
+++ php-src/ext/spl/examples/emptyiterator.inc
<?php

/**
 * @brief   An empty Iterator
 * @author  Marcus Boerger
 * @version 1.0
 *
 */
class EmptyIterator implements Iterator
{
        function rewind()
        {
                // nothing to do
        }

        function valid()
        {
                return false;
        }

        function current()
        {
                throw new Exception('Accessing the value of an EmptyIterator');
        }

        function key()
        {
                throw new Exception('Accessing the key of an EmptyIterator');
        }

        function next()
        {
                // nothing to do
        }
}

?>
http://cvs.php.net/co.php/php-src/ext/spl/examples/infiniteiterator.inc?r=1.1&p=1
Index: php-src/ext/spl/examples/infiniteiterator.inc
+++ php-src/ext/spl/examples/infiniteiterator.inc
<?php

/**
 * @brief   An infinite Iterator
 * @author  Marcus Boerger
 * @version 1.0
 *
 * This Iterator takes another Iterator and infinitvely iterates it by
 * rewinding it when its end is reached.
 *
 * \note Even an InfiniteIterator stops if its inner Iterator is empty.
 *
 \verbatim
 $it       = new ArrayIterator(array(1,2,3));
 $infinite = new InfiniteIterator($it);
 $limit    = new LimitIterator($infinite, 0, 5);
 foreach($limit as $val=>$key)
 {
        echo "$val=>$key\n";
 }
 \endverbatim
 */
class InfiniteIterator implements Iterator
{
        private $it;

        function __construct(Iterator $it)
        {
                $this->it = $it;
        }

        function getInnerIterator()
        {
                return $this->it;
        }

        function rewind()
        {
                $this->it->rewind();
        }

        function valid()
        {
                return $this->it->valid();
        }

        function current()
        {
                return $this->it->current();
        }

        function key()
        {
                return $this->it->key();
        }

        function next()
        {
                $this->it->next();
                if (!$this->it->valid())
                {
                        $this->it->rewind();
                }
        }
}

?>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to