%module multiple_inheritance_interfaces %warnfilter(SWIGWARN_RUBY_MULTIPLE_INHERITANCE, SWIGWARN_D_MULTIPLE_INHERITANCE, SWIGWARN_PHP_MULTIPLE_INHERITANCE); /* languages not supporting multiple inheritance or %interface */ #if defined(SWIGJAVA) || defined(SWIGCSHARP) %include "swiginterface.i" %interface_custom("A", "IA", IA) %interface_custom("B", "IB", IB) %interface_custom("%(strip:[I])s", "I%s", IC) // same as %interface_custom("C", "IC", IC) #endif %inline %{ struct IA { virtual void ia() {}; virtual void ia(const char *s, bool b = true) {} virtual void ia(int i) {} virtual ~IA() {} }; struct IB { virtual ~IB() {} virtual void ib() {} }; struct IC : IA, IB {}; struct D : IC {}; struct E : D {}; %} #if defined(SWIGJAVA) || defined(SWIGCSHARP) %interface_custom("J", "IJ", IJ) %interface_custom("K", "IK", IK) %interface_custom("L", "IL", IL) #endif %inline %{ struct IJ { virtual ~IJ() {}; virtual void ij() {} }; struct IK : IJ {}; struct IL : IK {}; struct M : IL {}; %} #if defined(SWIGJAVA) || defined(SWIGCSHARP) %interface_custom("Q", "IQ", IQ) #endif %inline %{ struct P { virtual ~P() {} virtual void p() {} }; struct IQ { virtual ~IQ() {} virtual void iq() {} }; struct R : IQ, P {}; struct S : P, IQ {}; struct T : IQ {}; struct U : R {}; struct V : S {}; struct W : T {}; %} #if defined(SWIGJAVA) || defined(SWIGCSHARP) %interface_impl(BaseOverloaded); #endif %inline %{ struct BaseOverloaded { typedef P PTypedef; virtual ~BaseOverloaded() {} virtual void identical_overload(int i, const PTypedef &pp = PTypedef()) {} }; struct DerivedOverloaded : public BaseOverloaded { virtual void identical_overload(int i, const PTypedef &p = PTypedef()) {} }; %}