diff options
Diffstat (limited to 'sources/shiboken6/tests/libsmart/smart_sharedptr.h')
-rw-r--r-- | sources/shiboken6/tests/libsmart/smart_sharedptr.h | 56 |
1 files changed, 17 insertions, 39 deletions
diff --git a/sources/shiboken6/tests/libsmart/smart_sharedptr.h b/sources/shiboken6/tests/libsmart/smart_sharedptr.h index 65a489c68..dc665810a 100644 --- a/sources/shiboken6/tests/libsmart/smart_sharedptr.h +++ b/sources/shiboken6/tests/libsmart/smart_sharedptr.h @@ -1,30 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2019 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of Qt for Python. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2019 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #ifndef SMART_SHARED_PTR_H #define SMART_SHARED_PTR_H @@ -35,37 +10,40 @@ struct SharedPtrBase { - LIB_SMART_API static void logDefaultConstructor(const void *t); - LIB_SMART_API static void logConstructor(const void *t, const void *pointee); - LIB_SMART_API static void logCopyConstructor(const void *t, const void *refData); - LIB_SMART_API static void logAssignment(const void *t, const void *refData); - LIB_SMART_API static void logDestructor(const void *t, int remainingRefCount); + LIB_SMART_API static void logDefaultConstructor(const char *instantiation, const void *t); + LIB_SMART_API static void logConstructor(const char *instantiation, const void *t, const void *pointee); + LIB_SMART_API static void logCopyConstructor(const char *instantiation, const void *t, const void *refData); + LIB_SMART_API static void logAssignment(const char *instantiation, const void *t, const void *refData); + LIB_SMART_API static void logDestructor(const char *instantiation, const void *t, int remainingRefCount); }; template <class T> class SharedPtr : public SharedPtrBase { public: - SharedPtr() { logDefaultConstructor(this); } + LIBMINIMAL_DEFAULT_MOVE(SharedPtr) + + SharedPtr() { logDefaultConstructor(typeid(T).name(), this); } SharedPtr(T *v) : mPtr(v) { - logConstructor(this, v); + logConstructor(typeid(T).name(), this, v); } SharedPtr(const SharedPtr<T> &other) : mPtr(other.mPtr) { - logCopyConstructor(this, data()); + logCopyConstructor(typeid(T).name(), this, data()); } template<class X> SharedPtr(const SharedPtr<X> &other) : mPtr(other.mPtr) { - logCopyConstructor(this, data()); + logCopyConstructor(typeid(T).name(), this, data()); } - SharedPtr& operator=(const SharedPtr& other) + SharedPtr &operator=(const SharedPtr &other) { - mPtr = other.mPtr; + if (this != &other) + mPtr = other.mPtr; return *this; } @@ -107,7 +85,7 @@ public: ~SharedPtr() { if (mPtr.use_count() >= 1) - logDestructor(this, mPtr.use_count() - 1); + logDestructor(typeid(T).name(), this, mPtr.use_count() - 1); } std::shared_ptr<T> mPtr; |