mirror of https://github.com/swig/swig
88 lines
1.6 KiB
OpenEdge ABL
88 lines
1.6 KiB
OpenEdge ABL
/* SF Bug #445219, submitted by Krzysztof Kozminski
|
|
<kozminski@users.sf.net>.
|
|
|
|
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() {}
|
|
%}
|
|
|