diff options
Diffstat (limited to 'src/lib/buildgraph/artifactvisitor.cpp')
| -rw-r--r-- | src/lib/buildgraph/artifactvisitor.cpp | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/src/lib/buildgraph/artifactvisitor.cpp b/src/lib/buildgraph/artifactvisitor.cpp index 24829c51e..049b0c663 100644 --- a/src/lib/buildgraph/artifactvisitor.cpp +++ b/src/lib/buildgraph/artifactvisitor.cpp @@ -31,7 +31,6 @@ #include "artifact.h" #include "productbuilddata.h" #include <language/language.h> -#include <tools/qbsassert.h> namespace qbs { namespace Internal { @@ -40,34 +39,26 @@ ArtifactVisitor::ArtifactVisitor(int artifactType) : m_artifactType(artifactType { } -void ArtifactVisitor::visitArtifact(Artifact *artifact) +void ArtifactVisitor::visitProduct(const ResolvedProductConstPtr &product) { - QBS_ASSERT(artifact, return); - if (m_allArtifacts.contains(artifact)) - return; - m_allArtifacts << artifact; - if (m_artifactType & artifact->artifactType) - doVisit(artifact); - else if (m_artifactType == Artifact::Generated) - return; - foreach (Artifact * const child, artifact->children) - visitArtifact(child); + product->accept(this); } -void ArtifactVisitor::visitProduct(const ResolvedProductConstPtr &product) +void ArtifactVisitor::visitProject(const ResolvedProjectConstPtr &project) { - if (!product->buildData) - return; - foreach (Artifact * const artifact, product->buildData->targetArtifacts) - visitArtifact(artifact); + project->accept(this); } -void ArtifactVisitor::visitProject(const ResolvedProjectConstPtr &project) +bool ArtifactVisitor::visit(Artifact *artifact) { - foreach (const ResolvedProductConstPtr &product, project->products) - visitProduct(product); - foreach (const ResolvedProjectConstPtr &subProject, project->subProjects) - visitProject(subProject); + if (m_allArtifacts.contains(artifact)) + return false; + m_allArtifacts << artifact; + if (m_artifactType & artifact->artifactType) + doVisit(artifact); + foreach (BuildGraphNode *child, artifact->children) + child->accept(this); + return false; // handle child traversal ourselves } } // namespace Internal |
