#pragma once #include #include #include #include #include Q_DECLARE_LOGGING_CATEGORY(logQmlScanner); // expects canonical paths class QmlScanner { public: QmlScanner() = default; QmlScanner(const QDir& rootPath): rootPath(rootPath) {} void scanDir(const QString& path); // returns if the file has a singleton bool scanQmlFile(const QString& path); QVector scannedDirs; QVector scannedFiles; QHash fileIntercepts; private: QDir rootPath; void scanQmlJson(const QString& path); [[nodiscard]] static QPair jsonToQml(const QJsonValue& value, int indent = 0); };