Thomas Daniel wrote:

BOOST_PYTHON_MODULE(vegetables)
{
   class_<Garden>("Garden")
       .def("get_potatoes", &Garden::get_potatoes)
       .def("get_tomatoes", &Garden::get_tomatoes)
   ;
   class_<TomatoIter>("TomatoIter")
       .def("__iter__", &TomatoIter::get_next)
   ;
}

That at least compiles - unlike all my previous attempts that generate three pages of template errors - but python complain:

TypeError: iter() returned non-iterator of type 'Tomato'

so now I am trying to figure out how to tell boost that get_tomatoes returns an iterator ...


Please don't top-post, guys

As you know, python iterators have a function next() that returns the next object in the iteree, or throw StopIteration when they're at the end. As you also know, python expects member functions __iter__() to return an iterator. Is the thing returned by TomatoIter::get_next an iterator, ie does it implement the iterator interface?

-t

_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to