Wrapping a nested c++ container to python

Hello I have some trouble with handling c++-container. I have these code: typedef struct foo { typedef std::vector<double> pt_coords; typedef std::vector<pt_coords> pt_list; }; foo return_foo(); Now I want to wrap these, but I don't know how! I have test this, but I think it's wrong: BOOST_PYTHON_MODULE(...) { implicitly_convertible<foo::pt_coords,tuple>(); implicitly_convertible<foo::pt_list,list>(); } By using this in Python I get: TypeError: No Python class registered for C++ class std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > > How to do this right? Greetings

Hi, You can use the provided vector indexing suite. If I remember well, all you have to do is including the header and defining a vector class for each type of vector you want to use: #include <boost/python/suite/indexing/vector_indexing_suite.hpp> class_<std::vector<pt_coords> >("coords_vector") .def(vector_indexing_suite<std::vector<pt_coords> >()) ; Your vector will be a known class once in Python, and you'll be able to use it like a Python list. Bruno

Thanks, but the wrapped classes has not the same behavior as python list, but its a solution ... Greetings
participants (2)
-
Bruno Lalande
-
RR