| %module template_typemaps |
| |
| |
| %typemap(in) Integer1 |
| { |
| $1 = 0; |
| /* do nothing */ |
| } |
| |
| #ifdef SWIGCSHARP |
| %typemap(out) Integer1 { /* do nothing */ $result = 0; } |
| #else |
| %typemap(out) Integer1 { /* do nothing */ } |
| #endif |
| |
| %typemap(in) Integer2 |
| { |
| $1 = 0; |
| /* do nothing */ |
| } |
| |
| #ifdef SWIGCSHARP |
| %typemap(out) Integer2 { /* do nothing */ $result = 0; } |
| #else |
| %typemap(out) Integer2 { /* do nothing */ } |
| #endif |
| |
| #ifdef SWIGOCAML |
| %warnfilter(SWIGWARN_PARSE_KEYWORD) val; |
| #endif |
| |
| %{ |
| typedef int Integer1; |
| %} |
| |
| |
| %inline %{ |
| typedef int Integer2; |
| |
| template <class T> |
| struct Foo |
| { |
| T val; |
| |
| T get_value() const |
| { |
| return val; |
| } |
| |
| void set_value(T v) |
| { |
| val = v; |
| } |
| |
| #ifdef SWIG |
| %typemap(in) Foo* "/* in typemap for Foo, with type T */" |
| #endif |
| }; |
| %} |
| |
| %template(Foo_I1) Foo<Integer1>; |
| %template(Foo_I2) Foo<Integer2>; |
| |
| %inline %{ |
| int bar(Foo<Integer1> *foo) { |
| return 0; |
| } |
| %} |
| |
| |