Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
iterator Class Reference

#include <pytypes.h>

Inheritance diagram for iterator:
Inheritance graph
[legend]

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
 
iteratoroperator++ ()
 
iterator operator++ (int)
 
pointer operator-> () const
 
- Public Member Functions inherited from object
template<typename T >
T cast () const &
 
template<typename T >
T cast () &&
 
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)
 
objectoperator= (const object &other)
 
objectoperator= (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 handledec_ref () const &
 
 handle ()=default
 The default constructor creates a handle with a nullptr-valued pointer. More...
 
template<typename T , detail::enable_if_t< detail::is_pyobj_ptr_or_nullptr_t< T >::value, int > = 0>
 handle (T ptr)
 
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...
 
const handleinc_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 ()
 
- Static Public Member Functions inherited from handle
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

- Public Attributes inherited from object
bool is_borrowed: handle(h) { if (is_borrowed) { inc_ref()
 
- Protected Attributes inherited from handle
PyObject * m_ptr = nullptr
 

Detailed Description

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*().

Definition at line 1305 of file pytypes.h.

Member Typedef Documentation

◆ difference_type

Definition at line 1308 of file pytypes.h.

◆ iterator_category

using iterator::iterator_category = std::input_iterator_tag

Definition at line 1307 of file pytypes.h.

◆ pointer

using iterator::pointer = const handle *

Definition at line 1311 of file pytypes.h.

◆ reference

using iterator::reference = const handle

Definition at line 1310 of file pytypes.h.

◆ value_type

Definition at line 1309 of file pytypes.h.

Member Function Documentation

◆ advance()

void iterator::advance ( )
inlineprivate

Definition at line 1359 of file pytypes.h.

◆ operator*()

reference iterator::operator* ( ) const
inline

Definition at line 1327 of file pytypes.h.

◆ operator++() [1/2]

iterator& iterator::operator++ ( )
inline

Definition at line 1315 of file pytypes.h.

◆ operator++() [2/2]

iterator iterator::operator++ ( int  )
inline

Definition at line 1320 of file pytypes.h.

◆ operator->()

pointer iterator::operator-> ( ) const
inline

Definition at line 1335 of file pytypes.h.

◆ sentinel()

static iterator iterator::sentinel ( )
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; } }

Definition at line 1353 of file pytypes.h.

Friends And Related Function Documentation

◆ operator!=

bool operator!= ( const iterator a,
const iterator b 
)
friend

Definition at line 1356 of file pytypes.h.

◆ operator==

bool operator== ( const iterator a,
const iterator b 
)
friend

Definition at line 1355 of file pytypes.h.

Member Data Documentation

◆ value

object iterator::value = {}
private

Definition at line 1367 of file pytypes.h.


The documentation for this class was generated from the following file:


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:41:02