From 8e382e6249e280296d5b8058c477df06c01b9d8f Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Wed, 1 Dec 2004 01:06:04 +0000 Subject: [PATCH] add smart_pointer +members test git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6809 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Examples/test-suite/common.mk | 1 + .../python/smart_pointer_member_runme.py | 19 ++++++++++ .../test-suite/smart_pointer_member.i | 36 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 SWIG/Examples/test-suite/python/smart_pointer_member_runme.py create mode 100644 SWIG/Examples/test-suite/smart_pointer_member.i 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; +%}