HepMC3 event record library
Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Protected Attributes | Private Member Functions | Private Attributes | Friends
iterator Class Reference

#include <pytypes.h>

+ Inheritance diagram for iterator:
+ Collaboration diagram for iterator:

Public Types

using iterator_category = std::input_iterator_tag
 
using difference_type = ssize_t
 
using value_type = handle
 
using reference = const handle
 
using pointer = const handle *
 

Public Member Functions

iteratoroperator++ ()
 
iterator operator++ (int)
 
reference operator* () const
 
pointer operator-> () const
 
 PYBIND11_DEPRECATED ("Use reinterpret_borrow<object>() or reinterpret_steal<object>()") object(handle h
 
handle release ()
 
template<typename T >
cast () const &
 
template<typename T >
cast ()&&
 
PyObject * ptr () const
 Return the underlying PyObject * pointer. More...
 
PyObject *& ptr ()
 
const handleinc_ref () const &
 
const handledec_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
 
bool check () const
 

Static Public Member Functions

static iterator sentinel ()
 

Data Fields

bool is_borrowed: handle(h) { if (is_borrowed) inc_ref()
 

Protected Attributes

PyObject * m_ptr = nullptr
 

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)
 

Detailed Description

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

Definition at line 843 of file pytypes.h.

Member Function Documentation

const handle& dec_ref ( ) const
inlineinherited
\rst
Manually decrease the reference count of the Python object. Usually, it is
preferable to use the `object` class which derives from `handle` and calls
this function automatically. Returns a reference to itself.

Definition at line 199 of file pytypes.h.

const handle& inc_ref ( ) const
inlineinherited
\rst
Manually increase the reference count of the Python object. Usually, it is
preferable to use the `object` class which derives from `handle` and calls
this function automatically. Returns a reference to itself.

Definition at line 192 of file pytypes.h.

operator bool ( ) const
inlineexplicitinherited

Return true when the handle wraps a valid Python object.

Definition at line 207 of file pytypes.h.

bool operator== ( const handle h) const
inlineinherited
\rst
Deprecated: Check that the underlying pointers are the same.
Equivalent to ``obj1 is obj2`` in Python.

Definition at line 213 of file pytypes.h.

PyObject* ptr ( ) const
inlineinherited

Return the underlying PyObject * pointer.

Definition at line 184 of file pytypes.h.

handle release ( )
inlineinherited
\rst
Resets the internal pointer to ``nullptr`` without decreasing the
object's reference count. The function returns a raw handle to the original
Python object.

Definition at line 249 of file pytypes.h.

References handle::handle().

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

Definition at line 887 of file pytypes.h.


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