/* SF Bug #445219, submitted by Krzysztof Kozminski . Swig 1.3.6 gets confused by pure virtual destructors, as in this file: */ %module(ruby_minherit="1") pure_virtual %warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE, SWIGWARN_CSHARP_MULTIPLE_INHERITANCE, SWIGWARN_D_MULTIPLE_INHERITANCE, SWIGWARN_PHP_MULTIPLE_INHERITANCE) E; /* C#, D, Java, PHP multiple inheritance */ #ifdef SWIGOCAML %warnfilter(SWIGWARN_PARSE_KEYWORD) method; #endif %nodefaultctor C; %nodefaultdtor C; %nodefaultctor E; %nodefaultdtor E; %inline %{ class A { public: A() { }; virtual ~A() = 0; virtual void something() = 0; virtual void method() = 0; }; class B : public A { public: B() {}; virtual ~B() { }; virtual void something() { }; virtual void method() { }; }; /* class C is abstract because it doesn't define all methods in A */ class C : public A { public: virtual ~C() { }; virtual void method() { }; } ; /* class D is not abstract, it defines everything */ class D : public C { public: virtual ~D() { }; virtual void something() { }; } ; /* Another abstract class */ class AA { public: virtual ~AA() { } virtual void method2() = 0; }; /* Multiple inheritance between two abstract classes */ class E : public C, public AA { public: virtual void something() { }; }; %} /* Fill in method from AA. This class should be constructable */ #if defined(SWIGCSHARP) || defined(SWIGD) %ignore F::method2(); // Work around for lack of multiple inheritance support - base AA is ignored. #endif %inline %{ class F : public E { public: virtual void method2() { } }; %} %{ A::~A() {} %}