diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2012-12-05 10:21:38 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2012-12-05 16:45:35 +0100 |
commit | 8312afe19a5e839e33b59c5fd5952fbf2a9a612e (patch) | |
tree | 85cc384f3c719bb929f37a91ade0c729fb122960 | |
parent | 8fe229f85afb621c7b3dfe575a19518802bd4d41 (diff) |
Remove the BuildGraph class.
Its only contents were static member functions, which now become free
functions.
Change-Id: If854e6804626beddcc918d0aea155e07fd945577
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/lib/buildgraph/artifact.cpp | 4 | ||||
-rw-r--r-- | src/lib/buildgraph/automoc.cpp | 10 | ||||
-rw-r--r-- | src/lib/buildgraph/buildgraph.cpp | 42 | ||||
-rw-r--r-- | src/lib/buildgraph/buildgraph.h | 52 | ||||
-rw-r--r-- | src/lib/buildgraph/buildproject.cpp | 20 | ||||
-rw-r--r-- | src/lib/buildgraph/cycledetector.cpp | 2 | ||||
-rw-r--r-- | src/lib/buildgraph/executor.cpp | 12 | ||||
-rw-r--r-- | src/lib/buildgraph/inputartifactscanner.cpp | 4 | ||||
-rw-r--r-- | src/lib/buildgraph/jscommandexecutor.cpp | 2 | ||||
-rw-r--r-- | src/lib/buildgraph/rulesapplicator.cpp | 12 |
10 files changed, 72 insertions, 88 deletions
diff --git a/src/lib/buildgraph/artifact.cpp b/src/lib/buildgraph/artifact.cpp index f522ec356..cded39d17 100644 --- a/src/lib/buildgraph/artifact.cpp +++ b/src/lib/buildgraph/artifact.cpp @@ -109,7 +109,7 @@ void Artifact::store(PersistentPool &pool) const void Artifact::disconnectChildren() { if (qbsLogLevel(LoggerTrace)) - qbsTrace("[BG] disconnectChildren: '%s'", qPrintable(BuildGraph::fileName(this))); + qbsTrace("[BG] disconnectChildren: '%s'", qPrintable(relativeArtifactFileName(this))); foreach (Artifact * const child, children) child->parents.remove(this); children.clear(); @@ -118,7 +118,7 @@ void Artifact::disconnectChildren() void Artifact::disconnectParents() { if (qbsLogLevel(LoggerTrace)) - qbsTrace("[BG] disconnectParents: '%s'", qPrintable(BuildGraph::fileName(this))); + qbsTrace("[BG] disconnectParents: '%s'", qPrintable(relativeArtifactFileName(this))); foreach (Artifact * const parent, parents) parent->children.remove(this); parents.clear(); diff --git a/src/lib/buildgraph/automoc.cpp b/src/lib/buildgraph/automoc.cpp index eb797670d..322bc1a72 100644 --- a/src/lib/buildgraph/automoc.cpp +++ b/src/lib/buildgraph/automoc.cpp @@ -162,7 +162,7 @@ void AutoMoc::apply(const BuildProductPtr &product) // Make every artifact that is dependent of the header file also // dependent of the plugin metadata file. foreach (Artifact *outputOfHeader, pluginHeaderFile->parents) - BuildGraph::loggedConnect(outputOfHeader, pluginMetaDataFile); + loggedConnect(outputOfHeader, pluginMetaDataFile); } product->project->updateNodesThatMustGetNewTransformer(); @@ -197,7 +197,7 @@ AutoMoc::FileType AutoMoc::fileType(Artifact *artifact) void AutoMoc::scan(Artifact *artifact, bool &hasQObjectMacro, QSet<QString> &includedMocCppFiles) { if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[AUTOMOC] checks " << BuildGraph::fileName(artifact); + qbsTrace() << "[AUTOMOC] checks " << relativeArtifactFileName(artifact); hasQObjectMacro = false; const int numFileTags = artifact->fileTags.count(); @@ -292,7 +292,7 @@ bool AutoMoc::isVictimOfMoc(Artifact *artifact, FileType fileType, QString &foun void AutoMoc::unmoc(Artifact *artifact, const QString &mocFileTag) { if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[AUTOMOC] unmoc'ing " << BuildGraph::fileName(artifact); + qbsTrace() << "[AUTOMOC] unmoc'ing " << relativeArtifactFileName(artifact); artifact->fileTags.remove(mocFileTag); @@ -326,13 +326,13 @@ void AutoMoc::unmoc(Artifact *artifact, const QString &mocFileTag) qbsTrace() << "[AUTOMOC] generated moc obj artifact could not be found"; } else { if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[AUTOMOC] removing moc obj artifact " << BuildGraph::fileName(mocObjArtifact); + qbsTrace() << "[AUTOMOC] removing moc obj artifact " << relativeArtifactFileName(mocObjArtifact); artifact->project->removeArtifact(mocObjArtifact); } } if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[AUTOMOC] removing generated artifact " << BuildGraph::fileName(generatedMocArtifact); + qbsTrace() << "[AUTOMOC] removing generated artifact " << relativeArtifactFileName(generatedMocArtifact); artifact->project->removeArtifact(generatedMocArtifact); delete generatedMocArtifact; } diff --git a/src/lib/buildgraph/buildgraph.cpp b/src/lib/buildgraph/buildgraph.cpp index e9c88ed0e..cc8d711f2 100644 --- a/src/lib/buildgraph/buildgraph.cpp +++ b/src/lib/buildgraph/buildgraph.cpp @@ -41,13 +41,13 @@ namespace qbs { namespace Internal { -void BuildGraph::setupScriptEngineForProduct(ScriptEngine *engine, - const ResolvedProductConstPtr &product, - const RuleConstPtr &rule, - QScriptValue targetObject) +void setupScriptEngineForProduct(ScriptEngine *engine, const ResolvedProductConstPtr &product, + const RuleConstPtr &rule, QScriptValue targetObject) { - const ResolvedProject *lastSetupProject = reinterpret_cast<ResolvedProject *>(engine->property("lastSetupProject").toULongLong()); - const ResolvedProduct *lastSetupProduct = reinterpret_cast<ResolvedProduct *>(engine->property("lastSetupProduct").toULongLong()); + const ResolvedProject *lastSetupProject + = reinterpret_cast<ResolvedProject *>(engine->property("lastSetupProject").toULongLong()); + const ResolvedProduct *lastSetupProduct + = reinterpret_cast<ResolvedProduct *>(engine->property("lastSetupProduct").toULongLong()); if (lastSetupProject != product->project) { engine->setProperty("lastSetupProject", @@ -75,13 +75,15 @@ void BuildGraph::setupScriptEngineForProduct(ScriptEngine *engine, } // If the Rule is in a Module, set up the 'module' property - if (!rule->module->name.isEmpty()) - productScriptValue.setProperty("module", productScriptValue.property("modules").property(rule->module->name)); + if (!rule->module->name.isEmpty()) { + productScriptValue.setProperty("module", + productScriptValue.property("modules").property(rule->module->name)); + } engine->import(rule->jsImports, targetObject, targetObject); } -bool BuildGraph::findPath(Artifact *u, Artifact *v, QList<Artifact*> &path) +bool findPath(Artifact *u, Artifact *v, QList<Artifact*> &path) { if (u == v) { path.append(v); @@ -107,7 +109,7 @@ bool BuildGraph::findPath(Artifact *u, Artifact *v, QList<Artifact*> &path) * also: children means i depend on or i am produced by * parent means "produced by me" or "depends on me" */ -void BuildGraph::connect(Artifact *p, Artifact *c) +void connect(Artifact *p, Artifact *c) { Q_ASSERT(p != c); p->children.insert(c); @@ -115,13 +117,13 @@ void BuildGraph::connect(Artifact *p, Artifact *c) p->project->markDirty(); } -void BuildGraph::loggedConnect(Artifact *u, Artifact *v) +void loggedConnect(Artifact *u, Artifact *v) { Q_ASSERT(u != v); if (qbsLogLevel(LoggerTrace)) qbsTrace("[BG] connect '%s' -> '%s'", - qPrintable(fileName(u)), - qPrintable(fileName(v))); + qPrintable(relativeArtifactFileName(u)), + qPrintable(relativeArtifactFileName(v))); connect(u, v); } @@ -137,13 +139,13 @@ static bool existsPath(Artifact *u, Artifact *v) return false; } -bool BuildGraph::safeConnect(Artifact *u, Artifact *v) +bool safeConnect(Artifact *u, Artifact *v) { Q_ASSERT(u != v); if (qbsLogLevel(LoggerTrace)) qbsTrace("[BG] safeConnect: '%s' '%s'", - qPrintable(fileName(u)), - qPrintable(fileName(v))); + qPrintable(relativeArtifactFileName(u)), + qPrintable(relativeArtifactFileName(v))); if (existsPath(v, u)) { QList<Artifact *> circle; @@ -156,15 +158,15 @@ bool BuildGraph::safeConnect(Artifact *u, Artifact *v) return true; } -void BuildGraph::disconnect(Artifact *u, Artifact *v) +void disconnect(Artifact *u, Artifact *v) { if (qbsLogLevel(LoggerTrace)) - qbsTrace("[BG] disconnect: '%s' '%s'", qPrintable(fileName(u)), qPrintable(fileName(v))); + qbsTrace("[BG] disconnect: '%s' '%s'", qPrintable(relativeArtifactFileName(u)), qPrintable(relativeArtifactFileName(v))); u->children.remove(v); v->parents.remove(u); } -void BuildGraph::removeGeneratedArtifactFromDisk(Artifact *artifact) +void removeGeneratedArtifactFromDisk(Artifact *artifact) { if (artifact->artifactType != Artifact::Generated) return; @@ -178,7 +180,7 @@ void BuildGraph::removeGeneratedArtifactFromDisk(Artifact *artifact) qbsWarning("Cannot remove '%s'.", qPrintable(artifact->filePath())); } -QString BuildGraph::fileName(const Artifact *n) +QString relativeArtifactFileName(const Artifact *n) { const QString &buildDir = n->project->resolvedProject()->buildDirectory; QString str = n->filePath(); diff --git a/src/lib/buildgraph/buildgraph.h b/src/lib/buildgraph/buildgraph.h index c8c7ec546..46a02df53 100644 --- a/src/lib/buildgraph/buildgraph.h +++ b/src/lib/buildgraph/buildgraph.h @@ -40,43 +40,25 @@ namespace Internal { class Artifact; class ScriptEngine; -/** - * N artifact, T transformer, parent -> child - * parent depends on child, child is a dependency of parent, - * parent is a dependent of child. - * - * N a.out -> N main.o -> N main.cpp - * - * Every artifact can point to a transformer which contains the commands. - * Multiple artifacts can point to the same transformer. - */ -class BuildGraph -{ -public: - static bool findPath(Artifact *u, Artifact *v, QList<Artifact*> &path); - static void connect(Artifact *p, Artifact *c); - static void loggedConnect(Artifact *u, Artifact *v); - static bool safeConnect(Artifact *u, Artifact *v); - static void removeGeneratedArtifactFromDisk(Artifact *artifact); - static void disconnect(Artifact *u, Artifact *v); - - static void setupScriptEngineForProduct(ScriptEngine *engine, - const ResolvedProductConstPtr &product, const RuleConstPtr &rule, - QScriptValue targetObject); +bool findPath(Artifact *u, Artifact *v, QList<Artifact*> &path); +void connect(Artifact *p, Artifact *c); +void loggedConnect(Artifact *u, Artifact *v); +bool safeConnect(Artifact *u, Artifact *v); +void removeGeneratedArtifactFromDisk(Artifact *artifact); +void disconnect(Artifact *u, Artifact *v); - static QString fileName(const Artifact *n); // Debugging helpers - template <typename T> - static QStringList toStringList(const T &artifactContainer) - { - QStringList l; - foreach (Artifact *n, artifactContainer) - l.append(fileName(n)); - return l; - } +void setupScriptEngineForProduct(ScriptEngine *engine, const ResolvedProductConstPtr &product, + const RuleConstPtr &rule, QScriptValue targetObject); +QString relativeArtifactFileName(const Artifact *n); // Debugging helpers -private: - BuildGraph(); -}; +template <typename T> +QStringList toStringList(const T &artifactContainer) +{ + QStringList l; + foreach (Artifact *n, artifactContainer) + l.append(relativeArtifactFileName(n)); + return l; +} } // namespace Internal } // namespace qbs diff --git a/src/lib/buildgraph/buildproject.cpp b/src/lib/buildgraph/buildproject.cpp index ce7f999a5..40c3ebe7e 100644 --- a/src/lib/buildgraph/buildproject.cpp +++ b/src/lib/buildgraph/buildproject.cpp @@ -167,7 +167,7 @@ void BuildProject::rescueDependencies(const BuildProjectPtr &other) QList<Artifact *> children = lookupArtifacts(otherChild->dirPath(), otherChild->fileName()); foreach (Artifact *child, children) { if (!artifact->children.contains(child)) - BuildGraph::safeConnect(artifact, child); + safeConnect(artifact, child); } } } @@ -192,9 +192,9 @@ void BuildProject::setResolvedProject(const ResolvedProjectPtr &resolvedProject) void BuildProject::removeArtifact(Artifact *artifact) { if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[BG] remove artifact " << BuildGraph::fileName(artifact); + qbsTrace() << "[BG] remove artifact " << relativeArtifactFileName(artifact); - BuildGraph::removeGeneratedArtifactFromDisk(artifact); + removeGeneratedArtifactFromDisk(artifact); artifact->product->artifacts.remove(artifact); removeFromArtifactLookupTable(artifact); artifact->product->targetArtifacts.remove(artifact); @@ -225,9 +225,9 @@ void BuildProject::updateNodeThatMustGetNewTransformer(Artifact *artifact) Q_ASSERT(artifact->transformer); if (qbsLogLevel(LoggerDebug)) - qbsDebug() << "[BG] updating transformer for " << BuildGraph::fileName(artifact); + qbsDebug() << "[BG] updating transformer for " << relativeArtifactFileName(artifact); - BuildGraph::removeGeneratedArtifactFromDisk(artifact); + removeGeneratedArtifactFromDisk(artifact); const RuleConstPtr rule = artifact->transformer->rule; markDirty(); @@ -363,7 +363,7 @@ BuildProductPtr BuildProjectResolver::resolveProduct(const ResolvedProductPtr &r transformer->outputs += outputArtifact; product->targetArtifacts += outputArtifact; foreach (Artifact *inputArtifact, inputArtifacts) - BuildGraph::safeConnect(outputArtifact, inputArtifact); + safeConnect(outputArtifact, inputArtifact); foreach (const QString &fileTag, outputArtifact->fileTags) artifactsPerFileTag[fileTag].insert(outputArtifact); @@ -375,7 +375,7 @@ BuildProductPtr BuildProjectResolver::resolveProduct(const ResolvedProductPtr &r transformer->rule = rule; RulesEvaluationContext::Scope s(evalContext().data()); - BuildGraph::setupScriptEngineForProduct(engine(), rProduct, transformer->rule, scope()); + setupScriptEngineForProduct(engine(), rProduct, transformer->rule, scope()); transformer->setupInputs(engine(), scope()); transformer->setupOutputs(engine(), scope()); transformer->createCommands(rtrafo->transform, evalContext()); @@ -549,7 +549,7 @@ void BuildProjectLoader::onProductRemoved(const BuildProductPtr &product) // delete all removed artifacts physically from the disk foreach (Artifact *artifact, product->artifacts) { artifact->disconnectAll(); - BuildGraph::removeGeneratedArtifactFromDisk(artifact); + removeGeneratedArtifactFromDisk(artifact); } } @@ -636,7 +636,7 @@ void BuildProjectLoader::onProductChanged(const BuildProductPtr &product, // delete all removed artifacts physically from the disk foreach (Artifact *artifact, artifactsToRemove) { - BuildGraph::removeGeneratedArtifactFromDisk(artifact); + removeGeneratedArtifactFromDisk(artifact); delete artifact; } } @@ -653,7 +653,7 @@ void BuildProjectLoader::removeArtifactAndExclusiveDependents(Artifact *artifact removedArtifacts->append(artifact); foreach (Artifact *parent, artifact->parents) { bool removeParent = false; - BuildGraph::disconnect(parent, artifact); + disconnect(parent, artifact); if (parent->children.isEmpty()) { removeParent = true; } else if (parent->transformer) { diff --git a/src/lib/buildgraph/cycledetector.cpp b/src/lib/buildgraph/cycledetector.cpp index 501158bc0..380ae1b83 100644 --- a/src/lib/buildgraph/cycledetector.cpp +++ b/src/lib/buildgraph/cycledetector.cpp @@ -77,7 +77,7 @@ void CycleDetector::doVisit(Artifact *) { } QList<Artifact *> CycleDetector::cycle(Artifact *doubleEntry) { QList<Artifact *> path; - BuildGraph::findPath(doubleEntry, m_parent, path); + findPath(doubleEntry, m_parent, path); return path << doubleEntry; } diff --git a/src/lib/buildgraph/executor.cpp b/src/lib/buildgraph/executor.cpp index a3006b37f..02d32acfe 100644 --- a/src/lib/buildgraph/executor.cpp +++ b/src/lib/buildgraph/executor.cpp @@ -319,7 +319,7 @@ void Executor::buildArtifact(Artifact *artifact) Q_ASSERT(!m_availableJobs.isEmpty()); if (qbsLogLevel(LoggerDebug)) - qbsDebug() << "[EXEC] " << BuildGraph::fileName(artifact); + qbsDebug() << "[EXEC] " << relativeArtifactFileName(artifact); // Skip artifacts that are already built. if (artifact->buildState == Artifact::Built) { @@ -477,23 +477,23 @@ void Executor::finishArtifact(Artifact *leaf) Q_ASSERT(leaf); if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[EXEC] finishArtifact " << BuildGraph::fileName(leaf); + qbsTrace() << "[EXEC] finishArtifact " << relativeArtifactFileName(leaf); leaf->buildState = Artifact::Built; foreach (Artifact *parent, leaf->parents) { if (parent->buildState != Artifact::Buildable) { if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[EXEC] parent " << BuildGraph::fileName(parent) << " build state: " << toString(parent->buildState); + qbsTrace() << "[EXEC] parent " << relativeArtifactFileName(parent) << " build state: " << toString(parent->buildState); continue; } if (allChildrenBuilt(parent)) { m_leaves.append(parent); if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[EXEC] finishArtifact adds leaf " << BuildGraph::fileName(parent) << " " << toString(parent->buildState); + qbsTrace() << "[EXEC] finishArtifact adds leaf " << relativeArtifactFileName(parent) << " " << toString(parent->buildState); } else { if (qbsLogLevel(LoggerTrace)) - qbsTrace() << "[EXEC] parent " << BuildGraph::fileName(parent) << " build state: " << toString(parent->buildState); + qbsTrace() << "[EXEC] parent " << relativeArtifactFileName(parent) << " build state: " << toString(parent->buildState); } } @@ -527,7 +527,7 @@ static void insertLeavesAfterAddingDependencies_recurse(Artifact *const artifact if (isLeaf) { if (qbsLogLevel(LoggerDebug)) - qbsDebug() << "[EXEC] adding leaf " << BuildGraph::fileName(artifact); + qbsDebug() << "[EXEC] adding leaf " << relativeArtifactFileName(artifact); leaves->append(artifact); } } diff --git a/src/lib/buildgraph/inputartifactscanner.cpp b/src/lib/buildgraph/inputartifactscanner.cpp index 60d5bf039..6310770dd 100644 --- a/src/lib/buildgraph/inputartifactscanner.cpp +++ b/src/lib/buildgraph/inputartifactscanner.cpp @@ -161,7 +161,7 @@ void InputArtifactScanner::scan() foreach (Artifact *dependency, m_artifact->children) { if (m_artifact->transformer->inputs.contains(dependency)) continue; - BuildGraph::disconnect(m_artifact, dependency); + disconnect(m_artifact, dependency); } ArtifactList::const_iterator it = m_artifact->transformer->inputs.begin(); @@ -335,7 +335,7 @@ void InputArtifactScanner::handleDependency(ResolvedDependency &dependency) return; if (insertIntoProduct && !product->artifacts.contains(dependency.artifact)) product->insertArtifact(dependency.artifact); - BuildGraph::safeConnect(m_artifact, dependency.artifact); + safeConnect(m_artifact, dependency.artifact); m_newDependencyAdded = true; } } diff --git a/src/lib/buildgraph/jscommandexecutor.cpp b/src/lib/buildgraph/jscommandexecutor.cpp index 16be8521d..21ed6bb64 100644 --- a/src/lib/buildgraph/jscommandexecutor.cpp +++ b/src/lib/buildgraph/jscommandexecutor.cpp @@ -89,7 +89,7 @@ public: Artifact *someOutputArtifact = *transformer->outputs.begin(); if (someOutputArtifact->product) { const ResolvedProductConstPtr product = someOutputArtifact->product->rProduct; - BuildGraph::setupScriptEngineForProduct(scriptEngine, product, transformer->rule, + setupScriptEngineForProduct(scriptEngine, product, transformer->rule, scriptEngine->globalObject()); } transformer->setupInputs(scriptEngine, scriptEngine->globalObject()); diff --git a/src/lib/buildgraph/rulesapplicator.cpp b/src/lib/buildgraph/rulesapplicator.cpp index 7f62f1297..ab3771685 100644 --- a/src/lib/buildgraph/rulesapplicator.cpp +++ b/src/lib/buildgraph/rulesapplicator.cpp @@ -62,7 +62,7 @@ void RulesApplicator::applyAllRules() void RulesApplicator::applyRule(const RuleConstPtr &rule) { m_rule = rule; - BuildGraph::setupScriptEngineForProduct(engine(), m_buildProduct->rProduct, m_rule, scope()); + setupScriptEngineForProduct(engine(), m_buildProduct->rProduct, m_rule, scope()); Q_ASSERT_X(scope().property("product").strictlyEquals(engine()->evaluate("product")), "BG", "Product object is not in current scope."); @@ -89,7 +89,7 @@ void RulesApplicator::doApply(const ArtifactList &inputArtifacts) if (qbsLogLevel(LoggerDebug)) qbsDebug() << "[BG] apply rule " << m_rule->toString() << " " - << BuildGraph::toStringList(inputArtifacts).join(",\n "); + << toStringList(inputArtifacts).join(",\n "); QList<QPair<const RuleArtifact *, Artifact *> > ruleArtifactArtifactMap; QList<Artifact *> outputArtifacts; @@ -126,14 +126,14 @@ void RulesApplicator::doApply(const ArtifactList &inputArtifacts) // connect artifacts that match the file tags in explicitlyDependsOn foreach (const QString &fileTag, m_rule->explicitlyDependsOn) foreach (Artifact *dependency, m_artifactsPerFileTag.value(fileTag)) - BuildGraph::loggedConnect(outputArtifact, dependency); + loggedConnect(outputArtifact, dependency); // Transformer setup for (ArtifactList::const_iterator it = usingArtifacts.constBegin(); it != usingArtifacts.constEnd(); ++it) { Artifact *dep = *it; - BuildGraph::loggedConnect(outputArtifact, dep); + loggedConnect(outputArtifact, dep); m_transformer->inputs.insert(dep); } m_transformer->outputs.insert(outputArtifact); @@ -225,7 +225,7 @@ Artifact *RulesApplicator::createOutputArtifact(const RuleArtifactConstPtr &rule // This can happen when applying rules after scanning for additional file tags. // We just regenerate the transformer. if (qbsLogLevel(LoggerTrace)) - qbsTrace("[BG] regenerating transformer for '%s'", qPrintable(BuildGraph::fileName(outputArtifact))); + qbsTrace("[BG] regenerating transformer for '%s'", qPrintable(relativeArtifactFileName(outputArtifact))); m_transformer = outputArtifact->transformer; m_transformer->inputs.unite(inputArtifacts); @@ -269,7 +269,7 @@ Artifact *RulesApplicator::createOutputArtifact(const RuleArtifactConstPtr &rule foreach (Artifact *inputArtifact, inputArtifacts) { Q_ASSERT(outputArtifact != inputArtifact); - BuildGraph::loggedConnect(outputArtifact, inputArtifact); + loggedConnect(outputArtifact, inputArtifact); } // create transformer if not already done so |