diff options
Diffstat (limited to 'Examples/test-suite/smart_pointer_namespace2.i')
| -rw-r--r-- | Examples/test-suite/smart_pointer_namespace2.i | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Examples/test-suite/smart_pointer_namespace2.i b/Examples/test-suite/smart_pointer_namespace2.i new file mode 100644 index 0000000..8827998 --- /dev/null +++ b/Examples/test-suite/smart_pointer_namespace2.i @@ -0,0 +1,80 @@ + +%module smart_pointer_namespace2 +%{ +namespace one +{ + template <typename T> + class Ptr + { + T* p; + public: + Ptr(T *tp) : p(tp) {} + ~Ptr() { }; + T* operator->() { return p; } + }; +} +namespace one +{ + class Obj1 + { + public: + Obj1() {} + void donothing() {} + }; + typedef one::Ptr<Obj1> Obj1_ptr; +} + +namespace two +{ + class Obj2 + { + public: + Obj2() {} + void donothing() {} + }; + typedef one::Ptr<Obj2> Obj2_ptr; +} +%} + +namespace one +{ + template <typename T> + class Ptr + { + T* p; + public: + Ptr(T *tp) : p(tp) {} + ~Ptr() { }; + T* operator->() { return p; } + }; +} + +%define PTR_DEF(o) +typedef one::Ptr<o> o ## _ptr; +%template(o ## _ptr) one::Ptr<o>; +%enddef + +namespace one +{ + class Obj1 + { + public: + Obj1() {} + void donothing() {} + }; + + PTR_DEF(Obj1) +} + +namespace two +{ + class Obj2 + { + public: + Obj2() {} + void donothing() {} + }; + + PTR_DEF(Obj2) +} + |
