|  | 
<boost/python/stl_iterator.hpp> provides types for creating C++ Iterators from Python iterables.
          Instances of stl_input_iterator<T> hold a Python iterator and adapt it
          for use with STL algorithms. stl_input_iterator<T> satisfies the requirements for an Input
          Iterator.
        
| Template Parameter | Requirements | Semantics | Default | 
|---|---|---|---|
| ValueType | ValueType must be CopyConstructible. | 
                    Dereferencing an instance of  | None | 
namespace boost { namespace python { template <class ValueType> struct stl_input_iterator { typedef std::ptrdiff_t difference_type; typedef ValueType value_type; typedef ValueType* pointer; typedef ValueType reference; typedef std::input_iterator_tag iterator_category; stl_input_iterator(); stl_input_iterator(object const& ob); stl_input_iterator& operator++(); stl_input_iterator operator++(int); ValueType operator*() const; friend bool operator==(stl_input_iterator const& lhs, stl_input_iterator const& rhs); friend bool operator!=(stl_input_iterator const& lhs, stl_input_iterator const& rhs); private: object it; // For exposition only object ob; // For exposition only }; }}
stl_input_iterator()
Creates a past-the-end input iterator, useful for signifying the end of a sequence.
                this is past-the-end
              
Nothing.
stl_input_iterator(object const& ob)
Calls ob.attr("__iter__")() and stores the resulting Python iterator object in this->it. Then, calls this->it.attr("next")() and stores the result in this->ob. If the sequence is exhausted, sets this->ob to object().
this is a dereferenceable or past-the-end.
stl_input_iterator &operator++()
Calls this->it.attr("next")() and stores the result in this->ob. If the sequence is exhausted, sets this->ob to object().
this is a dereferenceable or past-the-end.
                *this
              
stl_input_iterator &operator++(int)
                stl_input_iterator tmp =
                *this; ++*this; return tmp;
              
this is a dereferenceable or past-the-end.
ValueType operator*() const
Returns the current element in the sequence.
                extract<ValueType>(this->ob);
              
friend bool operator==(stl_input_iterator const& lhs, stl_input_iterator const& rhs)
Returns true if both iterators are dereferenceable or if both iterators are past-the-end, false otherwise.
                (lhs.ob == object()) == (rhs.ob == object())
              
friend bool operator!=(stl_input_iterator const& lhs, stl_input_iterator const& rhs)
Returns false if both iterators are dereferenceable or if both iterators are past-the-end, true otherwise.
                !(lhs
                == rhs)
              
#include <boost/python/object.hpp> #include <boost/python/stl_iterator.hpp> #include <list> using namespace boost::python; std::list<int> sequence_to_int_list(object const& ob) { stl_input_iterator<int> begin(ob), end; return std::list<int>(begin, end); }