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