extends IterableBase class_name WhileIterable ## Represents an infinite or finite sequence which is terminated when a ## condition is not met anymore. var _it : IterableBase var _cond : Callable func _init(it : IterableBase, cond : Callable = GDRx.basic.default_condition): self._it = it self._cond = cond class _Iterator extends Iterator: var _itit : Iterator var _itcond : Callable func _init(it : Iterator, cond : Callable): self._itit = it self._itcond = cond func has_next() -> bool: return self._itit.has_next() and self._itcond.call() func next() -> Variant: return ItEnd.new() if not self._itcond.call() else self._itit.next() func iter() -> Iterator: return self._Iterator.new(self._it.iter(), self._cond)