diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2018-04-26 10:02:25 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-04-26 16:07:42 +0000 |
commit | f5e9326c51e6352eed919c66d0c2a213f1e5b1dc (patch) | |
tree | f439dc330f5f70adb25d84c9456d766b152bc172 | |
parent | 619a0d76d2c1cbb86b8dd01f85768e97e5f81810 (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>
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/language.cpp | 6 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 6 | ||||
-rw-r--r-- | src/lib/corelib/language/projectresolver.cpp | 5 | ||||
-rw-r--r-- | src/lib/corelib/tools/stlutils.h | 7 |
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) { |