helly Fri Oct 29 16:58:59 2004 EDT
Modified files:
/php-src/ext/spl/internal cachingiterator.inc
cachingrecursiveiterator.inc
filteriterator.inc limititerator.inc
outeriterator.inc parentiterator.inc
recursiveiterator.inc
recursiveiteratoriterator.inc
seekableiterator.inc
Log:
- Update docu
http://cvs.php.net/diff.php/php-src/ext/spl/internal/cachingiterator.inc?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/spl/internal/cachingiterator.inc
diff -u php-src/ext/spl/internal/cachingiterator.inc:1.2
php-src/ext/spl/internal/cachingiterator.inc:1.3
--- php-src/ext/spl/internal/cachingiterator.inc:1.2 Fri Oct 29 16:12:56 2004
+++ php-src/ext/spl/internal/cachingiterator.inc Fri Oct 29 16:58:58 2004
@@ -1,8 +1,23 @@
<?php
+/** @file cachingiterator.inc
+ * @ingroup Internal
+ * @brief class CachingIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
define('CIT_CALL_TOSTRING', 1);
define('CIT_CATCH_GET_CHILD', 2);
+/**
+ * @brief Cached Iteration over another Iterator
+ * @author Marcus Boerger
+ * @version 1.1
+ *
+ */
class CachingIterator implements OuterIterator
{
protected $it;
@@ -11,6 +26,12 @@
protected $valid;
protected $strValue;
+ /** Construct from another iterator
+ *
+ * @param it Iterator to cache
+ * @param flags Bitmask:
+ * - CIT_CALL_TOSTRING (whether to call __toString() for every
element)
+ */
function __construct(Iterator $it, $flags = CIT_CALL_TOSTRING)
{
$this->it = $it;
@@ -18,12 +39,16 @@
$this->next();
}
+ /** Rewind the Iterator
+ */
function rewind()
{
$this->it->rewind();
$this->next();
}
+ /** Forward to the next element
+ */
function next()
{
if ($this->valid = $this->it->valid()) {
@@ -44,31 +69,45 @@
$this->it->next();
}
+ /** @return whether teh iterator is valid
+ */
function valid()
{
return $this->valid;
}
+ /** @return whether there is one more element
+ */
function hasNext()
{
return $this->it->valid();
}
+ /** @return the current element
+ */
function current()
{
return $this->current;
}
+ /** @return the current key
+ */
function key()
{
return $this->key;
}
+ /** Aggregate the inner iterator
+ */
function __call($func, $params)
{
return call_user_func_array(array($this->it, $func), $params);
}
+ /** @return the string represenatation that was generated for the current
+ * element
+ * @throw exception when CIT_CALL_TOSTRING was not specified in constructor
+ */
function __toString()
{
if (!$this->flags & CIT_CALL_TOSTRING) {
@@ -77,6 +116,9 @@
return $this->strValue;
}
+ /**
+ * @return The inner iterator
+ */
function getInnerIterator()
{
return $this->it;
http://cvs.php.net/diff.php/php-src/ext/spl/internal/cachingrecursiveiterator.inc?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/internal/cachingrecursiveiterator.inc
diff -u php-src/ext/spl/internal/cachingrecursiveiterator.inc:1.1
php-src/ext/spl/internal/cachingrecursiveiterator.inc:1.2
--- php-src/ext/spl/internal/cachingrecursiveiterator.inc:1.1 Sat May 8 08:24:15
2004
+++ php-src/ext/spl/internal/cachingrecursiveiterator.inc Fri Oct 29 16:58:58
2004
@@ -1,15 +1,38 @@
<?php
+/** @file cachingrecursiveiterator.inc
+ * @ingroup Internal
+ * @brief class CachingRecursiveIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
+/**
+ * @brief
+ * @author Marcus Boerger
+ * @version 1.1
+ */
class CachingRecursiveIterator extends CachingIterator implements RecursiveIterator
{
protected $hasChildren;
protected $getChildren;
+ /** Construct from another iterator
+ *
+ * @param it Iterator to cache
+ * @param flags Bitmask:
+ * - CIT_CALL_TOSTRING (whether to call __toString() for every
element)
+ * - CIT_CATCH_GET_CHILD (whether to catch exceptions when trying
to get childs)
+ */
function __construct(RecursiveIterator $it, $flags = CIT_CALL_TOSTRING)
{
parent::__construct($it, $flags);
}
-
+
+ /** Rewind Iterator
+ */
function rewind();
{
$this->hasChildren = false;
@@ -17,6 +40,9 @@
parent::rewind();
}
+ /** Forward to next element if necessary then an Iterator for the Children
+ * will be created.
+ */
function next()
{
if ($this->hasChildren = $this->it->hasChildren()) {
@@ -39,11 +65,19 @@
parent::next();
}
+ /** @return whether the current element has children
+ * @note The check whether the Iterator for the children can be created was
+ * already executed. Hence when flag CIT_CATCH_GET_CHILD was given in
+ * constructor this fucntion returns false so that getChildren does
+ * not try to access those children.
+ */
function hasChildren()
{
return $this->hasChildren;
}
+ /** @return An Iterator for the children
+ */
function getChildren()
{
return $this->getChildren;
http://cvs.php.net/diff.php/php-src/ext/spl/internal/filteriterator.inc?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/spl/internal/filteriterator.inc
diff -u php-src/ext/spl/internal/filteriterator.inc:1.2
php-src/ext/spl/internal/filteriterator.inc:1.3
--- php-src/ext/spl/internal/filteriterator.inc:1.2 Fri Oct 29 16:12:56 2004
+++ php-src/ext/spl/internal/filteriterator.inc Fri Oct 29 16:58:58 2004
@@ -1,9 +1,18 @@
<?php
+/** @file filteriterator.inc
+ * @ingroup Internal
+ * @brief class FilterIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
/**
* @brief Regular expression filter for string iterators
* @author Marcus Boerger
- * @version 1.0
+ * @version 1.1
*
* Instances of this class act as a filter around iterators. In other words
* you can put an iterator into the constructor and the instance will only
http://cvs.php.net/diff.php/php-src/ext/spl/internal/limititerator.inc?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/spl/internal/limititerator.inc
diff -u php-src/ext/spl/internal/limititerator.inc:1.2
php-src/ext/spl/internal/limititerator.inc:1.3
--- php-src/ext/spl/internal/limititerator.inc:1.2 Fri Oct 29 16:12:56 2004
+++ php-src/ext/spl/internal/limititerator.inc Fri Oct 29 16:58:58 2004
@@ -1,5 +1,20 @@
<?php
+/** @file limititerator.inc
+ * @ingroup Internal
+ * @brief class LimitIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
+/**
+ * @brief Limited Iteration over another Iterator
+ * @author Marcus Boerger
+ * @version 1.1
+ *
+ */
class LimitIterator implements OuterIterator
{
protected $it;
@@ -7,7 +22,12 @@
protected $count;
private $pos;
- // count === NULL means all
+ /** Construct
+ *
+ * @param it Iterator to limit
+ * @param offset Offset to first element
+ * @param count Maximum number of elements to show or NULL for all
+ */
function __construct(Iterator $it, $offset = 0, $count = -1)
{
if ($offset < 0) {
@@ -22,6 +42,11 @@
$this->pos = 0;
}
+ /** Seek to specified position
+ * @param position offset to seek to (relative to beginning not offset
+ * specified in constructor).
+ * @throw exception when position is invalid
+ */
function seek($position) {
if ($position < $this->offset) {
throw new exception('Cannot seek to '.$position.' which is
below offset '.$this->offset);
@@ -39,6 +64,8 @@
}
}
+ /** Rewind to offset specified in constructor
+ */
function rewind()
{
$this->it->rewind();
@@ -46,24 +73,35 @@
$this->seek($this->offset);
}
+ /** @return whether iterator is valid
+ */
function valid() {
return ($this->count == -1 || $this->pos < $this->offset +
$this->count)
&& $this->it->valid();
}
+ /** @return current key
+ */
function key() {
return $this->it->key();
}
+ /** @return current element
+ */
function current() {
return $this->it->current();
}
+ /** Forward to nect element
+ */
function next() {
$this->it->next();
$this->pos++;
}
+ /** @return current position relative to zero (not to offset specified in
+ * constructor).
+ */
function getPosition() {
return $this->pos;
}
http://cvs.php.net/diff.php/php-src/ext/spl/internal/outeriterator.inc?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/internal/outeriterator.inc
diff -u php-src/ext/spl/internal/outeriterator.inc:1.1
php-src/ext/spl/internal/outeriterator.inc:1.2
--- php-src/ext/spl/internal/outeriterator.inc:1.1 Fri Oct 29 16:12:56 2004
+++ php-src/ext/spl/internal/outeriterator.inc Fri Oct 29 16:58:58 2004
@@ -1,11 +1,22 @@
<?php
-/** \ingroup SPL
- * \brief Interface to access inner iterator of iterator wrappers
+/** @file outeriterator.inc
+ * @ingroup Internal
+ * @brief class OuterIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
+/**
+ * @brief Interface to access the current inner iteraor of iterator wrappers
+ * @author Marcus Boerger
+ * @version 1.0
*/
interface OuterIterator extends Iterator
{
- /** \return inner iterator
+ /** @return inner iterator
*/
function getInnerIterator();
}
http://cvs.php.net/diff.php/php-src/ext/spl/internal/parentiterator.inc?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/internal/parentiterator.inc
diff -u php-src/ext/spl/internal/parentiterator.inc:1.1
php-src/ext/spl/internal/parentiterator.inc:1.2
--- php-src/ext/spl/internal/parentiterator.inc:1.1 Sat May 8 08:24:15 2004
+++ php-src/ext/spl/internal/parentiterator.inc Fri Oct 29 16:58:58 2004
@@ -1,21 +1,48 @@
<?php
+/** @file parentiterator.inc
+ * @ingroup Internal
+ * @brief class FilterIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
+/**
+ * @brief Iterator to filter parents
+ * @author Marcus Boerger
+ * @version 1.1
+ *
+ * This extended FilterIterator allows a recursive iteration using
+ * RecursiveIteratorIterator that only shows those elements which have
+ * children.
+ */
class ParentIterator extends FilterIterator implements RecursiveIterator
{
+ /** @param $it the RecursiveIterator to filter
+ */
function __construct(RecursiveIterator $it)
{
parent::__construct($it);
}
+
+ /** @return whetehr the current element has children
+ */
function accept()
{
return $this->it->hasChildren();
}
+ /** @return whether the current element has children
+ */
function hasChildren()
{
return $this->it->hasChildren();
}
+ /** @return the ParentIterator for the current elements children
+ */
function getChildren()
{
return new ParentIterator($this->it->getChildren());
http://cvs.php.net/diff.php/php-src/ext/spl/internal/recursiveiterator.inc?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/internal/recursiveiterator.inc
diff -u php-src/ext/spl/internal/recursiveiterator.inc:1.1
php-src/ext/spl/internal/recursiveiterator.inc:1.2
--- php-src/ext/spl/internal/recursiveiterator.inc:1.1 Sat May 8 08:24:15 2004
+++ php-src/ext/spl/internal/recursiveiterator.inc Fri Oct 29 16:58:58 2004
@@ -1,8 +1,27 @@
<?php
+/** @file recursiveiterator.inc
+ * @ingroup Internal
+ * @brief class RecursiveIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
+/**
+ * @brief Interface for recursive iteration with RecursiveIteratorIterator
+ * @author Marcus Boerger
+ * @version 1.0
+ */
interface RecursiveIterator implements Iterator
{
+ /** @return whether the current element has children
+ */
function hasChildren();
+
+ /** @return the sub iterator for the current element
+ */
function getChildren();
}
http://cvs.php.net/diff.php/php-src/ext/spl/internal/recursiveiteratoriterator.inc?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/spl/internal/recursiveiteratoriterator.inc
diff -u php-src/ext/spl/internal/recursiveiteratoriterator.inc:1.2
php-src/ext/spl/internal/recursiveiteratoriterator.inc:1.3
--- php-src/ext/spl/internal/recursiveiteratoriterator.inc:1.2 Fri Oct 29 16:12:57
2004
+++ php-src/ext/spl/internal/recursiveiteratoriterator.inc Fri Oct 29 16:58:58
2004
@@ -1,9 +1,22 @@
<?php
+/** @file recursiveiteratoriterator.inc
+ * @ingroup Internal
+ * @brief class RecursiveIteratorIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
+define('RIT_LEAVES_ONLY', 0);
+define('RIT_SELF_FIRST', 1);
+define('RIT_CHILD_FIRST', 2);
+
/**
* @brief Iterates through recursive iterators
* @author Marcus Boerger
- * @version 1.0
+ * @version 1.1
*
*/
class RecursiveIteratorIterator implements OuterIterator
@@ -11,12 +24,21 @@
protected $ait = array();
protected $count = 0;
- function __construct(RecursiveIterator $it)
+ /** Construct from RecursiveIterator
+ *
+ * @param it RecursiveIterator to iterate
+ * @param flags Operation mode:
+ * - RIT_LEAVES_ONLY only show leaves
+ * - RIT_SELF_FIRST show parents prior to their childs
+ * - RIT_CHILD_FIRST show all childs prior to their parent
+ */
+ function __construct(RecursiveIterator $it, $flags)
{
$this->ait[0] = $it;
}
-
+ /** Rewind to top iterator as set in constructor
+ */
function rewind()
{
while ($this->count) {
@@ -26,6 +48,8 @@
$this->ait[0]->recursed = false;
}
+ /** @return whether iterator is valid
+ */
function valid()
{
$count = $this->count;
@@ -39,18 +63,24 @@
return false;
}
+ /** @reutrn current key
+ */
function key()
{
$it = $this->ait[$this->count];
return $it->key();
}
+ /** @return current element
+ */
function current()
{
$it = $this->ait[$this->count];
return $it->current();
}
+ /** Forward to next element
+ */
function next()
{
while ($this->count) {
@@ -83,7 +113,10 @@
}
}
}
-
+
+ /** @return Sub Iterator at given level or if unspecified the current sub
+ * Iterator
+ */
function getSubIterator($level = NULL)
{
if (is_null($level)) {
@@ -100,6 +133,8 @@
return $this->it;
}
+ /** @return Current Depth (Number of parents)
+ */
function getDepth()
{
return $this->level;
http://cvs.php.net/diff.php/php-src/ext/spl/internal/seekableiterator.inc?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/internal/seekableiterator.inc
diff -u php-src/ext/spl/internal/seekableiterator.inc:1.1
php-src/ext/spl/internal/seekableiterator.inc:1.2
--- php-src/ext/spl/internal/seekableiterator.inc:1.1 Sat May 8 08:24:15 2004
+++ php-src/ext/spl/internal/seekableiterator.inc Fri Oct 29 16:58:58 2004
@@ -1,6 +1,17 @@
<?php
-/** \brief seekable iterator
+/** @file seekableiterator.inc
+ * @ingroup Internal
+ * @brief class SeekableIterator
+ * @author Marcus Boerger
+ * @date 2003 - 2004
+ *
+ * SPL - Standard PHP Library
+ */
+
+/** @brief seekable iterator
+ * @author Marcus Boerger
+ * @version 1.0
*
* 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
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php