/trunk/Examples/test-suite/multiple_inheritance.i
Swig | 94 lines | 74 code | 18 blank | 2 comment | 0 complexity | 4142d62e6da7c3653840f6aa4df2fb22 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* 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; }
- };
- %}