%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); } }; }
Generated by dwww version 1.15 on Tue Jul 2 00:31:10 CEST 2024.