--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ossrv_pub/boost_apis/boost/python/stl_iterator.hpp Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,61 @@
+// Copyright Eric Niebler 2005.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+#ifndef STL_ITERATOR_EAN20051028_HPP
+# define STL_ITERATOR_EAN20051028_HPP
+
+# include <boost/python/detail/prefix.hpp>
+
+# include <boost/python/object/stl_iterator_core.hpp>
+
+# include <boost/iterator/iterator_facade.hpp>
+
+namespace boost { namespace python
+{
+
+// An STL input iterator over a python sequence
+template<typename ValueT>
+struct stl_input_iterator
+ : boost::iterator_facade<
+ stl_input_iterator<ValueT>
+ , ValueT
+ , std::input_iterator_tag
+ , ValueT
+ >
+{
+ stl_input_iterator()
+ : impl_()
+ {
+ }
+
+ // ob is the python sequence
+ stl_input_iterator(boost::python::object const &ob)
+ : impl_(ob)
+ {
+ }
+
+private:
+ friend class boost::iterator_core_access;
+
+ void increment()
+ {
+ this->impl_.increment();
+ }
+
+ ValueT dereference() const
+ {
+ return extract<ValueT>(this->impl_.current().get())();
+ }
+
+ bool equal(stl_input_iterator<ValueT> const &that) const
+ {
+ return this->impl_.equal(that.impl_);
+ }
+
+ objects::stl_input_iterator_impl impl_;
+};
+
+}} // namespace boost::python
+
+#endif // STL_ITERATOR_EAN20051028_HPP