aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2018-04-26 10:02:25 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-04-26 16:07:42 +0000
commitf5e9326c51e6352eed919c66d0c2a213f1e5b1dc (patch)
treef439dc330f5f70adb25d84c9456d766b152bc172 /src/lib
parent619a0d76d2c1cbb86b8dd01f85768e97e5f81810 (diff)
Make ResolvedProduct::artifactProperties a vector
The value_type is not suitable for QList. Change-Id: I73d021f0c635ed46992397c4d6e3f3394ec5a7f8 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp2
-rw-r--r--src/lib/corelib/language/language.cpp6
-rw-r--r--src/lib/corelib/language/language.h6
-rw-r--r--src/lib/corelib/language/projectresolver.cpp5
-rw-r--r--src/lib/corelib/tools/stlutils.h7
5 files changed, 16 insertions, 10 deletions
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp
index 72ec2fad3..58e4a8d11 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp
@@ -404,7 +404,7 @@ Artifact *RulesApplicator::createOutputArtifact(const QString &filePath, const F
FileTags outputArtifactFileTags = fileTags.empty()
? m_product->fileTagsForFileName(outputArtifact->fileName()) : fileTags;
- for (const ArtifactPropertiesConstPtr &props : qAsConst(m_product->artifactProperties)) {
+ for (const ArtifactPropertiesConstPtr &props : m_product->artifactProperties) {
if (outputArtifactFileTags.intersects(props->fileTagsFilter())) {
outputArtifact->properties = props->propertyMap();
outputArtifactFileTags += props->extraFileTags();
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index 6b9e5d056..fd3679f89 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -295,7 +295,7 @@ FileTags Rule::staticOutputFileTags() const
FileTags Rule::collectedOutputFileTags() const
{
FileTags result = outputFileTags.empty() ? staticOutputFileTags() : outputFileTags;
- for (const auto &ap : qAsConst(product->artifactProperties)) {
+ for (const auto &ap : product->artifactProperties) {
if (ap->fileTagsFilter().intersects(result))
result += ap->extraFileTags();
}
@@ -932,8 +932,8 @@ uint qHash(const RuleArtifact::Binding &b)
return qHash(std::make_pair(b.code, b.name.join(QLatin1Char(','))));
}
-bool artifactPropertyListsAreEqual(const QList<ArtifactPropertiesPtr> &l1,
- const QList<ArtifactPropertiesPtr> &l2)
+bool artifactPropertyListsAreEqual(const std::vector<ArtifactPropertiesPtr> &l1,
+ const std::vector<ArtifactPropertiesPtr> &l2)
{
return listsAreEqual(l1, l2);
}
diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h
index 38fbcd5f4..524c9cb27 100644
--- a/src/lib/corelib/language/language.h
+++ b/src/lib/corelib/language/language.h
@@ -578,7 +578,7 @@ public:
std::vector<ResolvedScannerConstPtr> scanners;
std::vector<GroupPtr> groups;
std::vector<ProbeConstPtr> probes;
- QList<ArtifactPropertiesPtr> artifactProperties;
+ std::vector<ArtifactPropertiesPtr> artifactProperties;
QStringList missingSourceFiles;
std::unique_ptr<ProductBuildData> buildData;
@@ -734,8 +734,8 @@ private:
QVariantMap m_buildConfiguration;
};
-bool artifactPropertyListsAreEqual(const QList<ArtifactPropertiesPtr> &l1,
- const QList<ArtifactPropertiesPtr> &l2);
+bool artifactPropertyListsAreEqual(const std::vector<ArtifactPropertiesPtr> &l1,
+ const std::vector<ArtifactPropertiesPtr> &l2);
QString multiplexIdToString(const QString &id);
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 7341efdd4..c25e252bf 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -727,7 +727,7 @@ void ProjectResolver::resolveGroupFully(Item *item, ProjectResolver::ProjectCont
}
// Discard any Group with the same fileTagsFilter that was defined in a base file.
- m_productContext->product->artifactProperties.removeAll(apinfo.first);
+ removeAll(m_productContext->product->artifactProperties, apinfo.first);
}
if (!isEnabled)
return;
@@ -1389,8 +1389,7 @@ void ProjectResolver::matchArtifactProperties(const ResolvedProductPtr &product,
const QList<SourceArtifactPtr> &artifacts)
{
for (const SourceArtifactPtr &artifact : artifacts) {
- for (const ArtifactPropertiesConstPtr &artifactProperties :
- qAsConst(product->artifactProperties)) {
+ for (const ArtifactPropertiesConstPtr &artifactProperties : product->artifactProperties) {
if (!artifact->isTargetOfModule()
&& artifact->fileTags.intersects(artifactProperties->fileTagsFilter())) {
artifact->properties = artifactProperties->propertyMap();
diff --git a/src/lib/corelib/tools/stlutils.h b/src/lib/corelib/tools/stlutils.h
index 7bb8b3a67..ad00070cf 100644
--- a/src/lib/corelib/tools/stlutils.h
+++ b/src/lib/corelib/tools/stlutils.h
@@ -79,6 +79,13 @@ bool removeOne(C &container, const typename C::value_type &v)
return true;
}
+template <typename C>
+void removeAll(C &container, const typename C::value_type &v)
+{
+ container.erase(std::remove(std::begin(container), std::end(container), v),
+ std::end(container));
+}
+
template <class Container, class UnaryPredicate>
bool any_of(const Container &container, const UnaryPredicate &predicate)
{