#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 |
Public Member Functions inherited from object | |
template<typename T > | |
T | cast () const & |
template<typename T > | |
T | cast ()&& |
template<> | |
void | cast () const & |
template<> | |
void | cast ()&& |
object ()=default | |
object (const object &o) | |
Copy constructor; always increases the reference count. More... | |
object (object &&other) noexcept | |
Move constructor; steals the object from other and preserves its reference count. More... | |
object (handle h, borrowed_t) | |
object (handle h, stolen_t) | |
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... | |
Public Member Functions inherited from handle | |
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... | |
handle (PyObject *ptr) | |
Creates a handle from the given raw Python object pointer. More... | |
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 () const |
Return the underlying PyObject * pointer. More... | |
PyObject *& | ptr () |
Static Public Member Functions | |
static iterator | sentinel () |
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 | |
Public Attributes inherited from object | |
bool | is_borrowed: handle(h) { if (is_borrowed) inc_ref() |
Protected Attributes inherited from handle | |
PyObject * | m_ptr = nullptr |
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*()
.
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 |
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; } }