From 951b8a2cbbfebc090bbfea33ac2987677ba69c62 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sun, 6 Sep 2026 19:29:14 +0800 Subject: [PATCH] c: ClosureData, GoClosure --- c/c.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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