| %module functors |
| |
| // Rename operator() only if the language does not already do this by default |
| #if defined(SWIGCSHARP) || defined(SWIGGO) || defined(SWIGGUILE) || defined(SWIGJAVA) || defined(SWIGJAVASCRIPT) || defined(SWIGPHP) || defined(SWIGSCILAB) || defined(SWIGTCL) |
| %rename(Funktor) operator(); |
| #endif |
| |
| %inline %{ |
| class Functor0 { |
| int num; |
| public: |
| Functor0(int num) : num(num) {} |
| int operator()() { return -num; } |
| int operate() { return this->operator()(); } |
| }; |
| |
| class Functor1 { |
| int num; |
| public: |
| Functor1(int num) : num(num) {} |
| int operator()(int x) { return num + x; } |
| int operate(int x) { return this->operator()(x); } |
| }; |
| |
| class Functor2 { |
| int num; |
| public: |
| Functor2(int num) : num(num) {} |
| int operator()(int x, int x2) { return num + x + x2; } |
| int operate(int x, int x2) { return this->operator()(x, x2); } |
| }; |
| %} |
| |