48 lines
1,002 B
Go
48 lines
1,002 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
. "swigtests/example"
|
|
)
|
|
|
|
func main() {
|
|
// First create some objects using the pointer library.
|
|
fmt.Println("Testing the pointer library")
|
|
a := New_intp()
|
|
b := New_intp()
|
|
c := New_intp()
|
|
Intp_assign(a, 37)
|
|
Intp_assign(b, 42)
|
|
|
|
fmt.Println(" a =", a)
|
|
fmt.Println(" b =", b)
|
|
fmt.Println(" c =", c)
|
|
|
|
// Call the add() function with some pointers
|
|
Add(a, b, c)
|
|
|
|
// Now get the result
|
|
res := Intp_value(c)
|
|
fmt.Println(" 37 + 42 =", res)
|
|
|
|
// Clean up the pointers
|
|
Delete_intp(a)
|
|
Delete_intp(b)
|
|
Delete_intp(c)
|
|
|
|
// Now try the typemap library
|
|
// Now it is no longer necessary to manufacture pointers.
|
|
// Instead we use a single element slice which in Go is modifiable.
|
|
|
|
fmt.Println("Trying the typemap library")
|
|
r := []int{0}
|
|
Sub(37, 42, r)
|
|
fmt.Println(" 37 - 42 = ", r[0])
|
|
|
|
// Now try the version with return value
|
|
|
|
fmt.Println("Testing return value")
|
|
q := Divide(42, 37, r)
|
|
fmt.Println(" 42/37 = ", q, " remainder ", r[0])
|
|
}
|