23 lines
592 B
Go
23 lines
592 B
Go
// Package cgo is a focused harness for safe Go-to-C interop helpers.
|
|
//
|
|
// Common usage:
|
|
//
|
|
// buffer := NewBuffer(32)
|
|
// n := buffer.CopyFrom([]byte("agent"))
|
|
// defer buffer.Free()
|
|
//
|
|
// err := Call(unsafe.Pointer(C.some_function), buffer.Ptr(), SizeT(n))
|
|
// if err != nil {
|
|
// // handle mapped C errno
|
|
// }
|
|
//
|
|
// scope := NewScope()
|
|
// defer scope.Close()
|
|
// cString := scope.CString("hello")
|
|
// buffer := scope.Buffer(16)
|
|
//
|
|
// if err := Call(unsafe.Pointer(C.another_function), cString, buffer.Ptr()); err != nil {
|
|
// // scope.Close() will release C string + buffer
|
|
// }
|
|
package cgo
|
|
|