[python] Fix inheriting from multiple director classes
Fix mishandling of a Python class inheriting from multiple SWIG-wrapped director classes. Fixes #422 Fixes https://sourceforge.net/p/swig/bugs/1379/
This commit is contained in:
parent
8a03c7d555
commit
e23d912b49
4 changed files with 112 additions and 0 deletions
71
Examples/test-suite/director_multiple_inheritance.i
Normal file
71
Examples/test-suite/director_multiple_inheritance.i
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
//%module(ruby_minherit="1") multiple_inheritance
|
||||
%module(directors="1") director_multiple_inheritance
|
||||
|
||||
%feature("director") A;
|
||||
%feature("director") B;
|
||||
%feature("director") C;
|
||||
%feature("director") D;
|
||||
|
||||
%inline %{
|
||||
|
||||
class A {
|
||||
public:
|
||||
virtual ~A() { }
|
||||
virtual int testA();
|
||||
};
|
||||
|
||||
class B: virtual public A {
|
||||
public:
|
||||
virtual ~B() { }
|
||||
virtual int testB();
|
||||
};
|
||||
|
||||
class C: virtual public A {
|
||||
public:
|
||||
virtual ~C() { }
|
||||
virtual int testC();
|
||||
};
|
||||
|
||||
class D: virtual public A {
|
||||
public:
|
||||
virtual ~D() { }
|
||||
virtual int testD();
|
||||
};
|
||||
|
||||
class E {
|
||||
public:
|
||||
virtual ~E() { }
|
||||
virtual int testE(B*);
|
||||
};
|
||||
|
||||
class F {
|
||||
public:
|
||||
virtual ~F() { }
|
||||
virtual int testF(C*);
|
||||
};
|
||||
|
||||
class T {
|
||||
public:
|
||||
virtual ~T() { }
|
||||
virtual int testT(D*);
|
||||
};
|
||||
|
||||
%}
|
||||
|
||||
%{
|
||||
|
||||
int A::testA() { return 1; }
|
||||
|
||||
int B::testB() { return 2; }
|
||||
|
||||
int C::testC() { return 3; }
|
||||
|
||||
int D::testD() { return 4; }
|
||||
|
||||
int E::testE(B*) { return 5; }
|
||||
|
||||
int F::testF(C*) { return 6; }
|
||||
|
||||
int T::testT(D*) { return 20; }
|
||||
|
||||
%}
|
||||
Loading…
Add table
Add a link
Reference in a new issue