aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmldom/qqmldom_utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmldom/qqmldom_utils.cpp')
-rw-r--r--src/qmldom/qqmldom_utils.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/qmldom/qqmldom_utils.cpp b/src/qmldom/qqmldom_utils.cpp
new file mode 100644
index 0000000000..a7c985644a
--- /dev/null
+++ b/src/qmldom/qqmldom_utils.cpp
@@ -0,0 +1,63 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qqmldom_utils_p.h"
+#include <QtCore/qdir.h>
+#include <QtCore/qdiriterator.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qmetaobject.h>
+#include <QtCore/qcbormap.h>
+
+QT_BEGIN_NAMESPACE
+
+Q_LOGGING_CATEGORY(QQmlJSDomImporting, "qt.qqmljsdom.importing")
+
+namespace QQmlJS {
+namespace Dom {
+
+using namespace Qt::StringLiterals;
+
+QStringList resourceFilesFromBuildFolders(const QStringList &buildFolders)
+{
+ QStringList result;
+ for (const QString &path : buildFolders) {
+ QDir dir(path);
+ if (!dir.cd(u".rcc"_s))
+ continue;
+
+ QDirIterator it(dir.canonicalPath(), QStringList{ u"*.qrc"_s }, QDir::Files,
+ QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ result.append(it.next());
+ }
+ }
+ return result;
+}
+
+static QMetaEnum regionEnum = QMetaEnum::fromType<FileLocationRegion>();
+
+QString fileLocationRegionName(FileLocationRegion region)
+{
+ return QString::fromLatin1(regionEnum.key(region));
+}
+
+FileLocationRegion fileLocationRegionValue(QStringView region)
+{
+ return static_cast<FileLocationRegion>(regionEnum.keyToValue(region.toLatin1()));
+}
+
+QCborValue sourceLocationToQCborValue(QQmlJS::SourceLocation loc)
+{
+ QCborMap res({
+ {QStringLiteral(u"offset"), loc.offset},
+ {QStringLiteral(u"length"), loc.length},
+ {QStringLiteral(u"startLine"), loc.startLine},
+ {QStringLiteral(u"startColumn"), loc.startColumn}
+ });
+ return res;
+}
+
+} // namespace Dom
+}; // namespace QQmlJS
+
+QT_END_NAMESPACE