aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorRichard Weickelt <richard@weickelt.de>2023-10-10 22:48:04 +0200
committerRichard Weickelt <richard@weickelt.de>2023-10-16 10:41:07 +0000
commit7eee1c926779624106196125e21fe5c683fe1831 (patch)
tree2491c1874a6358150ac6cb1a6f4d1761dca9a8eb /src/lib/corelib/language
parent7793e84a5b692cfd61af06622db5241f8cd44ebe (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.cpp35
-rw-r--r--src/lib/corelib/language/language.h20
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);