diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-02-10 18:08:01 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-02-13 15:33:27 +0100 |
commit | e73f60919079fc7cb0f0ad6d50b1a364c7b0d2a6 (patch) | |
tree | 3ce15f1f9b336063d591999ce325ce28a6e21320 /src/lib/corelib/buildgraph/artifactset.cpp | |
parent | a3634a6bbb193c47cdec887a6b29356c979961aa (diff) |
support transformers with an unknown number of outputs
To support different types of nodes in the build graph, we introduce
the base class BuildGraphNode. Artifact now derives from BuildGraphNode.
A RuleNode class is introduced that represents a rule in the build graph.
Rules are applied in the build phase and not in a pre-build phase
anymore.
The handling of moc has been revisited. The fixed automoc pre-build
phase is no more.
This is the squashed merge of a feature branch.
Task-number: QBS-370
Change-Id: If27cdc51cba8c9542e4282c2caa456faa723aeff
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/buildgraph/artifactset.cpp')
-rw-r--r-- | src/lib/corelib/buildgraph/artifactset.cpp | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/src/lib/corelib/buildgraph/artifactset.cpp b/src/lib/corelib/buildgraph/artifactset.cpp index 921de6ee0..c44f5e4b9 100644 --- a/src/lib/corelib/buildgraph/artifactset.cpp +++ b/src/lib/corelib/buildgraph/artifactset.cpp @@ -28,30 +28,44 @@ ****************************************************************************/ #include "artifactset.h" +#include "artifact.h" namespace qbs { namespace Internal { ArtifactSet::ArtifactSet() -{} +{ +} ArtifactSet::ArtifactSet(const ArtifactSet &other) - : m_data(other.m_data) -{} + : QSet<Artifact *>(other) +{ +} + +ArtifactSet::ArtifactSet(const QSet<Artifact *> &other) + : QSet<Artifact *>(other) +{ +} -ArtifactSet &ArtifactSet::unite(const ArtifactSet &other) +ArtifactSet ArtifactSet::fromNodeSet(const NodeSet &nodes) { - std::set<Artifact *>::const_iterator it = other.m_data.begin(); - for (; it != other.m_data.end(); ++it) - m_data.insert(*it); - return *this; + ArtifactSet result; + result.reserve(nodes.count()); + foreach (BuildGraphNode *node, nodes) { + Artifact *artifact = dynamic_cast<Artifact *>(node); + if (artifact) + result += artifact; + } + return result; } -void ArtifactSet::remove(Artifact *artifact) +ArtifactSet ArtifactSet::fromNodeList(const QList<Artifact *> &lst) { - iterator it = m_data.find(artifact); - if (it != m_data.end()) - m_data.erase(it); + ArtifactSet result; + result.reserve(lst.count()); + for (QList<Artifact *>::const_iterator it = lst.constBegin(); it != lst.end(); ++it) + result.insert(*it); + return result; } } // namespace Internal |