cppyabm  1.0.17
An agent-based library to integrate C++ and Python
Classes | Public Member Functions | Public Attributes | Friends | List of all members
object Class Reference

#include <pytypes.h>

Inheritance diagram for object:
handle bool_ buffer bytes capsule conftest.Capture conftest.Output conftest.SanitizedString dict dtype ellipsis exception< type > float_ function generic_type int_ iterable iterator list memoryview module_ none pybind11.setup_helpers.ParallelCompile sequence set slice staticmethod str tuple type weakref

Classes

struct  borrowed_t
 
struct  stolen_t
 

Public Member Functions

 object ()=default
 
 PYBIND11_DEPRECATED ("Use reinterpret_borrow<object>() or reinterpret_steal<object>()") object(handle h
 
 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 ()
 Destructor; automatically calls handle::dec_ref() More...
 
handle release ()
 
objectoperator= (const object &other)
 
objectoperator= (object &&other) noexcept
 
template<typename T >
cast () const &
 
template<typename T >
cast () &&
 
 object (handle h, borrowed_t)
 
 object (handle h, stolen_t)
 
template<typename T >
cast () const &
 
template<typename T >
cast () &&
 
template<>
void cast () const &
 
template<>
void cast () &&
 
- Public Member Functions inherited from handle
 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...
 
PyObject * ptr () const
 Return the underlying PyObject * pointer. More...
 
PyObject *& ptr ()
 
const handleinc_ref () const &
 
const handledec_ref () const &
 
template<typename T >
cast () 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
 
template<>
void cast () const
 

Public Attributes

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

Friends

template<typename T >
reinterpret_borrow (handle)
 
template<typename T >
reinterpret_steal (handle)
 

Additional Inherited Members

- Protected Attributes inherited from handle
PyObject * m_ptr = nullptr
 

Detailed Description

\rst Holds a reference to a Python object (with reference counting)

Like handle, the object class is a thin wrapper around an arbitrary Python object (i.e. a PyObject * in Python's C API). In contrast to handle, it optionally increases the object's reference count upon construction, and it always* decreases the reference count when the object instance goes out of scope and is destructed. When using object instances consistently, it is much easier to get reference counting right at the first attempt. \endrst

Definition at line 232 of file pytypes.h.

Constructor & Destructor Documentation

◆ object() [1/5]

object::object ( )
default

◆ object() [2/5]

object::object ( const object o)
inline

Copy constructor; always increases the reference count.

Definition at line 238 of file pytypes.h.

◆ object() [3/5]

object::object ( object &&  other)
inlinenoexcept

Move constructor; steals the object from other and preserves its reference count.

Definition at line 240 of file pytypes.h.

◆ ~object()

object::~object ( )
inline

Destructor; automatically calls handle::dec_ref()

Definition at line 242 of file pytypes.h.

◆ object() [4/5]

object::object ( handle  h,
borrowed_t   
)
inline

Definition at line 289 of file pytypes.h.

◆ object() [5/5]

object::object ( handle  h,
stolen_t   
)
inline

Definition at line 290 of file pytypes.h.

Member Function Documentation

◆ cast() [1/6]

template<typename T >
T object::cast ( ) &&

Definition at line 1832 of file cast.h.

◆ cast() [2/6]

template<>
void object::cast ( ) &&
inline

Definition at line 1834 of file cast.h.

◆ cast() [3/6]

template<typename T >
T object::cast ( ) &&

◆ cast() [4/6]

template<typename T >
T object::cast ( ) const &

Definition at line 1831 of file cast.h.

◆ cast() [5/6]

template<>
void object::cast ( ) const &
inline

Definition at line 1833 of file cast.h.

◆ cast() [6/6]

template<typename T >
T object::cast ( ) const &

◆ operator=() [1/2]

object& object::operator= ( const object other)
inline

Definition at line 255 of file pytypes.h.

◆ operator=() [2/2]

object& object::operator= ( object &&  other)
inlinenoexcept

Definition at line 262 of file pytypes.h.

◆ PYBIND11_DEPRECATED()

object::PYBIND11_DEPRECATED ( "Use reinterpret_borrow<object>() or reinterpret_steal<object>()"  )

◆ release()

handle object::release ( )
inline

\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. \endrst

Definition at line 249 of file pytypes.h.

Friends And Related Function Documentation

◆ reinterpret_borrow

template<typename T >
T reinterpret_borrow ( handle  h)
friend

\rst Declare that a handle or PyObject * is a certain type and borrow the reference. The target type T must be object or one of its derived classes. The function doesn't do any conversions or checks. It's up to the user to make sure that the target type is correct.

.. code-block:: cpp

PyObject *p = PyList_GetItem(obj, index);
py::object o = reinterpret_borrow<py::object>(p);

or py::tuple t = reinterpret_borrow<py::tuple>(p); // <– p must be already be a tuple \endrst

Definition at line 306 of file pytypes.h.

◆ reinterpret_steal

template<typename T >
T reinterpret_steal ( handle  h)
friend

\rst Like reinterpret_borrow, but steals the reference.

.. code-block:: cpp

PyObject *p = PyObject_Str(obj); py::str s = reinterpret_steal<py::str>(p); // <– p must be already be a str \endrst

Definition at line 316 of file pytypes.h.

Member Data Documentation

◆ is_borrowed

bool object::is_borrowed

Definition at line 236 of file pytypes.h.


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