P2FA/go/ctils.go
2024-11-21 16:28:39 -05:00

25 lines
549 B
Go

package main
/*
#include <stdlib.h>
*/
import "C"
import "unsafe"
//export prepareCStringArray
func prepareCStringArray(goStrings []string) (**C.char, int) {
cStrings := make([]*C.char, len(goStrings))
for i, s := range goStrings {
cStrings[i] = C.CString(s)
}
return (**C.char)(unsafe.Pointer(&cStrings[0])), len(goStrings)
}
//export freeCStringArray
func freeCStringArray(cStrings **C.char, length int) {
array := (*[1 << 30]*C.char)(unsafe.Pointer(cStrings))[:length:length]
for _, s := range array {
C.free(unsafe.Pointer(s))
}
}