1package main
2
3import "swigtests/director_detect"
4
5type MyBar struct {
6	val int
7} // From director_detect.Bar
8
9func NewMyBar() director_detect.Bar {
10	return director_detect.NewDirectorBar(&MyBar{2})
11}
12
13func (p *MyBar) Get_value() int {
14	p.val++
15	return p.val
16}
17
18func (p *MyBar) Get_class() director_detect.A {
19	p.val++
20	return director_detect.NewA()
21}
22
23func (p *MyBar) Just_do_it() {
24	p.val++
25}
26
27func (p *MyBar) Clone() director_detect.Bar {
28	return director_detect.NewDirectorBar(&MyBar{p.val})
29}
30
31func main() {
32	b := NewMyBar()
33
34	f := b.Baseclass()
35
36	v := f.Get_value()
37	_ = f.Get_class()
38	f.Just_do_it()
39
40	c := b.DirectorInterface().(*MyBar).Clone()
41	vc := c.Get_value()
42
43	if (v != 3) || (b.DirectorInterface().(*MyBar).val != 5) || (vc != 6) {
44		panic("Bad virtual detection")
45	}
46}
47