24#ifndef LSST_LOG_PYOBJECTPTR_H
25#define LSST_LOG_PYOBJECTPTR_H
32namespace lsst::log::detail {
51 explicit PyObjectPtr(PyObject*
object =
nullptr) : m_object(object) {}
59 PyObjectPtr(PyObjectPtr&& other) : m_object(other.m_object) {
60 other.m_object =
nullptr;
64 ~PyObjectPtr() { Py_CLEAR(m_object); }
66 PyObjectPtr& operator=(PyObjectPtr
const& other) {
68 m_object = other.m_object;
75 m_object = other.m_object;
76 other.m_object =
nullptr;
88 operator PyObject*()
const {
return m_object; }
92 auto object = m_object;
99 PyObject*& get() {
return m_object; }
102 bool operator==(std::nullptr_t)
const {
return m_object ==
nullptr; }
103 bool operator!=(std::nullptr_t)
const {
return m_object !=
nullptr; }
107 PyObject* m_object =
nullptr;
Definition: PyObjectPtr.h:37
static PyObjectPtr from_borrowed(PyObject *object)
Definition: PyObjectPtr.h:43
PyObjectPtr(PyObject *object=nullptr)
Definition: PyObjectPtr.h:51