#include <pytypes.h>
Public Types | |
using | difference_type = ssize_t |
using | iterator_category = std::input_iterator_tag |
using | pointer = const handle * |
using | reference = const handle |
using | value_type = handle |
Public Member Functions | |
reference | operator* () const |
iterator & | operator++ () |
iterator | operator++ (int) |
pointer | operator-> () const |
![]() | |
template<typename T > | |
T | cast () && |
template<typename T > | |
T | cast () const & |
template<> | |
void | cast () const & |
object ()=default | |
object (const object &o) | |
Copy constructor; always increases the reference count. More... | |
object (handle h, borrowed_t) | |
object (handle h, stolen_t) | |
object (object &&other) noexcept | |
Move constructor; steals the object from other and preserves its reference count. More... | |
object & | operator= (const object &other) |
object & | operator= (object &&other) noexcept |
PYBIND11_DEPRECATED ("Use reinterpret_borrow<object>() or reinterpret_steal<object>()") object(handle h | |
handle | release () |
~object () | |
Destructor; automatically calls handle::dec_ref() More... | |
![]() | |
template<typename T > | |
T | cast () const |
template<> | |
void | cast () const |
bool | check () const |
const handle & | dec_ref () const & |
handle ()=default | |
The default constructor creates a handle with a nullptr -valued pointer. More... | |
template<typename T , detail::enable_if_t< detail::all_of< detail::none_of< std::is_base_of< handle, T >, detail::is_pyobj_ptr_or_nullptr_t< T >>, std::is_convertible< T, PyObject * >>::value, int > = 0> | |
handle (T &obj) | |
Enable implicit conversion through T::operator PyObject *() . More... | |
template<typename T , detail::enable_if_t< detail::is_pyobj_ptr_or_nullptr_t< T >::value, int > = 0> | |
handle (T ptr) | |
const handle & | inc_ref () const & |
operator bool () const | |
Return true when the handle wraps a valid Python object. More... | |
bool | operator!= (const handle &h) const |
bool | operator== (const handle &h) const |
PyObject *& | ptr () |
PyObject * | ptr () const |
Return the underlying PyObject * pointer. More... | |
Static Public Member Functions | |
static iterator | sentinel () |
![]() | |
static std::size_t | inc_ref_counter () |
Private Member Functions | |
void | advance () |
Private Attributes | |
object | value = {} |
Friends | |
bool | operator!= (const iterator &a, const iterator &b) |
bool | operator== (const iterator &a, const iterator &b) |
Additional Inherited Members | |
![]() | |
bool | is_borrowed: handle(h) { if (is_borrowed) { inc_ref() |
![]() | |
PyObject * | m_ptr = nullptr |
\rst Wraps a Python iterator so that it can also be used as a C++ input iterator
Caveat: copying an iterator does not (and cannot) clone the internal state of the Python iterable. This also applies to the post-increment operator. This iterator should only be used to retrieve the current value using operator*()
. \endrst
using iterator::difference_type = ssize_t |
using iterator::iterator_category = std::input_iterator_tag |
using iterator::pointer = const handle * |
using iterator::reference = const handle |
using iterator::value_type = handle |
|
inlinestatic |
\rst The value which marks the end of the iteration. it == iterator::sentinel()
is equivalent to catching StopIteration
in Python.
.. code-block:: cpp
void foo(py::iterator it) { while (it != py::iterator::sentinel()) {
use *it
++it; } } \endrst