annotate DEPENDENCIES/generic/include/boost/python/stl_iterator.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 // Copyright Eric Niebler 2005.
Chris@16 2 // Distributed under the Boost Software License, Version 1.0. (See
Chris@16 3 // accompanying file LICENSE_1_0.txt or copy at
Chris@16 4 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 5 #ifndef STL_ITERATOR_EAN20051028_HPP
Chris@16 6 # define STL_ITERATOR_EAN20051028_HPP
Chris@16 7
Chris@16 8 # include <boost/python/detail/prefix.hpp>
Chris@16 9
Chris@16 10 # include <boost/python/object/stl_iterator_core.hpp>
Chris@16 11
Chris@16 12 # include <boost/iterator/iterator_facade.hpp>
Chris@16 13
Chris@16 14 namespace boost { namespace python
Chris@16 15 {
Chris@16 16
Chris@16 17 // An STL input iterator over a python sequence
Chris@16 18 template<typename ValueT>
Chris@16 19 struct stl_input_iterator
Chris@16 20 : boost::iterator_facade<
Chris@16 21 stl_input_iterator<ValueT>
Chris@16 22 , ValueT
Chris@16 23 , std::input_iterator_tag
Chris@16 24 , ValueT
Chris@16 25 >
Chris@16 26 {
Chris@16 27 stl_input_iterator()
Chris@16 28 : impl_()
Chris@16 29 {
Chris@16 30 }
Chris@16 31
Chris@16 32 // ob is the python sequence
Chris@16 33 stl_input_iterator(boost::python::object const &ob)
Chris@16 34 : impl_(ob)
Chris@16 35 {
Chris@16 36 }
Chris@16 37
Chris@16 38 private:
Chris@16 39 friend class boost::iterator_core_access;
Chris@16 40
Chris@16 41 void increment()
Chris@16 42 {
Chris@16 43 this->impl_.increment();
Chris@16 44 }
Chris@16 45
Chris@16 46 ValueT dereference() const
Chris@16 47 {
Chris@16 48 return extract<ValueT>(this->impl_.current().get())();
Chris@16 49 }
Chris@16 50
Chris@16 51 bool equal(stl_input_iterator<ValueT> const &that) const
Chris@16 52 {
Chris@16 53 return this->impl_.equal(that.impl_);
Chris@16 54 }
Chris@16 55
Chris@16 56 objects::stl_input_iterator_impl impl_;
Chris@16 57 };
Chris@16 58
Chris@16 59 }} // namespace boost::python
Chris@16 60
Chris@16 61 #endif // STL_ITERATOR_EAN20051028_HPP