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() }