5#ifndef METATYPESJSONPROCESSOR_P_H
6#define METATYPESJSONPROCESSOR_P_H
19#include <private/qduplicatetracker_p.h>
21#include <QtCore/qcbormap.h>
22#include <QtCore/qhash.h>
23#include <QtCore/qstring.h>
24#include <QtCore/qtyperevision.h>
25#include <QtCore/qvarlengtharray.h>
26#include <QtCore/qvector.h>
35enum class Access { Public, Protected, Private };
117 Method(
const QCborMap &cbor,
bool isConstructor);
142 Enum(
const QCborMap &cbor);
162 MetaTypePrivate(
const QCborMap &cbor,
const QString &inputFile,
const QCborMap &hashes);
196 MetaType(
const QCborMap &cbor,
const QString &inputFile,
const QCborMap &hashes);
198 bool isEmpty()
const {
return d == &s_empty; }
238 bool isValid()
const {
return !alias.isEmpty() && !original.isEmpty(); }
242 return std::tie(a.alias, a.original) == std::tie(b.alias, b.original);
248 return a.alias != b.alias
249 ? compareThreeWay(a.alias, b.alias)
250 : compareThreeWay(a.original, b.original);
277 return m_foreignTypeMetaObjectHashes;
283 enum RegistrationMode {
287 NamespaceRegistration
290 struct PreProcessResult {
291 QList<QAnyStringView> primitiveAliases;
293 QAnyStringView foreignPrimitive;
294 RegistrationMode mode;
297 enum class PopulateMode { No, Yes };
298 static PreProcessResult preProcess(
const MetaType &classDef, PopulateMode populateMode);
299 void addRelatedTypes();
301 void sortTypes(QList<MetaType> &types);
302 QString resolvedInclude(QAnyStringView include);
306 bool isPrimitive(QAnyStringView type)
const
308 return std::binary_search(m_primitiveTypes.begin(), m_primitiveTypes.end(), type);
311 QList<QString> m_includes;
312 QList<QAnyStringView> m_referencedTypes;
313 QList<QAnyStringView> m_primitiveTypes;
314 QList<UsingDeclaration> m_usingDeclarations;
315 QList<MetaType> m_types;
316 QList<MetaType> m_foreignTypes;
317 QDuplicateTracker<QString> m_seenMetaTypesFiles;
320 QHash<QAnyStringView, QAnyStringView> m_foreignTypeMetaObjectHashes;
321 bool m_privateIncludes =
false;
Combined button and popup list for selecting options.
QDebug warning(const MetaType &classDef)
Argument(const QCborMap &cbor)
BaseType(const QCborMap &cbor)
ClassInfo(const QCborMap &cbor)
QList< QAnyStringView > values
Enum(const QCborMap &cbor)
Interface(const QCborValue &cbor)
QAnyStringView returnType
Argument::Container arguments
bool isJavaScriptFunction
Method(const QCborMap &cbor, bool isConstructor)
static constexpr int InvalidIndex
QAnyStringView privateClass
Property(const QCborMap &cbor)
friend bool comparesEqual(const UsingDeclaration &a, const UsingDeclaration &b) noexcept
friend Qt::strong_ordering compareThreeWay(const UsingDeclaration &a, const UsingDeclaration &b) noexcept