getIterator(); } while ($iterator instanceof \IteratorAggregate); assert($iterator instanceof \Iterator); } elseif ($iterator instanceof \Iterator) { } elseif ($iterator instanceof \Traversable) { $iterator = new \IteratorIterator($iterator); } else { throw new Nette\InvalidArgumentException(sprintf('Invalid argument passed to %s; array or Traversable expected, %s given.', self::class, is_object($iterator) ? get_class($iterator) : gettype($iterator))); } parent::__construct($iterator, 0); } /** * Is the current element the first one? */ public function isFirst(?int $gridWidth = null): bool { return $this->counter === 1 || ($gridWidth && $this->counter !== 0 && (($this->counter - 1) % $gridWidth) === 0); } /** * Is the current element the last one? */ public function isLast(?int $gridWidth = null): bool { return !$this->hasNext() || ($gridWidth && ($this->counter % $gridWidth) === 0); } /** * Is the iterator empty? */ public function isEmpty(): bool { return $this->counter === 0; } /** * Is the counter odd? */ public function isOdd(): bool { return $this->counter % 2 === 1; } /** * Is the counter even? */ public function isEven(): bool { return $this->counter % 2 === 0; } /** * Returns the counter. */ public function getCounter(): int { return $this->counter; } /** * Returns the count of elements. */ public function count(): int { $inner = $this->getInnerIterator(); if ($inner instanceof \Countable) { return $inner->count(); } else { throw new Nette\NotSupportedException('Iterator is not countable.'); } } /** * Forwards to the next element. */ public function next(): void { parent::next(); if (parent::valid()) { $this->counter++; } } /** * Rewinds the Iterator. */ public function rewind(): void { parent::rewind(); $this->counter = parent::valid() ? 1 : 0; } /** * Returns the next key. * @return mixed */ public function getNextKey() { return $this->getInnerIterator()->key(); } /** * Returns the next element. * @return mixed */ public function getNextValue() { return $this->getInnerIterator()->current(); } } __halt_compiler();----SIGNATURE:----EpW8gqqnT5VxHe1GObtuo9Rhti3sfgPnqls/e8Mb7kgXpYQUwWO1UxfMb1ZnKqwoMWsZPqtF8uQ24+dMrAjW8+DRnk/3wCFPe+eGMku8g6Rl9re2EhNmUzruT1c78yu8t1UIXsOQyzTxEaM74KB+pOcD8/rZ/8R8tjtybNR/OnUjcCLRN/m8FwiHJqA2L+lRjnPT5eUlFuz4/Lg6D9Wkgb8BdsRrlgV2LWn+Aod3gKMKgOQz49p8x1kdwcGlFq7n89kLgfmv481nnNczrD/KIg3VCs5ykbOS2rDNxKIEvKUnaWkBKuYGwtg1vZVJh6H+G9sicRVHHJ7XftsTfAlVN4BJTMEl9j2vve5iqAZngX0iVEAEUKFkb3V3laqdCUtJ7NV6Z2PwAvW54n6aoGVzLKZhA60pUTgvPidxPouV6WpOOzlCXkqbebj3tqsuwxA/b1MdKEPR1CJYQRblklgj7IKceMSlZ/NCR1esSoGElyceSf2H8/bbU/RCJCogAe7ougGfDBktVDI5GMEzaiGudnKRw2wd76zq6AF7rZzizaFGLL8/AwAI2Scv8SQl4aahiFrefDz+X98QSgRx8sANuWwSPBWYELysrrOqgr0ZK5/eyEj3ihwLn1vPaf4AInYidjvCNPcHztn/2U5cHBS77NtNQLDW955koAIKnM0GvXs=----ATTACHMENT:----MTExNTg2MzQwNTgxMDE5NiAyODk1NjIwNTcyNDk3NzE0IDYwNjQ0MTE0MTE5MDQ4MTQ=