Embed out in coroutine+YieldTo+Yielder interface+Sleeper

This commit is contained in:
bloeys
2022-11-05 01:11:13 +04:00
parent 1d4451dac2
commit b40ae1fe3d
7 changed files with 293 additions and 16 deletions

94
demo.cogo.go Executable file
View File

@ -0,0 +1,94 @@
// Code generated by 'cogo'; DO NOT EDIT.
package main
import (
"time"
"github.com/bloeys/cogo/cogo"
)
func test_cogo(c *cogo.Coroutine[int, int]) {
switch c.State {
case 0:
switch c.SubState {
default:
}
println("test yield:", 1)
c.State++
c.SubState = -1
c.Out = 1
return
case 1:
switch c.SubState {
default:
}
c.State++
c.SubState = -1
c.Yielder = cogo.NewSleeper(100 * time.Millisecond)
return
case 2:
switch c.SubState {
default:
}
c.State++
c.SubState = -1
c.Yielder = cogo.New(test2, 0)
return
case 3:
switch c.SubState {
default:
}
println("test yield:", 2)
c.State++
c.SubState = -1
c.Out = 2
return
case 4:
switch c.SubState {
default:
}
c.State = -1
c.SubState = -1
default:
c.State = -1
c.SubState = -1
return
}
}
func test2_cogo(c *cogo.Coroutine[int, int]) {
switch c.State {
case 0:
switch c.SubState {
default:
}
println("test2222 yield:", 1)
c.State++
c.SubState = -1
c.Out = 1
return
case 1:
switch c.SubState {
default:
}
println("test2222 yield:", 2)
c.State++
c.SubState = -1
c.Out = 2
return
case 2:
switch c.SubState {
default:
}
c.State = -1
c.SubState = -1
default:
c.State = -1
c.SubState = -1
return
}
}