%module complextest %include %{ #include #include #include %} %include %template(VectorStdCplx) std::vector >; %inline { std::complex Conj(std::complex a) { return std::conj(a); } std::complex Conjf(std::complex a) { return std::conj(a); } std::vector > CopyHalf(std::vector > a) { std::vector > b(a.size()/2); std::copy(a.begin(), a.begin()+a.size()/2, b.begin()); return b; } using namespace std; struct ComplexPair { std::complex z1; complex z2; }; const complex& Conj2(const complex& a) { static complex ret; ret = std::conj(a); return ret; } const complex& Conjf2(const complex& a) { static complex ret; ret = std::conj(a); return ret; } const vector >& CopyHalfRef(const vector >& a) { static vector > b; b = CopyHalf(a); return b; } }