github.com/gotranspile/cxgo@v0.3.7/runtime/libc/runtime.go (about) 1 package libc 2 3 import ( 4 "unsafe" 5 _ "unsafe" // required by go:linkname 6 ) 7 8 //go:linkname findnull runtime.findnull 9 func findnull(str *byte) int 10 11 //go:linkname findnullw runtime.findnullw 12 func findnullw(str *uint16) int 13 14 //go:linkname gobytes runtime.gobytes 15 func gobytes(p *byte, n int) []byte 16 17 //go:linkname gostring runtime.gostring 18 func gostring(p *byte) string 19 20 //go:linkname gostringnocopy runtime.gostringnocopy 21 func gostringnocopy(p *byte) string 22 23 //go:linkname gostringn runtime.gostringn 24 func gostringn(p *byte, l int) string 25 26 //go:linkname gostringw runtime.gostringw 27 func gostringw(strw *uint16) string 28 29 type rtype = unsafe.Pointer 30 31 type emptyInterface struct { 32 typ rtype 33 word unsafe.Pointer 34 } 35 36 func typeof(i interface{}) rtype { 37 eface := *(*emptyInterface)(unsafe.Pointer(&i)) 38 return eface.typ 39 } 40 41 func sizeof(t rtype) uintptr { 42 if t == nil { 43 return 0 44 } 45 return *(*uintptr)(t) 46 } 47 48 //go:linkname unsafe_New reflect.unsafe_New 49 func unsafe_New(typ rtype) unsafe.Pointer 50 51 //go:linkname unsafe_NewArray reflect.unsafe_NewArray 52 func unsafe_NewArray(typ rtype, size int) unsafe.Pointer