Files
llgo/c/lua/_demo/userdata/userdata.go
luoliwoshang e3cb4ebfdc c/lua:alloc
2024-09-16 23:30:35 +08:00

44 lines
750 B
Go

package main
import (
"unsafe"
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/c/lua"
)
type lightdata struct {
value int
}
func main() {
L := lua.Newstate__1()
defer L.Close()
L.Openlibs()
data := L.Newuserdata(unsafe.Sizeof(0))
*((*int)(data)) = 42
L.Setglobal(c.Str("data"))
light := &lightdata{value: 24}
L.Pushlightuserdata(unsafe.Pointer(light))
L.Setglobal(c.Str("lightdata"))
L.Getglobal(c.Str("data"))
if L.Isuserdata(-1) != 0 {
data := L.Touserdata(-1)
c.Printf(c.Str("userdata %d\n"), *(*int)(data))
}
L.Getglobal(c.Str("lightdata"))
if L.Islightuserdata(-1) {
light := (*lightdata)(L.Touserdata(-1))
c.Printf(c.Str("lightdata %d\n"), light.value)
}
}
/* Expected output:
userdata 42
lightdata 24
*/