Scarab  v2.11.1
Project 8 C++ Utility Library
Classes | Public Member Functions | Public Attributes | Friends | List of all members
object Class Reference

#include <pytypes.h>

Inheritance diagram for object:
Inheritance graph

Classes

struct  borrowed_t
 
struct  stolen_t
 

Public Member Functions

 object ()=default
 
 __attribute__ ((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...
 
 __attribute__ ((deprecated("Use obj1.is(obj2) instead"))) bool operator
 
template<>
void cast () const
 
- Public Member Functions inherited from object_api< handle >
iterator begin () const
 
iterator end () const
 Return a sentinel which ends iteration. More...
 
item_accessor operator[] (handle key) const
 
item_accessor operator[] (const char *key) const
 See above (the only difference is that they key is provided as a string literal) More...
 
obj_attr_accessor attr (handle key) const
 
str_attr_accessor attr (const char *key) const
 See above (the only difference is that they key is provided as a string literal) More...
 
args_proxy operator* () const
 
object operator* (object_api const &other) const
 
bool contains (T &&item) const
 Check if the given item is contained within this object, i.e. item in obj. More...
 
object operator() (Args &&...args) const
 
 __attribute__ ((deprecated("call(...) was deprecated in favor of operator()(...)"))) object call(Args &&... args) const
 Get or set the object's docstring, i.e. obj.__doc__. More...
 
bool is (object_api const &other) const
 Equivalent to obj is other in Python. More...
 
bool is_none () const
 Equivalent to obj is None in Python. More...
 
bool equal (object_api const &other) const
 Equivalent to obj == other in Python. More...
 
bool not_equal (object_api const &other) const
 
bool operator< (object_api const &other) const
 
bool operator<= (object_api const &other) const
 
bool operator> (object_api const &other) const
 
bool operator>= (object_api const &other) const
 
object operator- () const
 
object operator- (object_api const &other) const
 
object operator~ () const
 
object operator+ (object_api const &other) const
 
object operator+= (object_api const &other) const
 
object operator-= (object_api const &other) const
 
object operator*= (object_api const &other) const
 
object operator/ (object_api const &other) const
 
object operator/= (object_api const &other) const
 
object operator| (object_api const &other) const
 
object operator|= (object_api const &other) const
 
object operator& (object_api const &other) const
 
object operator&= (object_api const &other) const
 
object operator^ (object_api const &other) const
 
object operator^= (object_api const &other) const
 
object operator<< (object_api const &other) const
 
object operator<<= (object_api const &other) const
 
object operator>> (object_api const &other) const
 
object operator>>= (object_api const &other) const
 
int ref_count () const
 Return the object's current reference count. More...
 
handle get_type () const
 Return a handle to the Python type object underlying the instance. More...
 

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)
 

Detailed Description

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.

Definition at line 230 of file pytypes.h.

Constructor & Destructor Documentation

◆ object() [1/5]

object ( )
default

◆ object() [2/5]

object ( const object o)
inline

Copy constructor; always increases the reference count.

Definition at line 236 of file pytypes.h.

◆ object() [3/5]

object ( object &&  other)
inlinenoexcept

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

Definition at line 238 of file pytypes.h.

◆ ~object()

~object ( )
inline

Destructor; automatically calls handle::dec_ref()

Definition at line 240 of file pytypes.h.

◆ object() [4/5]

object ( handle  h,
borrowed_t   
)
inline

Definition at line 285 of file pytypes.h.

◆ object() [5/5]

object ( handle  h,
stolen_t   
)
inline

Definition at line 286 of file pytypes.h.

Member Function Documentation

◆ __attribute__()

__attribute__ ( (deprecated("Use reinterpret_borrow<object>() or reinterpret_steal<object>()"))  )

◆ cast() [1/6]

T cast ( ) const &

◆ cast() [2/6]

T cast ( ) &&

◆ cast() [3/6]

T cast ( ) const &

Definition at line 1718 of file cast.h.

◆ cast() [4/6]

T cast ( ) &&

Definition at line 1719 of file cast.h.

◆ cast() [5/6]

void cast ( ) const &
inline

Definition at line 1720 of file cast.h.

◆ cast() [6/6]

void cast ( ) &&
inline

Definition at line 1721 of file cast.h.

◆ operator=() [1/2]

object& operator= ( const object other)
inline

Definition at line 253 of file pytypes.h.

◆ operator=() [2/2]

object& operator= ( object &&  other)
inlinenoexcept

Definition at line 260 of file pytypes.h.

◆ release()

handle release ( )
inline

Resets the internal pointer to nullptr without without decreasing the object's reference count. The function returns a raw handle to the original Python object.

Definition at line 247 of file pytypes.h.

Friends And Related Function Documentation

◆ reinterpret_borrow

T reinterpret_borrow ( handle  h)
friend

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

Definition at line 302 of file pytypes.h.

◆ reinterpret_steal

T reinterpret_steal ( handle  h)
friend

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

Definition at line 312 of file pytypes.h.

Member Data Documentation

◆ is_borrowed

bool is_borrowed

Definition at line 234 of file pytypes.h.


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