When C++ methods are not able to be overloaded in a derived class, such as when they differ by just const, or the target language parameters types are identical even when the C++ parameter types are different, SWIG will ignore one of the overloaded methods with a warning. A %ignore is required to explicitly ignore one of the overloaded methods to avoid the warning message. Methods added in the derived classes due to one of the %interface macros are now similarly ignored/not added to the derived class. The adding of additional methods into the parse tree is now more robust and complete resulting in support for %feature and %rename for the added methods. Closes #1277
20 lines
469 B
OpenEdge ABL
20 lines
469 B
OpenEdge ABL
%module nested_inheritance_interface
|
|
|
|
%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(IA)
|
|
#endif
|
|
|
|
#if !defined(SWIGCSHARP) && !defined(SWIGJAVA)
|
|
%feature ("flatnested");
|
|
#endif
|
|
|
|
|
|
%inline %{
|
|
struct IA {};
|
|
struct B { struct N : IA {}; };
|
|
%}
|