From 37485e966115cd1857d51eed6eb3cbe1c42faf2d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 10 Jan 2025 17:28:50 -0300 Subject: [PATCH] QFactoryLoader: move QPluginParsedMetaData to qplugin_p.h Which is a more central header, with no other dependencies. This is just a declarative structure with no .cpp requirements, so it fits there. This way, qlibrary_p.h won't depend on qfactory_p.h. QLibrary, QPluginLoader and QFactoryLoader are inextricably linked (the plugin-parsing code is in qfactoryloader.cpp because QFactoryLoader needs it to parse metadata too). This will later allow me to make qfactory_p.h depend on qlibrary_p.h. Change-Id: I0544826807f97d366142fffde0ebdc802273ffc2 Reviewed-by: Ahmad Samir --- src/corelib/plugin/qfactoryloader_p.h | 26 ---------------------- src/corelib/plugin/qlibrary_p.h | 2 +- src/corelib/plugin/qplugin_p.h | 31 +++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 27 deletions(-) diff --git a/src/corelib/plugin/qfactoryloader_p.h b/src/corelib/plugin/qfactoryloader_p.h index 56dc7e6ad1f..7baaa2548a6 100644 --- a/src/corelib/plugin/qfactoryloader_p.h +++ b/src/corelib/plugin/qfactoryloader_p.h @@ -31,32 +31,6 @@ QT_BEGIN_NAMESPACE class QJsonObject; class QLibraryPrivate; -class QPluginParsedMetaData -{ - QCborValue data; - bool setError(const QString &errorString) Q_DECL_COLD_FUNCTION - { - data = errorString; - return false; - } -public: - QPluginParsedMetaData() = default; - QPluginParsedMetaData(QByteArrayView input) { parse(input); } - - bool isError() const { return !data.isMap(); } - QString errorString() const { return data.toString(); } - - bool parse(QByteArrayView input); - bool parse(QPluginMetaData metaData) - { return parse(QByteArrayView(reinterpret_cast(metaData.data), metaData.size)); } - - QJsonObject toJson() const; // only for QLibrary & QPluginLoader - - // if data is not a map, toMap() returns empty, so shall these functions - QCborMap toCbor() const { return data.toMap(); } - QCborValue value(QtPluginMetaDataKeys k) const { return data[int(k)]; } -}; - class QFactoryLoaderPrivate; class Q_CORE_EXPORT QFactoryLoader : public QObject { diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h index f582e20ffed..b4e29a79e28 100644 --- a/src/corelib/plugin/qlibrary_p.h +++ b/src/corelib/plugin/qlibrary_p.h @@ -18,7 +18,7 @@ #include "QtCore/qlibrary.h" -#include "QtCore/private/qfactoryloader_p.h" +#include "QtCore/private/qplugin_p.h" #include "QtCore/qloggingcategory.h" #include "QtCore/qmutex.h" #include "QtCore/qplugin.h" diff --git a/src/corelib/plugin/qplugin_p.h b/src/corelib/plugin/qplugin_p.h index 534ca569df9..1651fd3a952 100644 --- a/src/corelib/plugin/qplugin_p.h +++ b/src/corelib/plugin/qplugin_p.h @@ -17,6 +17,10 @@ #include +#include "QtCore/qplugin.h" +#include "QtCore/qcborvalue.h" +#include "QtCore/qcbormap.h" + QT_BEGIN_NAMESPACE enum class QtPluginMetaDataKeys { @@ -93,6 +97,33 @@ static_assert(decodeVersion1ArchRequirements(0x84) == DecodedArchRequirements{ 4 #endif } // unnamed namespace +class QPluginParsedMetaData +{ + QCborValue data; + bool setError(const QString &errorString) Q_DECL_COLD_FUNCTION + { + data = errorString; + return false; + } +public: + QPluginParsedMetaData() = default; + QPluginParsedMetaData(QByteArrayView input) { parse(input); } + + bool isError() const { return !data.isMap(); } + QString errorString() const { return data.toString(); } + + bool parse(QByteArrayView input); + bool parse(QPluginMetaData metaData) + { return parse(QByteArrayView(reinterpret_cast(metaData.data), metaData.size)); } + + QJsonObject toJson() const; // only for QLibrary & QPluginLoader + + // if data is not a map, toMap() returns empty, so shall these functions + QCborMap toCbor() const { return data.toMap(); } + QCborValue value(QtPluginMetaDataKeys k) const { return data[int(k)]; } +}; + + QT_END_NAMESPACE #endif // QPLUGIN_P_H