82 lines
2.4 KiB
Go
82 lines
2.4 KiB
Go
package neco
|
|
|
|
import (
|
|
_ "unsafe"
|
|
|
|
"github.com/goplus/llgo/c"
|
|
)
|
|
|
|
const (
|
|
LLGoFiles = "_wrap/neco.c"
|
|
LLGoPackage = "link"
|
|
)
|
|
|
|
const (
|
|
OK = 0 ///< Successful result (no error)
|
|
ERROR = -1 ///< System error (check errno)
|
|
INVAL = -2 ///< Invalid argument
|
|
PERM = -3 ///< Operation not permitted
|
|
NOMEM = -4 ///< Cannot allocate memory
|
|
EOF = -5 ///< End of file or stream (neco_stream_*)
|
|
NOTFOUND = -6 ///< No such coroutine (neco_cancel)
|
|
NOSIGWATCH = -7 ///< Not watching on a signal
|
|
CLOSED = -8 ///< Channel is closed
|
|
EMPTY = -9 ///< Channel is empty (neco_chan_tryrecv)
|
|
TIMEDOUT = -10 ///< Deadline has elapsed (neco_*_dl)
|
|
CANCELED = -11 ///< Operation canceled (by neco_cancel)
|
|
BUSY = -12 ///< Resource busy (mutex_trylock)
|
|
NEGWAITGRP = -13 ///< Negative waitgroup counter
|
|
GAIERROR = -14 ///< Error with getaddrinfo (check neco_gai_error)
|
|
UNREADFAIL = -15 ///< Failed to unread byte (neco_stream_unread_byte)
|
|
PARTIALWRITE = -16 ///< Failed to write all data (neco_stream_flush)
|
|
NOTGENERATOR = -17 ///< Coroutine is not a generator (neco_gen_yield)
|
|
NOTSUSPENDED = -18 ///< Coroutine is not suspended (neco_resume)
|
|
|
|
CANCEL_ASYNC = 1
|
|
CANCEL_INLINE = 2
|
|
CANCEL_ENABLE = 3
|
|
CANCEL_DISABLE = 4
|
|
|
|
EAI_SYSTEM = 11
|
|
|
|
NANOSECOND = int64(1)
|
|
MICROSECOND = int64(1000)
|
|
MILLISECOND = int64(1000000)
|
|
SECOND = int64(1000000000)
|
|
MINUTE = int64(60000000000)
|
|
HOUR = int64(3600000000000)
|
|
)
|
|
|
|
// generator
|
|
type Gen struct{}
|
|
|
|
// llgo:type C
|
|
type Coro = func(argc c.Int, argv *c.Pointer)
|
|
|
|
//go:linkname GenYield C.neco_gen_yield
|
|
func GenYield(data c.Pointer) c.Int
|
|
|
|
//go:linkname GenNext C.neco_gen_next
|
|
func GenNext(gen *Gen, data c.Pointer) c.Int
|
|
|
|
//go:linkname GenStart C.neco_gen_start
|
|
func GenStart(gen **Gen, dataSize uintptr, co Coro, argc c.Int, __llgo_va_list ...any) c.Int
|
|
|
|
//go:linkname GenRelease C.neco_gen_release
|
|
func GenRelease(gen *Gen) c.Int
|
|
|
|
//go:linkname ExitProg C.__neco_exit_prog
|
|
func ExitProg(code c.Int)
|
|
|
|
//go:linkname EnvSetpaniconerror C.neco_env_setpaniconerror
|
|
func EnvSetpaniconerror(paniconerror bool)
|
|
|
|
//go:linkname EnvSetcanceltype C.neco_env_setcanceltype
|
|
func EnvSetcanceltype(type_ c.Int)
|
|
|
|
//go:linkname Strerror C.neco_strerror
|
|
func Strerror(errcode c.Int) *c.Char
|
|
|
|
//go:linkname Start C.neco_start
|
|
func Start(co Coro, argc c.Int, __llgo_va_list ...any) c.Int
|