| package main |
| |
| import "swigtests/director_basic" |
| |
| type GoFoo struct{} |
| |
| func (p *GoFoo) Ping() string { |
| return "GoFoo::ping()" |
| } |
| |
| func f1() { |
| a := director_basic.NewDirectorFoo(&GoFoo{}) |
| |
| if a.Ping() != "GoFoo::ping()" { |
| panic(a.Ping()) |
| } |
| |
| if a.Pong() != "Foo::pong();GoFoo::ping()" { |
| panic(a.Pong()) |
| } |
| |
| b := director_basic.NewFoo() |
| |
| if b.Ping() != "Foo::ping()" { |
| panic(b.Ping()) |
| } |
| |
| if b.Pong() != "Foo::pong();Foo::ping()" { |
| panic(b.Pong()) |
| } |
| |
| a1 := director_basic.NewA1(1) |
| |
| if a1.Rg(2) != 2 { |
| panic(0) |
| } |
| } |
| |
| type GoClass struct { |
| cmethod int |
| } |
| |
| func (p *GoClass) Method(uintptr) { |
| p.cmethod = 7 |
| } |
| func (p *GoClass) Vmethod(b director_basic.Bar) director_basic.Bar { |
| b.SetX(b.GetX() + 31) |
| return b |
| } |
| |
| var bc director_basic.Bar |
| |
| func f2() { |
| b := director_basic.NewBar(3) |
| d := director_basic.NewMyClass() |
| pc := &GoClass{0} |
| c := director_basic.NewDirectorMyClass(pc) |
| |
| cc := director_basic.MyClassGet_self(c) |
| dd := director_basic.MyClassGet_self(d) |
| |
| bc = cc.Cmethod(b) |
| bd := dd.Cmethod(b) |
| |
| cc.Method(b.Swigcptr()) |
| if pc.cmethod != 7 { |
| panic(pc.cmethod) |
| } |
| |
| if bc.GetX() != 34 { |
| panic(bc.GetX()) |
| } |
| |
| if bd.GetX() != 16 { |
| panic(bd.GetX()) |
| } |
| } |
| |
| type GoMulti struct { |
| GoClass |
| } |
| |
| func (p *GoMulti) Vmethod(b director_basic.Bar) director_basic.Bar { |
| b.SetX(b.GetX() + 31) |
| return b |
| } |
| func (p *GoMulti) Ping() string { |
| return "GoFoo::ping()" |
| } |
| |
| func f3() { |
| for i := 0; i < 100; i++ { |
| p := &GoMulti{GoClass{0}} |
| gomult := director_basic.NewDirectorFoo(p) |
| gomult.Pong() |
| director_basic.DeleteDirectorFoo(gomult) |
| } |
| |
| p := &GoMulti{GoClass{0}} |
| gomult := director_basic.NewDirectorMyClass(p) |
| fgomult := director_basic.NewDirectorFoo(gomult) |
| |
| p1 := director_basic.FooGet_self(fgomult.(director_basic.Foo)) |
| p2 := director_basic.MyClassGet_self(gomult.(director_basic.MyClass)) |
| |
| p1.Ping() |
| p2.Vmethod(bc) |
| } |
| |
| func main() { |
| f1() |
| f2() |
| f3() |
| } |