| %module(directors="1") director_stl |
| #pragma SWIG nowarn=SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR |
| |
| %include "std_string.i" |
| %include "std_pair.i" |
| %include "std_vector.i" |
| |
| #ifndef SWIG_STD_DEFAULT_INSTANTIATION |
| %template() std::vector<double>; |
| %template() std::vector<int>; |
| %template() std::vector<std::string>; |
| %template() std::pair<std::string, int>; |
| %template() std::pair<int,double>; |
| %template() std::pair<double,int>; |
| #endif |
| |
| %feature("director") Foo; |
| |
| %feature("director:except") { |
| if ($error != NULL) { |
| throw Swig::DirectorMethodException(); |
| } |
| } |
| |
| %exception { |
| try { $action } |
| catch (...) { SWIG_fail; } |
| } |
| |
| %inline |
| { |
| class Foo { |
| public: |
| virtual ~Foo() {} |
| |
| virtual std::string& bar(std::string& s) |
| { |
| return s; |
| } |
| |
| |
| virtual std::string ping(std::string s) = 0; |
| virtual std::string pong(const std::string& s) |
| { return std::string("Foo::pong:") + s + ":" + ping(s); } |
| |
| std::string tping(std::string s) { return ping(s); } |
| std::string tpong(const std::string& s) { return pong(s); } |
| |
| virtual std::pair<double, int> |
| pident(const std::pair<double, int>& p) { return p; } |
| |
| virtual std::vector<int> |
| vident(const std::vector<int>& p) { return p; } |
| |
| virtual std::vector<int> |
| vsecond(const std::vector<int>& p, const std::vector<int>& s) { return s; } |
| |
| std::pair<double, int> |
| tpident(const std::pair<double, int>& p) { return pident(p); } |
| |
| std::vector<int> |
| tvident(const std::vector<int>& p) { return vident(p); } |
| |
| virtual std::vector<int> |
| tvsecond(const std::vector<int>& p, const std::vector<int>& s) { return vsecond(p,s); } |
| |
| |
| virtual std::vector<std::string> |
| vidents(const std::vector<std::string>& p) { return p; } |
| |
| std::vector<std::string> |
| tvidents(const std::vector<std::string>& p) { return vidents(p); } |
| |
| }; |
| |
| } |