#include "GroupBlock.h"
#include "ReferenceBlock.h"
#include "FunctionalBlock.h"
-#include "Exception.h"
Graph::Graph() {
topGroup = new GroupBlock(NULL);
return b;
}
-bool Graph::removeGroupBlock(GroupBlock *group) {
+void Graph::removeGroupBlock(GroupBlock *group) {
group->removeAllBlocks();
GroupBlock* parent = AB_TO_GRP(group->getParent());
parent->removeBlock(group);
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);
}
void Graph::createPatterns() throw(Exception) {
- bool ok = true;
+
foreach(AbstractBlock* block, sources) {
FunctionalBlock* funBlock = AB_TO_FUN(block);
try {
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<FunctionalBlock*> generators;
generators.append(sources);
topGroup->computeOutputPattern();
}
catch(Exception e) {
- cerr << qPrintable(e.getMessage()) << endl;
- return false;
+ throw(e);
}
}