X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/blast.git/blobdiff_plain/7b1c7e44123b9b2626205a89e27b2a4712ea30c6..18fecf25efe710631fabecbb9f689c2997fdfe18:/Graph.cpp?ds=sidebyside diff --git a/Graph.cpp b/Graph.cpp index 0fb4fcb..5b491b0 100644 --- a/Graph.cpp +++ b/Graph.cpp @@ -2,7 +2,6 @@ #include "GroupBlock.h" #include "ReferenceBlock.h" #include "FunctionalBlock.h" -#include "Exception.h" Graph::Graph() { topGroup = new GroupBlock(NULL); @@ -25,7 +24,7 @@ GroupBlock* Graph::createChildGroupBlock(GroupBlock* parent) { return b; } -bool Graph::removeGroupBlock(GroupBlock *group) { +void Graph::removeGroupBlock(GroupBlock *group) { group->removeAllBlocks(); GroupBlock* parent = AB_TO_GRP(group->getParent()); parent->removeBlock(group); @@ -89,8 +88,7 @@ FunctionalBlock* Graph::createSourceBlock(ReferenceBlock* ref) { FunctionalBlock* Graph::duplicateSourceBlock(FunctionalBlock *block) { - ReferenceBlock* ref = block->getReference(); - GroupBlock* group = AB_TO_GRP(block->getParent()); + ReferenceBlock* ref = block->getReference(); // adding to the graph FunctionalBlock* newBlock = createSourceBlock(ref); @@ -110,7 +108,7 @@ bool Graph::removeSourceBlock(FunctionalBlock *block) { } void Graph::createPatterns() throw(Exception) { - bool ok = true; + foreach(AbstractBlock* block, sources) { FunctionalBlock* funBlock = AB_TO_FUN(block); try { @@ -140,27 +138,29 @@ void Graph::createPatterns() throw(Exception) { void Graph::resetPatternComputed() { foreach(AbstractBlock* block, sources) { block->setPatternComputed(false); + block->resetTraversalLevel(); } foreach(AbstractBlock* block, groups) { GroupBlock* group = AB_TO_GRP(block); group->setPatternComputed(false); + block->resetTraversalLevel(); foreach(AbstractBlock* inBlock, group->getBlocks()) { inBlock->setPatternComputed(false); + block->resetTraversalLevel(); } } } -bool Graph::computeOutputPatterns(int nbExec) { +void Graph::computeOutputPatterns(int nbExec) throw(Exception) { try { createPatterns(); } catch(Exception e) { - cerr << qPrintable(e.getMessage()) << endl; - return false; + throw(e); } - resetPatternComputed(); + resetPatternComputed(); // search for all block that are generators. QList generators; generators.append(sources); @@ -189,7 +189,15 @@ bool Graph::computeOutputPatterns(int nbExec) { topGroup->computeOutputPattern(); } catch(Exception e) { - cerr << qPrintable(e.getMessage()) << endl; - return false; + throw(e); + } +} + +void Graph::generateVHDL(const QString &path) throw(Exception) { + try { + topGroup->generateVHDL(path); + } + catch(Exception e) { + throw(e); } }