package main import . "swigtests/director_nested" type A struct{} // From FooBar_int func (p *A) Do_step() string { return "A::do_step;" } func (p *A) Get_value() string { return "A::get_value" } func f1() { a := NewDirectorFooBar_int(&A{}) if a.Step() != "Bar::step;Foo::advance;Bar::do_advance;A::do_step;" { panic("Bad A virtual resolution") } } type B struct{} // From FooBar_int func (p *B) Do_advance() string { return "B::do_advance;" + p.Do_step() } func (p *B) Do_step() string { return "B::do_step;" } func (p *B) Get_value() int { return 1 } func f2() { b := NewDirectorFooBar_int(&B{}) if b.Step() != "Bar::step;Foo::advance;B::do_advance;B::do_step;" { panic("Bad B virtual resolution") } } type C struct { fbi FooBar_int } // From FooBar_int func (p *C) Do_advance() string { return "C::do_advance;" + DirectorFooBar_intDo_advance(p.fbi) } func (p *C) Do_step() string { return "C::do_step;" } func (p *C) Get_value() int { return 2 } func (p *C) Get_name() string { return DirectorFooBar_intGet_name(p.fbi) + " hello" } func f3() { m := &C{nil} cc := NewDirectorFooBar_int(m) m.fbi = cc c := FooBar_intGet_self(cc) c.Advance() if c.Get_name() != "FooBar::get_name hello" { panic(0) } if c.Name() != "FooBar::get_name hello" { panic(0) } } func main() { f1() f2() f3() }