%module std_containers %include std_vector.i %include std_string.i %include std_deque.i %include std_list.i %include std_set.i %include std_pair.i %include std_map.i %include std_complex.i %template() std::vector< std::vector > ; %template(ccube) std::vector< std::vector< std::vector > >; %inline { typedef std::vector > > ccube; ccube cident(const ccube& c) { return c; } } %template(map_si) std::map; %template(set_i) std::set; %template(multiset_i) std::multiset; %template(list_i) std::list; %template(deque_i) std::deque; %template(vector_i) std::vector; %template(vector_c) std::vector >; %template(vector_ui) std::vector; %template(imatrix) std::vector >; %template(cmatrix) std::vector > >; %inline { typedef std::vector > imatrix; imatrix mident(const imatrix& v) { return v; } std::map mapidenti(const std::map& v) { return v; } std::map mapident(const std::map& v) { return v; } std::vector vident(const std::vector& v) { return v; } std::set sident(const std::set& v) { return v; } std::vector videntu(const std::vector& v) { return v; } int get_elem(const std::vector& v, int index) { return v[index]; } std::pair pident(const std::pair& p) { return p; } } %{ template struct Param { }; %} template struct Param { }; %template(Param_c) Param >; %inline { int hello(Param > c) { return 0; } } %inline { struct A { }; } %template() std::pair; %template(pair_iA) std::pair; %inline { std::pair ident(std::pair a, const std::pair& b) { return std::pair(); } }