GitRoot

craft your forge, build your project, grow your community freely
 1// SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
 2//
 3// SPDX-License-Identifier: MIT
 4
 5package gitroot
 6
 7// #include <stdlib.h>
 8import "C"
 9
10import "unsafe"
11
12func ptrToString(ptr uint32, size uint32) string {
13	return unsafe.String((*byte)(unsafe.Pointer(uintptr(ptr))), size)
14}
15
16func stringToPtr(s string) (uint32, uint32) {
17	ptr := unsafe.Pointer(unsafe.StringData(s))
18	return uint32(uintptr(ptr)), uint32(len(s))
19}
20
21func stringToLeakedPtr(s string) (uint32, uint32) {
22	size := C.ulong(len(s))
23	ptr := unsafe.Pointer(C.malloc(size))
24	copy(unsafe.Slice((*byte)(ptr), size), s)
25	return uint32(uintptr(ptr)), uint32(size)
26}