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:----R3VVcIw9lxAGPUZ1j/TcLXSBvCA3Vs/ibmvtl1bd6DMmQ2k+NHpeE/TgvNX4XZXWRRw12Q8RpzcYD/mUMpdIqNpiQqnwkwc03Wsv1V3qMTZCXpud0FzwFrUB4G4YGexci5BcAmUg4OXG+LFATWHaZ2HPPyYn0AEwWvHzgqQ92a+mw7Gm8b6mZq/LRdEFpnYkPxVCDHHWVlS6wQN3hxxeRMptAwdeF39OTMxqhHK0rM0ZaZtVjf+ksdvyD7J/ljG47n7CkHdSwoUs3wuYwn7AaPUirP4UScQJBjXuMIsnSuYIo9oQYzt430AyCxfdJz2UztUPOGbbuPKq998K6bHZZ05Of8vhG0WRpMvluUQR28kRTD/yVsROMHpuqDaAN8TAJD1fLuEa+0vllqFjJYaOLmBa6Kb/nLUrQb68j0MVkb9CjjshMb9qpKwx5AfME3oVsD7j/6mYopEzKenp1tsikBPBF6SQt3kAZEMqSWqCCTiri+Lviot/Sj8AQI22zNIrDCiV/nVz5FZsHXaFLSm7fXv9AI5jiq4WXslf1zYK10edfLks4EjOPmVosxVCLH7zPoq2zzTlABxyT1HGMKOGEHbzwcwzpSP9h1PH9DHR9QDceeldaxNF8LwqM6BpIOsCICjOF9Ej6IuKD05YmyqPcpBMo+IskJrpCe/3dsC98Rs=----ATTACHMENT:----ODIxOTMzMTAwNzg4ODA2MSAyNjIwODY2NzIzMTcxOTI3IDg3ODc4NDA1NTQyODMzMDA=