Port QtCore from QScoped- to std::unique_ptr [1/2]: private uses

This patch series is in preparation of enabling QT_NO_SCOPED_POINTER
when building QtCore, a prerequisite for enabling this opt-out in leaf
modules.

This first part of the patch series ports objects whose use cannot
"leak" into other modules, e.g. because they are in .cpp files or are
private members and is thus SC (and, as demonstrated by various static
assertions we put into the source code over the years, BC).

The second patch will deal with objects in protected and public APIs,
and thus might be QUIP-6 SiC Type A.

Task-number: QTBUG-132213
Change-Id: If4967f6e563a4e7d74550fad4c6d354fad1beef5
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
(cherry picked from commit 63f1c6fcbab5f36809ffc96ac5ff6cb9e01e70bb)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2024-12-28 12:38:33 +01:00 committed by Qt Cherry-pick Bot
parent 3ea877a844
commit 5cd16659ff
15 changed files with 36 additions and 19 deletions

View File

@ -6,6 +6,8 @@
#include <QtCore/qdir.h>
#include <memory>
QT_BEGIN_NAMESPACE
class QDirIteratorPrivate;
@ -44,7 +46,7 @@ public:
private:
Q_DISABLE_COPY(QDirIterator)
QScopedPointer<QDirIteratorPrivate> d;
std::unique_ptr<QDirIteratorPrivate> d;
friend class QDir;
};

View File

@ -19,6 +19,8 @@
#include "qfilesystemiterator_p.h"
#include "qdir.h"
#include <memory>
#ifndef QT_NO_FILESYSTEMITERATOR
QT_BEGIN_NAMESPACE
@ -37,7 +39,7 @@ public:
QFileInfo currentFileInfo() const override;
private:
mutable QScopedPointer<QFileSystemIterator> nativeIterator;
mutable std::unique_ptr<QFileSystemIterator> nativeIterator;
};
QT_END_NAMESPACE

View File

@ -19,6 +19,8 @@
#error qiodevice.h must be included before any header file that defines open
#endif
#include <memory>
QT_BEGIN_NAMESPACE
@ -137,7 +139,7 @@ protected:
void setErrorString(const QString &errorString);
#ifdef QT_NO_QOBJECT
QScopedPointer<QIODevicePrivate> d_ptr;
std::unique_ptr<QIODevicePrivate> d_ptr;
#endif
private:

View File

@ -31,7 +31,7 @@ class Q_CORE_EXPORT QSettings
#ifndef QT_NO_QOBJECT
Q_OBJECT
#else
QScopedPointer<QSettingsPrivate> d_ptr;
std::unique_ptr<QSettingsPrivate> d_ptr;
#endif
Q_DECLARE_PRIVATE(QSettings)

View File

@ -9,6 +9,8 @@
#include <QtCore/qstring.h>
#include <QtCore/qscopedpointer.h>
#include <memory>
QT_BEGIN_NAMESPACE
#if QT_CONFIG(systemsemaphore)
@ -65,7 +67,7 @@ public:
private:
Q_DISABLE_COPY(QSystemSemaphore)
QScopedPointer<QSystemSemaphorePrivate> d;
std::unique_ptr<QSystemSemaphorePrivate> d;
};
#endif // QT_CONFIG(systemsemaphore)

View File

@ -1914,7 +1914,7 @@ void QCoreApplicationPrivate::sendPostedEvents(QObject *receiver, int event_type
locker.unlock();
const auto relocker = qScopeGuard([&locker] { locker.lock(); });
QScopedPointer<QEvent> event_deleter(e); // will delete the event (with the mutex unlocked)
const std::unique_ptr<QEvent> event_deleter(e); // will delete the event (with the mutex unlocked)
// after all that work, it's time to deliver the event.
QCoreApplication::sendEvent(r, e);

View File

@ -218,7 +218,7 @@ protected:
QCoreApplication(QCoreApplicationPrivate &p);
#ifdef QT_NO_QOBJECT
QScopedPointer<QCoreApplicationPrivate> d_ptr;
std::unique_ptr<QCoreApplicationPrivate> d_ptr;
#endif
private:

View File

@ -92,7 +92,7 @@ public:
private:
Q_DISABLE_COPY_MOVE(QJniEnvironment)
QScopedPointer<QJniEnvironmentPrivate> d;
std::unique_ptr<QJniEnvironmentPrivate> d;
};
QT_END_NAMESPACE

View File

@ -489,7 +489,7 @@ public:
static QAndroidActivityResultReceiverPrivate *get(QAndroidActivityResultReceiver *publicObject)
{
return publicObject->d.data();
return publicObject->d.get();
}
};
@ -513,7 +513,7 @@ QAndroidActivityResultReceiver::QAndroidActivityResultReceiver()
: d(new QAndroidActivityResultReceiverPrivate)
{
d->q = this;
QtAndroidPrivate::registerActivityResultListener(d.data());
QtAndroidPrivate::registerActivityResultListener(d.get());
}
/*!
@ -521,7 +521,7 @@ QAndroidActivityResultReceiver::QAndroidActivityResultReceiver()
*/
QAndroidActivityResultReceiver::~QAndroidActivityResultReceiver()
{
QtAndroidPrivate::unregisterActivityResultListener(d.data());
QtAndroidPrivate::unregisterActivityResultListener(d.get());
}
/*!

View File

@ -28,6 +28,8 @@
#include <QtCore/qfuture.h>
#endif
#include <memory>
QT_BEGIN_NAMESPACE
class QAndroidParcel;
@ -103,7 +105,7 @@ private:
friend class QAndroidActivityResultReceiverPrivate;
Q_DISABLE_COPY(QAndroidActivityResultReceiver)
QScopedPointer<QAndroidActivityResultReceiverPrivate> d;
std::unique_ptr<QAndroidActivityResultReceiverPrivate> d;
};
class Q_CORE_EXPORT QAndroidServiceConnection
@ -170,7 +172,7 @@ private:
friend class QAndroidServicePrivate;
Q_DISABLE_COPY(QAndroidService)
QScopedPointer<QAndroidServicePrivate> d;
std::unique_ptr<QAndroidServicePrivate> d;
};
class QAndroidActivityCallbackResultReceiver: public QAndroidActivityResultReceiver

View File

@ -11,6 +11,8 @@
#include <QtCore/qstring.h>
#include <QtCore/qstringview.h>
#include <memory>
QT_REQUIRE_CONFIG(cborstreamreader);
/* X11 headers use these values too, but as defines */
@ -194,7 +196,7 @@ private:
friend QCborStreamReaderPrivate;
friend class QCborContainerPrivate;
quint64 value64;
QScopedPointer<QCborStreamReaderPrivate> d;
std::unique_ptr<QCborStreamReaderPrivate> d;
quint8 type_;
quint8 reserved[3] = {};
};

View File

@ -13,6 +13,8 @@
#include <QtCore/qfloat16.h>
#endif
#include <memory>
QT_REQUIRE_CONFIG(cborstreamwriter);
/* X11 headers use these values too, but as defines */
@ -81,7 +83,7 @@ public:
// no API for encoding chunked strings
private:
QScopedPointer<QCborStreamWriterPrivate> d;
std::unique_ptr<QCborStreamWriterPrivate> d;
};
QT_END_NAMESPACE

View File

@ -1785,7 +1785,7 @@ static QCborValue taggedValueFromCbor(QCborStreamReader &reader, int remainingRe
extern void qt_cbor_stream_set_error(QCborStreamReaderPrivate *d, QCborError error);
inline void QCborContainerPrivate::setErrorInReader(QCborStreamReader &reader, QCborError error)
{
qt_cbor_stream_set_error(reader.d.data(), error);
qt_cbor_stream_set_error(reader.d.get(), error);
}
extern QCborStreamReader::StringResultCode qt_cbor_append_string_chunk(QCborStreamReader &reader, QByteArray *data);

View File

@ -11,6 +11,7 @@
#include <QtCore/qttypetraits.h>
#include <iterator> // std::distance(), std::next()
#include <memory>
#ifdef Status
#error qdatastream.h must be included before any header file that defines Status
@ -216,7 +217,7 @@ public:
private:
Q_DISABLE_COPY(QDataStream)
QScopedPointer<QDataStreamPrivate> d;
std::unique_ptr<QDataStreamPrivate> d;
QIODevice *dev = nullptr;
bool owndev = false;

View File

@ -13,6 +13,8 @@
#include <QtCore/qscopedpointer.h>
#include <QtCore/qstring.h>
#include <memory>
QT_BEGIN_NAMESPACE
namespace QtPrivate {
@ -361,7 +363,7 @@ private:
Q_DISABLE_COPY(QXmlStreamReader)
Q_DECLARE_PRIVATE(QXmlStreamReader)
QScopedPointer<QXmlStreamReaderPrivate> d_ptr;
std::unique_ptr<QXmlStreamReaderPrivate> d_ptr;
};
#endif // feature xmlstreamreader
@ -461,7 +463,7 @@ public:
private:
Q_DISABLE_COPY(QXmlStreamWriter)
Q_DECLARE_PRIVATE(QXmlStreamWriter)
QScopedPointer<QXmlStreamWriterPrivate> d_ptr;
std::unique_ptr<QXmlStreamWriterPrivate> d_ptr;
};
#endif // feature xmlstreamwriter