signalis-eb/godot/addons/iterator/iterator.gd
2025-06-09 23:12:19 -04:00

30 lines
673 B
GDScript

class_name Iterator extends RefCounted
func clone() -> Iterator:
assert(false, "can't clone a abstract base class")
return null
func next() -> Option:
return Option.none
func collect() -> Array:
var result = []
for item in self:
result.append(item)
return result
func into_peekable() -> PeekableIter:
return PeekableIter.new(self)
func into_indexed() -> IndexedIterator:
return IndexedIterator.new(self)
func _iter_init(iter: Array) -> bool:
return _iter_next(iter)
func _iter_next(iter: Array) -> bool:
iter[0] = next()
return iter[0].is_some()
func _iter_get(iter: Variant) -> Variant:
return iter.unwrap()