diff options
Diffstat (limited to 'Examples/test-suite/typemap_various.i')
| -rw-r--r-- | Examples/test-suite/typemap_various.i | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/Examples/test-suite/typemap_various.i b/Examples/test-suite/typemap_various.i new file mode 100644 index 0000000..0b7035e --- /dev/null +++ b/Examples/test-suite/typemap_various.i @@ -0,0 +1,57 @@ +%module typemap_various + +// %copyctor need to be disables since 'const SWIGTYPE &' is intended to generate errors +%nocopyctor; + +%typemap(in) SWIGTYPE "_this_will_not_compile_SWIGTYPE_" +%typemap(in) const SWIGTYPE & "_this_will_not_compile_const_SWIGTYPE_REF_" + +%inline %{ +template <class T> struct Foo { + Foo() {} +#ifdef SWIG + // These typemaps should be used by foo1 and foo2 + %typemap(in) Foo<T> "/*in typemap for Foo<T> */" + %typemap(in) const Foo & "/*in typemap for const Foo&, with type T*/" +#endif +}; +%} + +%template(FooInt) Foo<int>; +%template() Foo<short>; // previously Foo<short> typemaps were being picked up for Python only + +%inline %{ +void foo1(Foo<int> f, const Foo<int>& ff) {} +void foo2(Foo<short> f, const Foo<short>& ff) {} +%} + +#ifdef SWIGUTL +%typemap(ret) int Bar1::foo() { /* hello1 */ }; +%typemap(ret) int Bar2::foo() { /* hello2 */ }; +%typemap(ret) int foo() {/* hello3 */ }; +#endif + +%inline %{ + struct Bar1 { + int foo() { return 1;} + }; + + struct Bar2 { + int foo() { return 1;} + }; +%} + + + +%newobject FFoo::Bar(bool) const ; +%typemap(newfree) char* Bar(bool) { + /* hello */ delete[] result; +} + +%inline { + class FFoo { + public: + char * Bar(bool b) const { return (char *)"x"; } + }; +} + |
