[python] howto expose iterator / range with parameter?

Hello, I want to expose a begin and end method which takes one argument and returns an iterator as a python iterator. Here is an example: struct range_test { typedef std::list< int > my_type; typedef my_type::iterator iterator; my_type m_vals; my_type::iterator begin ( int i ) { return m_vals.begin(); } my_type::iterator end ( int i ) { return m_vals.end();} }; class_< range_test >( "range_test" ) .def( "get_iter", range( &range_test::begin, &range_test::end ) ) ; If I import this, python exists immediately without any error message. Trying it with wrappers, I get a (gcc) compile error saying my wrapper function is not a class, struct, or union type: range_test::iterator begin( range_test & t, int i ) { return t.begin( i ); } range_test::iterator end( range_test & t, int i ) { return t.end( i ); } class_< range_test >( "range_test" ) .def( "get_iter", range( &range_test::begin, &range_test::end ) ) .def( "iter_wrapper", range( begin, end ) ) ; So I'm wondering how to expose such iterators, e.g. a method taking a predicate and returning a filter_iterator. Thanks for any help Jörg
participants (1)
-
Jörg Becker