mirror of https://github.com/swig/swig
95 lines
2.0 KiB
OpenEdge ABL
95 lines
2.0 KiB
OpenEdge ABL
/* This was broken in the perl module. See bug 962115
|
|
It tests basic multiple inheritance */
|
|
|
|
%module(ruby_minherit="1") multiple_inheritance
|
|
|
|
%warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
|
|
SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
|
|
SWIGWARN_D_MULTIPLE_INHERITANCE,
|
|
SWIGWARN_PHP_MULTIPLE_INHERITANCE) FooBar; /* C#, D, Java, PHP multiple inheritance */
|
|
|
|
%warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
|
|
SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
|
|
SWIGWARN_D_MULTIPLE_INHERITANCE,
|
|
SWIGWARN_PHP_MULTIPLE_INHERITANCE) FooBarSpam; /* C#, D, Java, PHP multiple inheritance */
|
|
|
|
|
|
%inline %{
|
|
|
|
class Bar {
|
|
public:
|
|
virtual ~Bar()
|
|
{
|
|
}
|
|
|
|
virtual int bar() { return 1; }
|
|
};
|
|
|
|
class Foo {
|
|
public:
|
|
virtual ~Foo()
|
|
{
|
|
}
|
|
|
|
virtual int foo() { return 2; }
|
|
};
|
|
|
|
template<class T> class Spam {
|
|
public:
|
|
virtual ~Spam()
|
|
{
|
|
}
|
|
|
|
virtual int spam(const T& t) { return 100; }
|
|
};
|
|
%}
|
|
|
|
%template(SpamInt) Spam<int>;
|
|
|
|
%inline %{
|
|
class FooBar : public Foo, public Bar {
|
|
public:
|
|
virtual int fooBar() { return 3; }
|
|
};
|
|
|
|
class FooBarSpam : public Foo, public Bar, public Spam<int> {
|
|
public:
|
|
virtual int fooBarSpam() { return 4; }
|
|
};
|
|
|
|
%}
|
|
|
|
// Languages that don't support multiple inheritance should inherit from one of the non-ignored classes
|
|
%ignore IgnoreMe;
|
|
%ignore IgnoreMeToo;
|
|
|
|
%inline %{
|
|
class IgnoreMe {
|
|
public:
|
|
virtual int ignoreme() { return 5; }
|
|
virtual ~IgnoreMe() {}
|
|
};
|
|
class IgnoreMeToo {
|
|
public:
|
|
virtual int ignoremetoo() { return 6; }
|
|
virtual ~IgnoreMeToo() {}
|
|
};
|
|
class IgnoreDerived1 : public IgnoreMe, public Bar {
|
|
public:
|
|
virtual int ignorederived1() { return 7; }
|
|
};
|
|
class IgnoreDerived2 : public IgnoreMe, public IgnoreMeToo, public Bar {
|
|
public:
|
|
virtual int ignorederived2() { return 8; }
|
|
};
|
|
class IgnoreDerived3 : public IgnoreMe, public Bar, public IgnoreMeToo {
|
|
public:
|
|
virtual int ignorederived3() { return 9; }
|
|
};
|
|
class IgnoreDerived4 : public Bar, public IgnoreMe, public IgnoreMeToo {
|
|
public:
|
|
virtual int ignorederived4() { return 10; }
|
|
};
|
|
%}
|
|
|