mirror of https://github.com/swig/swig
77 lines
1.8 KiB
OpenEdge ABL
77 lines
1.8 KiB
OpenEdge ABL
%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); }
|
|
|
|
};
|
|
|
|
}
|