#include "GroupBlock.h"
#include "ReferenceBlock.h"
#include "FunctionalBlock.h"
+#include "Exception.h"
Graph::Graph() {
topGroup = new GroupBlock(NULL);
return true;
}
-bool Graph::createPatterns() {
+void Graph::createPatterns() throw(Exception) {
bool ok = true;
foreach(AbstractBlock* block, sources) {
FunctionalBlock* funBlock = AB_TO_FUN(block);
- ok = funBlock->createPatterns();
- if (!ok) return false;
+ try {
+ funBlock->createPatterns();
+ }
+ catch(Exception e) {
+ throw(e);
+ }
}
foreach(AbstractBlock* block, groups) {
foreach(AbstractBlock* inBlock, group->getBlocks()) {
if (inBlock->isFunctionalBlock()) {
FunctionalBlock* funBlock = AB_TO_FUN(inBlock);
- ok = funBlock->createPatterns();
- if (!ok) return false;
+ try {
+ funBlock->createPatterns();
+ }
+ catch(Exception e) {
+ throw(e);
+ }
}
}
- }
- return true;
+ }
}
void Graph::resetPatternComputed() {
bool Graph::computeOutputPatterns(int nbExec) {
- createPatterns();
+ try {
+ createPatterns();
+ }
+ catch(Exception e) {
+ cerr << qPrintable(e.getMessage()) << endl;
+ return false;
+ }
+
resetPatternComputed();
// search for all block that are generators.
QList<FunctionalBlock*> generators;
block->computeOutputPattern((maxExecLen+d-1)/d);
}
// compute output for top group
- topGroup->computeOutputPattern();
+ try {
+ topGroup->computeOutputPattern();
+ }
+ catch(Exception e) {
+ cerr << qPrintable(e.getMessage()) << endl;
+ return false;
+ }
}