QtCore: De-duplicate vtables, 2024 edition

This de-inlines destuctors of classes whose vtables are proven to be
duplicated by -Wweak-tables using the upcoming headersclean for _p.h
feature.

Since these are all private API classes, we can pick all the way back
to 6.2, and we don't need the comment that the dtor must always stay
empty, like for public classes.

Task-number: QTBUG-45582
Task-number: QTBUG-126219
Change-Id: I8c864c0d2ed3ca20d20d5cfc356290eb529edf6c
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 3af20bd8eb8c75017c5d6d138d7c42914ee5bee3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2022-02-14 08:40:45 +01:00 committed by Qt Cherry-pick Bot
parent 8189baf26d
commit e966f3189a
16 changed files with 35 additions and 2 deletions

View File

@ -58,6 +58,9 @@
QT_BEGIN_NAMESPACE
QPropertyAnimationPrivate::~QPropertyAnimationPrivate()
= default;
void QPropertyAnimationPrivate::updateMetaProperty()
{
const QObject *target = targetObject.valueBypassingBindings();

View File

@ -29,6 +29,7 @@ class QPropertyAnimationPrivate : public QVariantAnimationPrivate
Q_DECLARE_PUBLIC(QPropertyAnimation)
public:
QPropertyAnimationPrivate() : propertyType(0), propertyIndex(-1) { }
~QPropertyAnimationPrivate() override;
void setTargetObjectForwarder(QObject *target) { q_func()->setTargetObject(target); }
Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QPropertyAnimationPrivate, QObject *, targetObject,

View File

@ -152,6 +152,9 @@ template<> Q_INLINE_TEMPLATE QLineF _q_interpolate(const QLineF &f, const QLineF
QVariantAnimationPrivate::QVariantAnimationPrivate() : duration(250), interpolator(&defaultInterpolator)
{ }
QVariantAnimationPrivate::~QVariantAnimationPrivate()
= default;
void QVariantAnimationPrivate::convertValues(int t)
{
auto type = QMetaType(t);

View File

@ -34,6 +34,7 @@ class QVariantAnimationPrivate : public QAbstractAnimationPrivate
public:
QVariantAnimationPrivate();
~QVariantAnimationPrivate() override;
static QVariantAnimationPrivate *get(QVariantAnimation *q)
{

View File

@ -32,6 +32,9 @@ static QString appendSlashIfNeeded(const QString &path)
return path;
}
QAbstractFileEnginePrivate::~QAbstractFileEnginePrivate()
= default;
/*!
\class QAbstractFileEngineHandler
\inmodule QtCore

View File

@ -246,7 +246,7 @@ public:
: fileError(QFile::UnspecifiedError)
{
}
inline virtual ~QAbstractFileEnginePrivate() { }
virtual ~QAbstractFileEnginePrivate();
QFile::FileError fileError;
QString errorString;

View File

@ -8,6 +8,9 @@
QT_BEGIN_NAMESPACE
QIdentityProxyModelPrivate::~QIdentityProxyModelPrivate()
= default;
/*!
\since 4.8
\class QIdentityProxyModel

View File

@ -29,6 +29,7 @@ public:
QIdentityProxyModelPrivate()
{
}
~QIdentityProxyModelPrivate() override;
QList<QPersistentModelIndex> layoutChangePersistentIndexes;
QModelIndexList proxyIndexes;

View File

@ -549,6 +549,8 @@ void QItemSelection::split(const QItemSelectionRange &range,
}
}
QItemSelectionModelPrivate::~QItemSelectionModelPrivate()
= default;
void QItemSelectionModelPrivate::initModel(QAbstractItemModel *m)
{

View File

@ -31,6 +31,7 @@ public:
QItemSelectionModelPrivate()
: currentCommand(QItemSelectionModel::NoUpdate),
tableSelected(false), tableColCount(0), tableRowCount(0) {}
~QItemSelectionModelPrivate() override;
QItemSelection expandSelection(const QItemSelection &selection,
QItemSelectionModel::SelectionFlags command) const;

View File

@ -14,6 +14,9 @@
QT_BEGIN_NAMESPACE
QEventLoopPrivate::~QEventLoopPrivate()
= default;
/*!
\class QEventLoop
\inmodule QtCore

View File

@ -30,6 +30,7 @@ public:
returnCode.storeRelaxed(-1);
exit.storeRelaxed(true);
}
~QEventLoopPrivate() override;
QAtomicInt quitLockRef;

View File

@ -19,6 +19,9 @@ using namespace std::chrono_literals;
QT_BEGIN_NAMESPACE
QTimerPrivate::~QTimerPrivate()
= default;
/*!
\class QTimer
\inmodule QtCore

View File

@ -35,6 +35,7 @@ public:
{
intervalDuration.notify();
}
~QTimerPrivate() override;
static constexpr int INV_TIMER = -1; // invalid timer id

View File

@ -57,6 +57,9 @@ static const char matchMaskAttributeC[] = "mask";
\sa QMimeTypeParser
*/
QMimeTypeParser::~QMimeTypeParser()
= default;
/*!
\class QMimeTypeParserBase
\inmodule QtCore
@ -69,6 +72,9 @@ static const char matchMaskAttributeC[] = "mask";
\sa QMimeTypeParser
*/
QMimeTypeParserBase::~QMimeTypeParserBase()
= default;
/*!
\fn virtual bool QMimeTypeParserBase::process(const QMimeType &t, QString *errorMessage) = 0;
Overwrite to process the sequence of parsed data

View File

@ -47,7 +47,7 @@ class QMimeTypeParserBase
public:
QMimeTypeParserBase() {}
virtual ~QMimeTypeParserBase() {}
virtual ~QMimeTypeParserBase();
bool parse(QIODevice *dev, const QString &fileName, QString *errorMessage);
@ -86,6 +86,7 @@ class QMimeTypeParser : public QMimeTypeParserBase
{
public:
explicit QMimeTypeParser(QMimeXMLProvider &provider) : m_provider(provider) {}
~QMimeTypeParser() override;
protected:
inline bool process(const QMimeTypeXMLData &t, QString *) override