diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-08-31 11:07:55 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-05 06:55:16 +0000 |
commit | 72f399ce08c58e955e94185200d70f0088cc1ff0 (patch) | |
tree | bdb5193b8f2167840b76599e12fd7d399ef2b17b /sources/pyside2/libpyside | |
parent | 30182c1bb7112b61b8bc29801c9ced6078e715a2 (diff) |
libpyside/PyObjectWrapper: Fix clang-tidy warnings about class definition
Rearrange definition and delete move constructor and move assignment operator.
This unearthed that the (default-generated) move assignment operator
was used (unintendedly) in:
QDataStream &operator>>(QDataStream&,PyObjectWrapper&).
Factor out a reset() method (modeled after std::unique_ptr, QScopedPointer)
for this.
Change-Id: I48c4f9ca1353984da870bb7eb3308a9f3374d309
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'sources/pyside2/libpyside')
-rw-r--r-- | sources/pyside2/libpyside/signalmanager.cpp.in | 13 | ||||
-rw-r--r-- | sources/pyside2/libpyside/signalmanager.h | 9 |
2 files changed, 17 insertions, 5 deletions
diff --git a/sources/pyside2/libpyside/signalmanager.cpp.in b/sources/pyside2/libpyside/signalmanager.cpp.in index ea0d692d8..9e2a1a9af 100644 --- a/sources/pyside2/libpyside/signalmanager.cpp.in +++ b/sources/pyside2/libpyside/signalmanager.cpp.in @@ -142,11 +142,16 @@ PyObjectWrapper::~PyObjectWrapper() Py_XDECREF(m_me); } -PyObjectWrapper& PyObjectWrapper::operator=(const PySide::PyObjectWrapper& other) +void PyObjectWrapper::reset(PyObject *o) { - Py_XINCREF(other.m_me); + Py_XINCREF(o); Py_XDECREF(m_me); - m_me = other.m_me; + m_me = o; +} + +PyObjectWrapper& PyObjectWrapper::operator=(const PySide::PyObjectWrapper& other) +{ + reset(other.m_me); return *this; } @@ -207,7 +212,7 @@ QDataStream &operator>>(QDataStream& in, PyObjectWrapper& myObj) Shiboken::AutoDecRef value(PyObject_CallFunctionObjArgs(eval_func, pyCode.object(), 0)); if (!value.object()) value.reset(Py_None); - myObj = PyObjectWrapper(value); + myObj.reset(value); return in; } diff --git a/sources/pyside2/libpyside/signalmanager.h b/sources/pyside2/libpyside/signalmanager.h index c4d57c333..745c1e55a 100644 --- a/sources/pyside2/libpyside/signalmanager.h +++ b/sources/pyside2/libpyside/signalmanager.h @@ -53,12 +53,19 @@ namespace PySide class PYSIDE_API PyObjectWrapper { public: + PyObjectWrapper(PyObjectWrapper&&) = delete; + PyObjectWrapper& operator=(PyObjectWrapper &&) = delete; + PyObjectWrapper(); explicit PyObjectWrapper(PyObject* me); PyObjectWrapper(const PyObjectWrapper &other); + PyObjectWrapper& operator=(const PyObjectWrapper &other); + + void reset(PyObject *o); + ~PyObjectWrapper(); operator PyObject*() const; - PyObjectWrapper& operator=(const PyObjectWrapper &other); + private: PyObject* m_me; }; |