| %module xxx |
| |
| %extend FooT<int> { |
| FooT(int a) { return new FooT<T>(); } |
| ~FooT() { delete $self;} |
| int spam(const char *) { return x; } |
| int spam(int x) { return x; } |
| int spam(int x, int y) { return x + y ; } |
| int spam(int x, int y,int z) { return x + y ; } |
| int spam(Foo f, double d = 10.0) { return 0; } |
| }; |
| |
| %inline %{ |
| template<class T> |
| class FooT { |
| public: |
| FooT(){} |
| |
| #ifdef SWIG |
| %extend { FooT(int a, int b) { return new FooT<T>(); } } |
| #endif |
| |
| int spam() { return 1; } |
| int spam(const char* c) { return 2; } |
| }; |
| %} |
| |
| %template(FooTi) FooT<int>; |
| |
| |
| // After the class |
| |
| %inline %{ |
| template<class T> |
| class BarT { |
| public: |
| BarT() { } |
| int spam() { return 1; } |
| int spam(const char* c) { return 2; } |
| }; |
| %} |
| |
| |
| %extend BarT<int> { |
| BarT(int a) { return new BarT<T>(); } |
| ~BarT() { delete $self;} |
| int spam(const char *) { return 1} |
| int spam(int x) { return x; } |
| int spam(int x, int y) { return x + y ; } |
| int spam(int x, int y,int z) { return x + y ; } |
| int spam(Bar b, double d = 10.0) { return 0; } |
| }; |
| |
| %template(BarTi) BarT<int>; |