Smart pointer to %ignored class doesn't expose inherited methods fix.

Regression introduced in swig-3.0.9 by 3efdbc8
Closes #690
This commit is contained in:
William S Fulton 2016-05-31 22:10:37 +01:00
commit b9ca9f5efc
5 changed files with 58 additions and 3 deletions

View file

@ -363,6 +363,7 @@ CPP_TEST_CASES += \
smart_pointer_const2 \
smart_pointer_const_overload \
smart_pointer_extend \
smart_pointer_ignore \
smart_pointer_member \
smart_pointer_multi \
smart_pointer_multi_typedef \

View file

@ -0,0 +1,19 @@
import smart_pointer_ignore.*;
public class smart_pointer_ignore_runme {
static {
try {
System.loadLibrary("smart_pointer_ignore");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
System.exit(1);
}
}
public static void main(String argv[]) {
DerivedPtr d = smart_pointer_ignore.makeDerived();
d.base();
d.derived();
}
}

View file

@ -0,0 +1,33 @@
%module smart_pointer_ignore
%ignore Derived;
%inline %{
class Base {
public:
void base() {}
};
class Derived : public Base {
public:
void derived() {}
};
template <class T>
class Ptr {
public:
Ptr(T *t) : ptr(t) {}
T * operator->() const { return ptr; }
private:
T *ptr;
};
%}
%template(DerivedPtr) Ptr<Derived>;
%inline %{
Ptr<Derived> makeDerived() {
return Ptr<Derived>(new Derived());
}
%}