%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 struct Foo { Foo() {} #ifdef SWIG // These typemaps should be used by foo1 and foo2 %typemap(in) Foo "/*in typemap for Foo */" %typemap(in) const Foo & "/*in typemap for const Foo&, with type T*/" #endif }; %} %template(FooInt) Foo; %template() Foo; // previously Foo typemaps were being picked up for Python only %inline %{ void foo1(Foo f, const Foo& ff) {} void foo2(Foo f, const Foo& 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"; } }; }