github.com/grailbio/base@v0.0.11/gtl/tests/unsafe.go (about) 1 // Code generated by "../generate.py --prefix= -DELEM=int32 --package=tests --output=unsafe.go ../unsafe.go.tpl". DO NOT EDIT. 2 3 package tests 4 5 import ( 6 "reflect" 7 "unsafe" 8 ) 9 10 // int32sToBytes casts []int32 to []byte without reallocating. 11 func int32sToBytes(src []int32) (d []byte) { // nolint: deadcode 12 if len(src) == 0 { 13 return nil 14 } 15 sh := (*reflect.SliceHeader)(unsafe.Pointer(&src)) 16 dh := (*reflect.SliceHeader)(unsafe.Pointer(&d)) 17 const elemSize = int(unsafe.Sizeof(src[0])) 18 dh.Data = sh.Data 19 dh.Len = sh.Len * elemSize 20 dh.Cap = sh.Cap * elemSize 21 return d 22 } 23 24 // BytesToint32s casts []byte to []int32 without reallocating. 25 func BytesToint32s(src []byte) (d []int32) { // nolint: deadcode 26 if len(src) == 0 { 27 return nil 28 } 29 sh := (*reflect.SliceHeader)(unsafe.Pointer(&src)) 30 dh := (*reflect.SliceHeader)(unsafe.Pointer(&d)) 31 const elemSize = int(unsafe.Sizeof(d[0])) 32 dh.Data = sh.Data 33 dh.Len = sh.Len / elemSize 34 dh.Cap = sh.Cap / elemSize 35 return d 36 }