%module typemap_namespace /* Secret typedefs */ %{ namespace Foo { typedef char Str1; typedef char Str2; } %} namespace Foo { struct Str1; struct Str2; #ifdef SWIGCSHARP %typemap(ctype) Str1 * = char *; %typemap(imtype) Str1 * = char *; %typemap(cstype) Str1 * = char *; %typemap(csin) Str1 * = char *; %typemap(csout) Str1 * = char *; #endif #ifdef SWIGJAVA %typemap(jni) Str1 * = char *; %typemap(jtype) Str1 * = char *; %typemap(jstype) Str1 * = char *; %typemap(javain) Str1 * = char *; %typemap(javaout) Str1 * = char *; #endif #ifdef SWIGGO %typemap(gotype) Str1 * = char *; #endif #ifdef SWIGD %typemap(ctype) Str1 * = char *; %typemap(imtype) Str1 * = char *; %typemap(dtype) Str1 * = char *; %typemap(din) Str1 * = char *; %typemap(dout) Str1 * = char *; #endif %typemap(in) Str1 * = char *; #if !(defined(SWIGCSHARP) || defined(SWIGLUA) || defined(SWIGPHP) || defined(SWIGMZSCHEME) || defined(SWIGOCAML) || defined(SWIGGO) || defined(SWIGD)) %typemap(freearg) Str1 * = char *; #endif %typemap(typecheck) Str1 * = char *; %apply char * { Str2 * }; } %inline %{ namespace Foo { char *test1(Str1 *s) { return s; } char *test2(Str2 *s) { return s; } } %}