/trunk/Examples/test-suite/director_alternating.i
Swig | 36 lines | 30 code | 6 blank | 0 comment | 0 complexity | 506d269c0ee2a1b77d517398d80c8a19 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- // Checks if calls to a method being defined in the base class, not
- // overridden in the subclass, but again overridden in a class derived from
- // the first subclass are dispatched correctly.
- %module(directors="1") director_alternating;
- %feature("director") Foo;
- %inline %{
- struct Foo {
- virtual ~Foo() {}
- virtual int id() {
- return 0;
- }
- };
- struct Bar : Foo {};
- struct Baz : Bar {
- virtual int id() {
- return 2;
- }
- };
- // Note that even though the return value is of type Bar*, it really points to
- // an instance of Baz (in which id() has been overridden).
- Bar *getBar() {
- static Baz baz;
- return &baz;
- }
- // idFromGetBar() obviously is equivalent to getBar()->id() in C++ รข€“ this
- // should be true from the target language as well.
- int idFromGetBar() {
- return getBar()->id();
- }
- %}