%module std_containers // // STL containers test suite. // Tests: // std::complex, std::string, std::vector, std::set, std::deque, // std::pair, std::map, std::multiset, std::multimap and IN/OUT functions // for them, with C++ types. // %{ #include <set> %} %include std_vector.i %include std_string.i %include std_deque.i %include std_list.i %include std_set.i %include std_multiset.i %include std_pair.i %include std_map.i %include std_multimap.i %include std_complex.i %template() std::vector<double>; %template() std::pair<std::string, int>; %template() std::pair<int,double>; %template() std::vector< std::vector<double > > ; %template(ccube) std::vector< std::vector< std::vector<double > > >; %inline { typedef std::vector<std::vector<std::vector<double > > > ccube; ccube cident(const ccube& c) { return c; } struct C { }; } %template(map_si) std::map<std::string, int>; %template(pair_iC) std::pair<int, C*>; %template(map_iC) std::map<int, C*>; %template(mmap_si) std::multimap<std::string, int>; %template(set_i) std::set<int>; %template(multiset_i) std::multiset<int>; %template(list_i) std::list<int>; %template(deque_i) std::deque<int>; %template(vector_b) std::vector<bool>; %template(vector_i) std::vector<int>; %template(vector_c) std::vector<std::complex<double> >; %template(vector_ui) std::vector<unsigned int>; %template(bmatrix) std::vector<std::vector<bool> >; %template(imatrix) std::vector<std::vector<int> >; %template(cmatrix) std::vector<std::vector<std::complex<double> > >; %apply std::vector<int> *INOUT {std::vector<int> *INOUT2}; %inline { typedef std::vector<std::vector<int> > imatrix; imatrix midenti(const imatrix& v) { return v; } typedef std::vector<std::vector<bool> > bmatrix; bmatrix midentb(const bmatrix& v) { return v; } std::map<int,C*> mapidentc(const std::map<int,C*>& v) { return v; } std::map<int,int> mapidenti(const std::map<int,int>& v) { return v; } std::map<std::string,int> mapident(const std::map<std::string,int>& v) { return v; } std::multimap<std::string,int> mapident(const std::multimap<std::string,int>& v) { return v; } std::vector<int> vident(const std::vector<int>& v) { return v; } std::set<int> sident(const std::set<int>& v) { return v; } std::vector<unsigned int> videntu(const std::vector<unsigned int>& v) { return v; } std::vector<bool> videntb(const std::vector<bool>& v) { return v; } int get_elem(const std::vector<int>& v, int index) { return v[index]; } std::pair<int,double> pident(const std::pair<int,double>& p) { return p; } void v_inout(std::vector<int> *INOUT) { *INOUT = *INOUT; } void v_inout2(std::vector<int> *INOUT, std::vector<int> *INOUT2) { std::swap(*INOUT, *INOUT2); } } %{ template <class C> struct Param { }; %} template <class C> struct Param { }; %template(Param_c) Param<std::complex<double> >; %inline { int hello(Param<std::complex<double> > c) { return 0; } } %inline { struct A { A(int aa = 0) : a(aa) { } int a; }; } %template() std::pair<A,int>; %template(pair_iA) std::pair<int,A>; %template(vector_piA) std::vector<std::pair<int,A> >; %inline { std::pair<A,int> ident(std::pair<int,A> a, const std::pair<int,int>& b) { return std::pair<A,int>(); } std::vector<std::pair<int,A> > pia_vident(std::vector<std::pair<int,A> > a ) { return a; } struct Foo { int x; Foo(int i) : x(i) { } }; } %std_nodefconst_type(Foo); %template(vector_Foo) std::vector<Foo>; %template(deque_Foo) std::deque<Foo>; %template(list_Foo) std::list<Foo>;
Generated by dwww version 1.15 on Tue Jul 2 00:22:11 CEST 2024.