mirror of https://github.com/exaloop/codon.git
stdlib/internal/types/generator.codon
parent
252ad8408a
commit
da5fe988ac
|
@ -1,3 +1,6 @@
|
|||
# (c) 2022 Exaloop Inc. All rights reserved.
|
||||
|
||||
|
||||
@extend
|
||||
class Generator:
|
||||
@__internal__
|
||||
|
@ -16,10 +19,12 @@ class Generator:
|
|||
|
||||
def __iter__(self) -> Generator[T]:
|
||||
return self
|
||||
|
||||
@pure
|
||||
@llvm
|
||||
def __raw__(self) -> Ptr[byte]:
|
||||
ret i8* %self
|
||||
|
||||
@pure
|
||||
@llvm
|
||||
def __done__(self) -> bool:
|
||||
|
@ -27,11 +32,13 @@ class Generator:
|
|||
%0 = call i1 @llvm.coro.done(i8* %self)
|
||||
%1 = zext i1 %0 to i8
|
||||
ret i8 %1
|
||||
|
||||
@llvm
|
||||
def __resume__(self) -> void:
|
||||
declare void @llvm.coro.resume(i8*)
|
||||
call void @llvm.coro.resume(i8* %self)
|
||||
ret void
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return __internal__.raw_type_str(self.__raw__(), "generator")
|
||||
|
||||
|
@ -47,4 +54,5 @@ class Generator:
|
|||
call void @llvm.coro.destroy(i8* %self)
|
||||
ret void
|
||||
|
||||
|
||||
generator = Generator
|
||||
|
|
Loading…
Reference in New Issue