From 7eee1c926779624106196125e21fe5c683fe1831 Mon Sep 17 00:00:00 2001 From: Richard Weickelt Date: Tue, 10 Oct 2023 22:48:04 +0200 Subject: Remove dependency of SourceWildCards on ResolvedGroup SourceWildCards had an unnecessary dependency on ResolvedGroup which could be a historical relic. However, it is functionally independent and can be useful in other contexts as well, for example wildcard project references. We really do not want to duplicate the complicated wildcard expansion code. This patch is a first step in a refactoring series. Task-number: QBS-1749 Change-Id: I2ce0e784d4668f7cee686cd4c2101aef3ce38eda Reviewed-by: Christian Kandeler --- src/lib/corelib/language/language.cpp | 35 +++++++++++------------------------ src/lib/corelib/language/language.h | 20 +++++++------------- 2 files changed, 18 insertions(+), 37 deletions(-) (limited to 'src/lib/corelib/language') diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index 0d2813447..8b87a7977 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -166,18 +166,6 @@ std::vector ResolvedGroup::allFiles() const return lst; } -void ResolvedGroup::load(PersistentPool &pool) -{ - serializationOp(pool); - if (wildcards) - wildcards->group = this; -} - -void ResolvedGroup::store(PersistentPool &pool) -{ - serializationOp(pool); -} - /*! * \class RuleArtifact * \brief The \c RuleArtifact class represents an Artifact item encountered in the context @@ -717,19 +705,19 @@ void TopLevelProject::cleanupModuleProviderOutput() * \brief The \c SourceArtifacts resulting from the expanded list of matching files. */ -Set SourceWildCards::expandPatterns(const GroupConstPtr &group, - const QString &baseDir, const QString &buildDir) +Set SourceWildCards::expandPatterns(const QString &prefix, const QString &baseDir, + const QString &buildDir) { - Set files = expandPatterns(group, patterns, baseDir, buildDir); - files -= expandPatterns(group, excludePatterns, baseDir, buildDir); + Set files = expandPatterns(prefix, patterns, baseDir, buildDir); + files -= expandPatterns(prefix, excludePatterns, baseDir, buildDir); return files; } -Set SourceWildCards::expandPatterns(const GroupConstPtr &group, - const QStringList &patterns, const QString &baseDir, const QString &buildDir) +Set SourceWildCards::expandPatterns(const QString &prefix, const QStringList &patterns, + const QString &baseDir, const QString &buildDir) { Set files; - QString expandedPrefix = group->prefix; + QString expandedPrefix = prefix; if (expandedPrefix.startsWith(StringConstants::tildeSlash())) expandedPrefix.replace(0, 1, QDir::homePath()); for (QString pattern : patterns) { @@ -745,17 +733,16 @@ Set SourceWildCards::expandPatterns(const GroupConstPtr &group, } else { rootDir = QLatin1Char('/'); } - expandPatterns(files, group, parts, rootDir, buildDir); + expandPatterns(files, parts, rootDir, buildDir); } else { - expandPatterns(files, group, parts, baseDir, buildDir); + expandPatterns(files, parts, baseDir, buildDir); } } return files; } -void SourceWildCards::expandPatterns(Set &result, const GroupConstPtr &group, - const QStringList &parts, +void SourceWildCards::expandPatterns(Set &result, const QStringList &parts, const QString &baseDir, const QString &buildDir) { // People might build directly in the project source directory. This is okay, since @@ -806,7 +793,7 @@ void SourceWildCards::expandPatterns(Set &result, const GroupConstPtr & if (!isDir && it.fileInfo().isDir() && !it.fileInfo().isSymLink()) continue; if (isDir) { - expandPatterns(result, group, changed_parts, filePath, buildDir); + expandPatterns(result, changed_parts, filePath, buildDir); } else { if (parentDir != baseDir) dirTimeStamps.emplace_back(parentDir, FileInfo(baseDir).lastModified()); diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h index 86f0f86fe..c2f892727 100644 --- a/src/lib/corelib/language/language.h +++ b/src/lib/corelib/language/language.h @@ -259,10 +259,9 @@ inline bool operator!=(const SourceArtifactInternal &sa1, const SourceArtifactIn class SourceWildCards { public: - Set expandPatterns(const GroupConstPtr &group, const QString &baseDir, - const QString &buildDir); + Set expandPatterns(const QString &prefix, const QString &baseDir, + const QString &buildDir); - const ResolvedGroup *group = nullptr; // The owning group. QStringList patterns; QStringList excludePatterns; std::vector> dirTimeStamps; @@ -274,11 +273,10 @@ public: } private: - Set expandPatterns(const GroupConstPtr &group, const QStringList &patterns, - const QString &baseDir, const QString &buildDir); - void expandPatterns(Set &result, const GroupConstPtr &group, - const QStringList &parts, const QString &baseDir, - const QString &buildDir); + Set expandPatterns(const QString &prefix, const QStringList &patterns, + const QString &baseDir, const QString &buildDir); + void expandPatterns(Set &result, const QStringList &parts, + const QString &baseDir, const QString &buildDir); }; class QBS_AUTOTEST_EXPORT ResolvedGroup @@ -300,11 +298,7 @@ public: std::vector allFiles() const; - void load(PersistentPool &pool); - void store(PersistentPool &pool); - -private: - template void serializationOp(PersistentPool &pool) + template void completeSerializationOp(PersistentPool &pool) { pool.serializationOp(name, enabled, location, prefix, files, wildcards, properties, fileTags, targetOfModule, overrideTags); -- cgit v1.2.3