diff --git a/SWIG/Examples/test-suite/common.mk b/SWIG/Examples/test-suite/common.mk index 7ec530726..6bc3107a7 100644 --- a/SWIG/Examples/test-suite/common.mk +++ b/SWIG/Examples/test-suite/common.mk @@ -189,6 +189,7 @@ CPP_TEST_CASES += \ sizet \ smart_pointer_const \ smart_pointer_const2 \ + smart_pointer_member \ smart_pointer_multi \ smart_pointer_multi_typedef \ smart_pointer_namespace \ diff --git a/SWIG/Examples/test-suite/python/smart_pointer_member_runme.py b/SWIG/Examples/test-suite/python/smart_pointer_member_runme.py new file mode 100644 index 000000000..f8b4f2114 --- /dev/null +++ b/SWIG/Examples/test-suite/python/smart_pointer_member_runme.py @@ -0,0 +1,19 @@ +from smart_pointer_member import * + +f = Foo() +f.y = 1 + +if f.y != 1: + raise RuntimeError + +b = Bar(f) +b.y = 2 + +if f.y != 2: + raise RuntimeError + +if b.x != f.x: + raise RuntimeError + +if b.z != f.z: + raise RuntimeError diff --git a/SWIG/Examples/test-suite/smart_pointer_member.i b/SWIG/Examples/test-suite/smart_pointer_member.i new file mode 100644 index 000000000..52ca33b05 --- /dev/null +++ b/SWIG/Examples/test-suite/smart_pointer_member.i @@ -0,0 +1,36 @@ +%module smart_pointer_member + +%inline %{ + +class Foo { +public: + int x[4]; + int y; + static const int z; +}; + +class Bar { + Foo *f; +public: + Bar(Foo *f) : f(f) { } + Foo *operator->() { + return f; + } +}; + + int get_y(Bar *b) + { + return (*b)->y; + } + + int get_z(Bar *b) + { + return (*b)->z; + } + + +%} + +%{ + const int Foo::z = 3; +%}