mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-23 18:52:11 +00:00
31 lines
665 B
Go
31 lines
665 B
Go
|
package internal
|
||
|
|
||
|
import "unsafe"
|
||
|
|
||
|
// NewPointer creates a 64-bit pointer from an unsafe Pointer.
|
||
|
func NewPointer(ptr unsafe.Pointer) Pointer {
|
||
|
return Pointer{ptr: ptr}
|
||
|
}
|
||
|
|
||
|
// NewSlicePointer creates a 64-bit pointer from a byte slice.
|
||
|
func NewSlicePointer(buf []byte) Pointer {
|
||
|
if len(buf) == 0 {
|
||
|
return Pointer{}
|
||
|
}
|
||
|
|
||
|
return Pointer{ptr: unsafe.Pointer(&buf[0])}
|
||
|
}
|
||
|
|
||
|
// NewStringPointer creates a 64-bit pointer from a string.
|
||
|
func NewStringPointer(str string) Pointer {
|
||
|
if str == "" {
|
||
|
return Pointer{}
|
||
|
}
|
||
|
|
||
|
// The kernel expects strings to be zero terminated
|
||
|
buf := make([]byte, len(str)+1)
|
||
|
copy(buf, str)
|
||
|
|
||
|
return Pointer{ptr: unsafe.Pointer(&buf[0])}
|
||
|
}
|