%extend, , , , OpenStudio
, , 2 , %import .i . - , SWIG.
, , %include "foo.hpp" , . .i - :
%{
#include <sstream>
#include <iostream>
#include "foo.hpp"
%}
%include "std_iostream.i"
template <int d> class Foo {
public:
%extend {
const char *__str__() {
std::ostringstream oss(std::ostringstream::out);
oss << *self;
return oss.str().c_str();
}
}
};
%template(Foo2) Foo<2>;
%template(Foo3) Foo<3>;
SWIG hpp API:
.i :
%{
#include <sstream>
#include <iostream>
#include "foo.hpp"
%}
%include "std_iostream.i"
%include "foo.hpp"
%template(Foo2) Foo<2>;
%template(Foo3) Foo<3>;
.hpp:
#include <iostream>
template <int d> class Foo {
public:
#ifdef SWIG
%extend {
const char *__str__() {
std::ostringstream oss(std::ostringstream::out);
oss << *self;
return oss.str().c_str();
}
}
#endif
friend std::ostream &operator<<(std::ostream &os, const Foo &m) {
os << "Inside Foo class!" << std::endl;
return os;
}
};