LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Static Public Member Functions | List of all members
lsst::log::detail::PyObjectPtr Class Reference

Smart pointer class for PyObject instances. More...

#include <PyObjectPtr.h>

Public Member Functions

 PyObjectPtr (PyObject *object=nullptr)
 Construct a pointer from a regular "new" object reference. More...
 
 PyObjectPtr (PyObjectPtr const &other)
 
 PyObjectPtr (PyObjectPtr &&other)
 
 ~PyObjectPtr ()
 
PyObjectPtroperator= (PyObjectPtr const &other)
 
PyObjectPtroperator= (PyObjectPtr &&other)
 
PyObjectPtroperator= (PyObject *object)
 
 operator PyObject * () const
 
PyObject * release ()
 
PyObject *& get ()
 
bool operator== (std::nullptr_t) const
 
bool operator!= (std::nullptr_t) const
 

Static Public Member Functions

static PyObjectPtr from_borrowed (PyObject *object)
 Wraps a "borrowed" object reference, reference counter is incremented. More...
 

Detailed Description

Smart pointer class for PyObject instances.

Definition at line 37 of file PyObjectPtr.h.

Constructor & Destructor Documentation

◆ PyObjectPtr() [1/3]

lsst::log::detail::PyObjectPtr::PyObjectPtr ( PyObject *  object = nullptr)
inlineexplicit

Construct a pointer from a regular "new" object reference.

Definition at line 51 of file PyObjectPtr.h.

51 : m_object(object) {}

◆ PyObjectPtr() [2/3]

lsst::log::detail::PyObjectPtr::PyObjectPtr ( PyObjectPtr const &  other)
inline

Definition at line 54 of file PyObjectPtr.h.

54  : m_object(other.m_object) {
55  Py_XINCREF(m_object);
56  }

◆ PyObjectPtr() [3/3]

lsst::log::detail::PyObjectPtr::PyObjectPtr ( PyObjectPtr &&  other)
inline

Definition at line 59 of file PyObjectPtr.h.

59  : m_object(other.m_object) {
60  other.m_object = nullptr;
61  }

◆ ~PyObjectPtr()

lsst::log::detail::PyObjectPtr::~PyObjectPtr ( )
inline

Definition at line 64 of file PyObjectPtr.h.

64 { Py_CLEAR(m_object); }

Member Function Documentation

◆ from_borrowed()

static PyObjectPtr lsst::log::detail::PyObjectPtr::from_borrowed ( PyObject *  object)
inlinestatic

Wraps a "borrowed" object reference, reference counter is incremented.

Definition at line 43 of file PyObjectPtr.h.

43  {
44  Py_XINCREF(object);
45  return PyObjectPtr(object);
46  }
PyObjectPtr(PyObject *object=nullptr)
Construct a pointer from a regular "new" object reference.
Definition: PyObjectPtr.h:51

◆ get()

PyObject*& lsst::log::detail::PyObjectPtr::get ( )
inline

Definition at line 99 of file PyObjectPtr.h.

99 { return m_object; }

◆ operator PyObject *()

lsst::log::detail::PyObjectPtr::operator PyObject * ( ) const
inline

Definition at line 88 of file PyObjectPtr.h.

88 { return m_object; }

◆ operator!=()

bool lsst::log::detail::PyObjectPtr::operator!= ( std::nullptr_t  ) const
inline

Definition at line 103 of file PyObjectPtr.h.

103 { return m_object != nullptr; }

◆ operator=() [1/3]

PyObjectPtr& lsst::log::detail::PyObjectPtr::operator= ( PyObject *  object)
inline

Definition at line 80 of file PyObjectPtr.h.

80  {
81  Py_CLEAR(m_object);
82  m_object = object;
83  Py_XINCREF(m_object);
84  return *this;
85  }

◆ operator=() [2/3]

PyObjectPtr& lsst::log::detail::PyObjectPtr::operator= ( PyObjectPtr &&  other)
inline

Definition at line 73 of file PyObjectPtr.h.

73  {
74  Py_CLEAR(m_object);
75  m_object = other.m_object;
76  other.m_object = nullptr;
77  return *this;
78  }

◆ operator=() [3/3]

PyObjectPtr& lsst::log::detail::PyObjectPtr::operator= ( PyObjectPtr const &  other)
inline

Definition at line 66 of file PyObjectPtr.h.

66  {
67  Py_CLEAR(m_object);
68  m_object = other.m_object;
69  Py_XINCREF(m_object);
70  return *this;
71  }

◆ operator==()

bool lsst::log::detail::PyObjectPtr::operator== ( std::nullptr_t  ) const
inline

Definition at line 102 of file PyObjectPtr.h.

102 { return m_object == nullptr; }

◆ release()

PyObject* lsst::log::detail::PyObjectPtr::release ( )
inline

Definition at line 91 of file PyObjectPtr.h.

91  {
92  auto object = m_object;
93  m_object = nullptr;
94  return object;
95  }

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