From: Roland Haeder Date: Tue, 24 Mar 2015 20:24:19 +0000 (+0100) Subject: Moved default iterator from 'hub'. X-Git-Url: https://git.mxchange.org/?p=core.git;a=commitdiff_plain;h=242beeb5da2db0b8b4e65c3667749d06ed9c96c9 Moved default iterator from 'hub'. Signed-off-by: Roland Häder --- diff --git a/inc/classes/main/iterator/default/.htaccess b/inc/classes/main/iterator/default/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/iterator/default/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/iterator/default/class_DefaultIterator.php b/inc/classes/main/iterator/default/class_DefaultIterator.php new file mode 100644 index 00000000..eed63186 --- /dev/null +++ b/inc/classes/main/iterator/default/class_DefaultIterator.php @@ -0,0 +1,122 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Hub Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class DefaultIterator extends BaseIterator implements Iterator { + /** + * Key for the global list index + */ + private $indexKey = 0; + + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this class + * + * @param $listInstance A list of a Listable + * @return $iteratorInstance An instance a Iterator class + */ + public static final function createDefaultIterator (Listable $listInstance) { + // Get new instance + $iteratorInstance = new DefaultIterator(); + + // Set the list + $iteratorInstance->setListInstance($listInstance); + + // Return the prepared instance + return $iteratorInstance; + } + + /** + * Getter for current value from group or generic + * + * @return $current Current value in iteration + * @throws IndexOutOfBoundsException If $indexKey is out of bounds + */ + public function current () { + // Default is null + $current = NULL; + + // Is the entry valid? + if (!$this->valid()) { + // Throw an exception here + throw new IndexOutOfBoundsException($this->key(), self::EXCEPTION_INDEX_OUT_OF_BOUNDS); + } // END - if + + // Now get the entry + $current = $this->getListInstance()->getEntry($this->key()); + + // Return it + return $current; + } + + /** + * Getter for key from group or generic + * + * @return $indexKey Current key in iteration + */ + public function key () { + return $this->indexKey; + } + + /** + * Advances to the next entry + * + * @return void + */ + public function next () { + $this->indexKey++; + } + + /** + * Rewinds to the beginning of the iteration + * + * @return void + */ + public function rewind () { + $this->indexKey = 0; + } + + /** + * Checks whether the current entry is valid (not at the end of the list) + * + * @return $isValid Whether the current entry is there + */ + public function valid () { + // Check for total active peers and if we are not at the end + $isValid = ($this->key() < $this->getListInstance()->count()); + + // Return result + return $isValid; + } +} + +// [EOF] +?> diff --git a/inc/config.php b/inc/config.php index c5d92646..1bfdc40e 100644 --- a/inc/config.php +++ b/inc/config.php @@ -413,5 +413,8 @@ $cfg->setConfigEntry('task_list_class', 'TaskList'); // CFG: LIST-GROUP-CLASS $cfg->setConfigEntry('list_group_class', 'ListGroupList'); +// CFG: DEFAULT-ITERATOR-CLASS +$cfg->setConfigEntry('default_iterator_class', 'DefaultIterator'); + // [EOF] ?>