107 lines
2.1 KiB
Go
107 lines
2.1 KiB
Go
package main
|
|
|
|
import "unsafe"
|
|
|
|
const (
|
|
LLGoFiles = "../wrap/basic.c"
|
|
)
|
|
|
|
type pointer = *int8
|
|
|
|
//go:linkname printf C.printf
|
|
func printf(format *byte, __llgo_va_list ...any) int32
|
|
|
|
func assert(info string, b bool) {
|
|
if !b {
|
|
printf(unsafe.StringData("Assertion failed: %s\n\000"), unsafe.StringData(info))
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
}
|
|
|
|
//go:linkname cbasic_int8 C.basic_int8
|
|
func cbasic_int8(a int8) int8
|
|
|
|
func basic_int8(a int8) int8 {
|
|
return a
|
|
}
|
|
|
|
func init() {
|
|
assert("cbasic_int8\000", cbasic_int8(100) == 100)
|
|
assert("basic_int8\000", basic_int8(100) == 100)
|
|
}
|
|
|
|
//go:linkname cbasic_int16 C.basic_int16
|
|
func cbasic_int16(a int16) int16
|
|
|
|
func basic_int16(a int16) int16 {
|
|
return a
|
|
}
|
|
|
|
func init() {
|
|
assert("cbasic_int16\000", cbasic_int16(100) == 100)
|
|
assert("basic_int16\000", basic_int16(100) == 100)
|
|
}
|
|
|
|
//go:linkname cbasic_int32 C.basic_int32
|
|
func cbasic_int32(a int32) int32
|
|
|
|
func basic_int32(a int32) int32 {
|
|
return a
|
|
}
|
|
|
|
func init() {
|
|
assert("cbasic_int32\000", cbasic_int32(100) == 100)
|
|
assert("basic_int32\000", basic_int32(100) == 100)
|
|
}
|
|
|
|
//go:linkname cbasic_int64 C.basic_int64
|
|
func cbasic_int64(a int64) int64
|
|
|
|
func basic_int64(a int64) int64 {
|
|
return a
|
|
}
|
|
|
|
func init() {
|
|
assert("cbasic_int64\000", cbasic_int64(100) == 100)
|
|
assert("basic_int64\000", basic_int64(100) == 100)
|
|
}
|
|
|
|
//go:linkname cbasic_float32 C.basic_float32
|
|
func cbasic_float32(a float32) float32
|
|
|
|
func basic_float32(a float32) float32 {
|
|
return a
|
|
}
|
|
|
|
func init() {
|
|
assert("cbasic_float32\000", cbasic_float32(100) == 100)
|
|
assert("basic_float32\000", basic_float32(100) == 100)
|
|
}
|
|
|
|
//go:linkname cbasic_float64 C.basic_float64
|
|
func cbasic_float64(a float64) float64
|
|
|
|
func basic_float64(a float64) float64 {
|
|
return a
|
|
}
|
|
|
|
func init() {
|
|
assert("cbasic_float64\000", cbasic_float64(100) == 100)
|
|
assert("basic_float64\000", basic_float64(100) == 100)
|
|
}
|
|
|
|
//go:linkname cbasic_pointer C.basic_pointer
|
|
func cbasic_pointer(a pointer) pointer
|
|
|
|
func basic_pointer(a pointer) pointer {
|
|
return a
|
|
}
|
|
|
|
func init() {
|
|
var p int8
|
|
assert("cbasic_pointer\000", cbasic_pointer(&p) == &p)
|
|
assert("basic_pointer\000", basic_pointer(&p) == &p)
|
|
}
|