%module typemap_template_parms %typemap(ret) int "_this_will_not_compile_int_$symname" %extend X { %typemap(ret) T lake "/* ret lake X */" %typemap(ret) T X::rake "/* ret rake X */" // Overrides below: %typemap(ret) T take %typemap(ret) T X::take "/* ret take X */" } %inline %{ template struct X { #if defined(SWIG) %typemap(ret) T bake "/* ret bake X */" %typemap(ret) T X::make "/* ret make X */" %typemap(ret) T take "_rake_T_this_will_not_compile_" #endif T bake() { return T(); } T make() { return T(); } T lake() { return T(); } T rake() { return T(); } T take() { return T(); } }; %} %template(Xint) X; // The function name and parameter name are both 'labels' %inline %{ template void labels(T labels) {} void voido(int vooo) {} %} // TODO: R has a problem with parameter names clashing with the function name #if !defined(SWIGR) %template(ShortLabels) labels; #endif