18#include <private/qglobal_p.h>
20#include "QtCore/qplugin.h"
21#include "QtCore/qcborvalue.h"
22#include "QtCore/qcbormap.h"
26enum class QtPluginMetaDataKeys {
38#define QT_PLUGIN_FOREACH_METADATA(F)
39 F(QtPluginMetaDataKeys::IID, "IID", "Plugin's Interface ID")
40 F(QtPluginMetaDataKeys::ClassName, "className", "Plugin class name")
41 F(QtPluginMetaDataKeys::MetaData, "MetaData", "Other meta data")
42 F(QtPluginMetaDataKeys::URI, "URI", "Plugin URI")
44 F(QtPluginMetaDataKeys::QtVersion, "version", "Qt version")
45 F(QtPluginMetaDataKeys::Requirements, "archlevel", "Architectural level")
46 F(QtPluginMetaDataKeys::IsDebug, "debug", "Debug-mode plugin")
50struct DecodedArchRequirements
54 friend constexpr bool operator==(DecodedArchRequirements r1, DecodedArchRequirements r2)
56 return r1.level == r2.level && r1.isDebug == r2.isDebug;
60static constexpr DecodedArchRequirements decodeVersion0ArchRequirements(quint8 value)
63 DecodedArchRequirements r = {};
75static_assert(decodeVersion0ArchRequirements(0) == DecodedArchRequirements{ 0,
false });
76static_assert(decodeVersion0ArchRequirements(1) == DecodedArchRequirements{ 0,
true });
78static_assert(decodeVersion0ArchRequirements(2) == DecodedArchRequirements{ 3,
false });
79static_assert(decodeVersion0ArchRequirements(3) == DecodedArchRequirements{ 3,
true });
80static_assert(decodeVersion0ArchRequirements(4) == DecodedArchRequirements{ 4,
false });
81static_assert(decodeVersion0ArchRequirements(5) == DecodedArchRequirements{ 4,
true });
84static constexpr DecodedArchRequirements decodeVersion1ArchRequirements(quint8 value)
86 return { quint8(value & 0x7f),
bool(value & 0x80) };
89static_assert(decodeVersion1ArchRequirements(0) == DecodedArchRequirements{ 0,
false });
90static_assert(decodeVersion1ArchRequirements(0x80) == DecodedArchRequirements{ 0,
true });
92static_assert(decodeVersion1ArchRequirements(1) == DecodedArchRequirements{ 1,
false });
93static_assert(decodeVersion1ArchRequirements(3) == DecodedArchRequirements{ 3,
false});
94static_assert(decodeVersion1ArchRequirements(4) == DecodedArchRequirements{ 4,
false });
95static_assert(decodeVersion1ArchRequirements(0x82) == DecodedArchRequirements{ 2,
true });
96static_assert(decodeVersion1ArchRequirements(0x84) == DecodedArchRequirements{ 4,
true });
112 bool isError()
const {
return !data.isMap(); }
115 bool parse(QByteArrayView input);
116 bool parse(QPluginMetaData metaData)
117 {
return parse(QByteArrayView(
reinterpret_cast<
const char *>(metaData.data), metaData.size)); }