diff --git a/c/c.go b/c/c.go index 6e7d8d8..7361255 100644 --- a/c/c.go +++ b/c/c.go @@ -191,6 +191,18 @@ func GoDeferData() Pointer // ----------------------------------------------------------------------------- +func ClosureData[ClosureT any](closure ClosureT) Pointer { + ret := new(ClosureT) + *ret = closure + return Pointer(ret) +} + +func GoClosure[ClosureT any](data Pointer) (closure ClosureT) { + return *(*ClosureT)(data) +} + +// ----------------------------------------------------------------------------- + //go:linkname AllocaSigjmpBuf llgo.sigjmpbuf func AllocaSigjmpBuf() Pointer