diff options
author | Richard Weickelt <richard@weickelt.de> | 2023-10-10 22:48:04 +0200 |
---|---|---|
committer | Richard Weickelt <richard@weickelt.de> | 2023-10-16 10:41:07 +0000 |
commit | 7eee1c926779624106196125e21fe5c683fe1831 (patch) | |
tree | 2491c1874a6358150ac6cb1a6f4d1761dca9a8eb /src/lib/corelib/language | |
parent | 7793e84a5b692cfd61af06622db5241f8cd44ebe (diff) |
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 <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r-- | src/lib/corelib/language/language.cpp | 35 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 20 |
2 files changed, 18 insertions, 37 deletions
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<SourceArtifactPtr> ResolvedGroup::allFiles() const return lst; } -void ResolvedGroup::load(PersistentPool &pool) -{ - serializationOp<PersistentPool::Load>(pool); - if (wildcards) - wildcards->group = this; -} - -void ResolvedGroup::store(PersistentPool &pool) -{ - serializationOp<PersistentPool::Store>(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<QString> SourceWildCards::expandPatterns(const GroupConstPtr &group, - const QString &baseDir, const QString &buildDir) +Set<QString> SourceWildCards::expandPatterns(const QString &prefix, const QString &baseDir, + const QString &buildDir) { - Set<QString> files = expandPatterns(group, patterns, baseDir, buildDir); - files -= expandPatterns(group, excludePatterns, baseDir, buildDir); + Set<QString> files = expandPatterns(prefix, patterns, baseDir, buildDir); + files -= expandPatterns(prefix, excludePatterns, baseDir, buildDir); return files; } -Set<QString> SourceWildCards::expandPatterns(const GroupConstPtr &group, - const QStringList &patterns, const QString &baseDir, const QString &buildDir) +Set<QString> SourceWildCards::expandPatterns(const QString &prefix, const QStringList &patterns, + const QString &baseDir, const QString &buildDir) { Set<QString> 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<QString> 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<QString> &result, const GroupConstPtr &group, - const QStringList &parts, +void SourceWildCards::expandPatterns(Set<QString> &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<QString> &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<QString> expandPatterns(const GroupConstPtr &group, const QString &baseDir, - const QString &buildDir); + Set<QString> expandPatterns(const QString &prefix, const QString &baseDir, + const QString &buildDir); - const ResolvedGroup *group = nullptr; // The owning group. QStringList patterns; QStringList excludePatterns; std::vector<std::pair<QString, FileTime>> dirTimeStamps; @@ -274,11 +273,10 @@ public: } private: - Set<QString> expandPatterns(const GroupConstPtr &group, const QStringList &patterns, - const QString &baseDir, const QString &buildDir); - void expandPatterns(Set<QString> &result, const GroupConstPtr &group, - const QStringList &parts, const QString &baseDir, - const QString &buildDir); + Set<QString> expandPatterns(const QString &prefix, const QStringList &patterns, + const QString &baseDir, const QString &buildDir); + void expandPatterns(Set<QString> &result, const QStringList &parts, + const QString &baseDir, const QString &buildDir); }; class QBS_AUTOTEST_EXPORT ResolvedGroup @@ -300,11 +298,7 @@ public: std::vector<SourceArtifactPtr> allFiles() const; - void load(PersistentPool &pool); - void store(PersistentPool &pool); - -private: - template<PersistentPool::OpType opType> void serializationOp(PersistentPool &pool) + template<PersistentPool::OpType opType> void completeSerializationOp(PersistentPool &pool) { pool.serializationOp<opType>(name, enabled, location, prefix, files, wildcards, properties, fileTags, targetOfModule, overrideTags); |