summaryrefslogtreecommitdiff
path: root/Examples/go/callback/runme.go
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/go/callback/runme.go')
-rw-r--r--Examples/go/callback/runme.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/Examples/go/callback/runme.go b/Examples/go/callback/runme.go
new file mode 100644
index 000000000..2eef77fdb
--- /dev/null
+++ b/Examples/go/callback/runme.go
@@ -0,0 +1,41 @@
+package main
+
+import (
+ . "./example"
+ "fmt"
+)
+
+func main() {
+ fmt.Println("Adding and calling a normal C++ callback")
+ fmt.Println("----------------------------------------")
+
+ caller := NewCaller()
+ callback := NewCallback()
+
+ caller.SetCallback(callback)
+ caller.Call()
+ caller.DelCallback()
+
+ callback = NewDirectorCallback(new(GoCallback))
+
+ fmt.Println()
+ fmt.Println("Adding and calling a Go callback")
+ fmt.Println("------------------------------------")
+
+ caller.SetCallback(callback)
+ caller.Call()
+ caller.DelCallback()
+
+ // Test that a double delete does not occur as the object has
+ // already been deleted from the C++ layer.
+ DeleteDirectorCallback(callback)
+
+ fmt.Println()
+ fmt.Println("Go exit")
+}
+
+type GoCallback struct{}
+
+func (p *GoCallback) Run() {
+ fmt.Println("GoCallback.Run")
+}