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

Private GIT Repository
started top group gen, added project subdirs
[blast.git] / BlockImplementation.cpp
index 5ae6edac0fd7ab848fd62fb699937701f53d89f7..23ec8bcb4aff0d2ff1c5b55b3723670ffd435a6f 100644 (file)
@@ -15,6 +15,8 @@ BlockImplementation::BlockImplementation(const QString& _xmlFile) {
 \r
   evaluator = new ArithmeticEvaluator;\r
   evaluator->setVariableMarkers("@$");\r
+\r
+  noPatterns = true;\r
 }\r
 \r
 BlockImplementation::BlockImplementation(const QString& _xmlFile, const QString &_referenceXml, const QString &_referenceMd5) {\r
@@ -23,6 +25,8 @@ BlockImplementation::BlockImplementation(const QString& _xmlFile, const QString
   delta = "";\r
   referenceXml = _referenceXml;\r
   referenceMd5 = _referenceMd5;\r
+\r
+  noPatterns = true;\r
 }\r
 \r
 void BlockImplementation::loadPatterns(QDomElement& root) throw(Exception) {\r
@@ -38,7 +42,8 @@ void BlockImplementation::loadPatterns(QDomElement& root) throw(Exception) {
   \r
   QDomElement eltDelta  = patternElt.firstChildElement("delta");\r
   delta = eltDelta.attribute("value","none");\r
-  \r
+  if (delta == "none") throw(Exception(IMPLFILE_CORRUPTED));\r
+\r
   QDomElement eltCons  = eltDelta.nextSiblingElement("consumption");\r
   \r
   QDomNodeList listNodeInput = eltCons.elementsByTagName("input");\r
@@ -47,7 +52,8 @@ void BlockImplementation::loadPatterns(QDomElement& root) throw(Exception) {
     QDomElement elt = node.toElement();    \r
     QString nameStr = elt.attribute("name","none");\r
     if (nameStr == "none") throw(Exception(IMPLFILE_CORRUPTED));\r
-    QString patternStr = elt.attribute("pattern","none");    \r
+    QString patternStr = elt.attribute("pattern","none");\r
+    if (patternStr == "none") throw(Exception(IMPLFILE_CORRUPTED));\r
     consumptionPattern.insert(nameStr,patternStr);\r
   }\r
   \r
@@ -61,6 +67,7 @@ void BlockImplementation::loadPatterns(QDomElement& root) throw(Exception) {
     QString nameStr = elt.attribute("name","none");\r
     if (nameStr == "none") throw(Exception(IMPLFILE_CORRUPTED));\r
     QString patternStr = elt.attribute("pattern","none");    \r
+    if (patternStr == "none") throw(Exception(IMPLFILE_CORRUPTED));\r
     productionPattern.insert(nameStr,patternStr);    \r
   }\r
   cout << "patterns summary:" << endl;\r
@@ -70,6 +77,7 @@ void BlockImplementation::loadPatterns(QDomElement& root) throw(Exception) {
     cout << qPrintable(iterP.key()) << " -> " << qPrintable(iterP.value()) << endl;\r
   }\r
   cout << "impls patterns read correctly" << endl;\r
+  noPatterns = false;\r
 }\r
 \r
 bool BlockImplementation::checkPatterns() {\r
@@ -324,6 +332,7 @@ QDataStream& operator<<(QDataStream &out, const BlockImplementation &impl) {
   toWrite << impl.referenceXml;\r
   toWrite << impl.referenceMd5;\r
   // saving patterns\r
+  toWrite << impl.noPatterns;\r
   toWrite << impl.delta;\r
   toWrite << impl.consumptionPattern;\r
   toWrite << impl.productionPattern;\r
@@ -346,6 +355,7 @@ QDataStream& operator>>(QDataStream &in, BlockImplementation &impl) {
   in >> impl.referenceXml;\r
   in >> impl.referenceMd5;\r
   // loading patterns\r
+  in >> impl.noPatterns;\r
   in >> impl.delta;\r
   in >> impl.consumptionPattern;\r
   in >> impl.productionPattern;\r