mirror of
https://github.com/boostorg/python.git
synced 2026-01-20 04:42:28 +00:00
Commands used: svn merge https://svn.boost.org/svn/boost/branches/release/boost/python https://svn.boost.org/svn/boost/trunk/boost/python /net/chevy/raid1/rwgk/boost_release/merge_attempt/boost/boost/python svn merge https://svn.boost.org/svn/boost/branches/release/libs/python https://svn.boost.org/svn/boost/trunk/libs/python /net/chevy/raid1/rwgk/boost_release/merge_attempt/boost/libs/python svn, version 1.6.4 (r38063) compiled Aug 17 2009, 13:31:03 [SVN r55629]
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
// 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)
|
|
//
|
|
// Credits:
|
|
// Andreas Kl\:ockner for fixing increment() to handle
|
|
// error conditions.
|
|
|
|
#include <boost/python/object.hpp>
|
|
#include <boost/python/handle.hpp>
|
|
#include <boost/python/object/stl_iterator_core.hpp>
|
|
|
|
namespace boost { namespace python { namespace objects
|
|
{
|
|
|
|
stl_input_iterator_impl::stl_input_iterator_impl()
|
|
: it_()
|
|
, ob_()
|
|
{
|
|
}
|
|
|
|
stl_input_iterator_impl::stl_input_iterator_impl(boost::python::object const &ob)
|
|
: it_(ob.attr("__iter__")())
|
|
, ob_()
|
|
{
|
|
this->increment();
|
|
}
|
|
|
|
void stl_input_iterator_impl::increment()
|
|
{
|
|
this->ob_ = boost::python::handle<>(
|
|
boost::python::allow_null(PyIter_Next(this->it_.ptr())));
|
|
if (PyErr_Occurred())
|
|
throw boost::python::error_already_set();
|
|
}
|
|
|
|
bool stl_input_iterator_impl::equal(stl_input_iterator_impl const &that) const
|
|
{
|
|
return !this->ob_ == !that.ob_;
|
|
}
|
|
|
|
boost::python::handle<> const &stl_input_iterator_impl::current() const
|
|
{
|
|
return this->ob_;
|
|
}
|
|
|
|
}}} // namespace boost::python::objects
|