]> AND Private Git Repository - blast.git/blobdiff - FunctionalBlock.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
add clk/rst to groups
[blast.git] / FunctionalBlock.cpp
index 91f4e03798c1403f63cd0128258df45630c01f7a..b4947840a6b8b16a41ad03edd47586cbbbc1291a 100644 (file)
@@ -649,9 +649,7 @@ void FunctionalBlock::createInputPattern()  throw(Exception) {
     }\r
     // get the precursor output pattern\r
     QList<char>* out = connIface->getConnectedFrom()->getOutputPattern();\r
-\r
-    ConnectedInterface* assoIface = AI_TO_CON(connIface->getAssociatedIface());\r
-    AbstractInputModifier* modifier = assoIface->getInputModifier();\r
+    AbstractInputModifier* modifier = connIface->getInputModifier();\r
     // check if the input is modified\r
     if (modifier != NULL) {\r
 \r
@@ -815,12 +813,13 @@ void FunctionalBlock::computeOutputPattern(int nbExec) throw(Exception) {
 #ifdef DEBUG_FCTNAME\r
   cout << "call to " << qPrintable(fctName) << endl;\r
 #endif\r
-  \r
+\r
+  clearOutputPattern();\r
+\r
   /* case 1: the block is a generator for which output pattern\r
      must be computed for a nbExec following executions\r
   */\r
-  \r
-  \r
+\r
   if (nbExec > 0) {\r
     cout << "computing output pattern of " << qPrintable(name) << " for " << nbExec << " executions" << endl;\r
     foreach(AbstractInterface* iface, getControlOutputs()) {\r
@@ -1243,6 +1242,20 @@ void FunctionalBlock::clearInputPattern() {
   lengthIP = -1;\r
 }\r
 \r
+void FunctionalBlock::clearOutputPattern() {\r
+\r
+  QMapIterator<AbstractInterface*,QList<char>* > iterO(outputPattern);\r
+  while (iterO.hasNext()) {\r
+    iterO.next();\r
+    ConnectedInterface* connIface = AI_TO_CON(iterO.key());\r
+    connIface->resetOutputPattern();\r
+    QList<char>* pattern = iterO.value();\r
+    if (pattern != NULL) delete pattern;\r
+  }\r
+  outputPattern.clear();\r
+  lengthOP = -1;\r
+}\r
+\r
 void FunctionalBlock::clearAdmittanceDelays() {\r
   QMapIterator<AbstractInterface*, QList<int>* > iterA(admittanceDelays);\r
   while (iterA.hasNext()) {\r