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}