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

Private GIT Repository
started VHDL generation of GroupBlock
[blast.git] / AbstractBlock.cpp
index 13adcae22b44098ea2cd9834481bda1d37e80428..3bb808ead3a61d5491e659821b8e426424e2ae3c 100644 (file)
@@ -3,9 +3,11 @@
 #include <QMessageBox>\r
 #include "AbstractInterface.h"\r
 #include "BlockParameter.h"\r
 #include <QMessageBox>\r
 #include "AbstractInterface.h"\r
 #include "BlockParameter.h"\r
+#include "Parameters.h"\r
 #include "GroupBlock.h"\r
 #include "ConnectedInterface.h"\r
 \r
 #include "GroupBlock.h"\r
 #include "ConnectedInterface.h"\r
 \r
+\r
 AbstractBlock::AbstractBlock() {\r
   name = "";\r
   parent = NULL;\r
 AbstractBlock::AbstractBlock() {\r
   name = "";\r
   parent = NULL;\r
@@ -13,7 +15,7 @@ AbstractBlock::AbstractBlock() {
 \r
 /*\r
 AbstractBlock::AbstractBlock(const QString& _name) {\r
 \r
 /*\r
 AbstractBlock::AbstractBlock(const QString& _name) {\r
-  name = normalizeName(_name);\r
+  name = Parameters::normalizeName(_name);\r
   parent = NULL;\r
 }\r
 */\r
   parent = NULL;\r
 }\r
 */\r
@@ -29,7 +31,7 @@ AbstractBlock::~AbstractBlock() {
 }\r
 \r
 void AbstractBlock::setName(const QString& str) {\r
 }\r
 \r
 void AbstractBlock::setName(const QString& str) {\r
-  name = normalizeName(str);\r
+  name = Parameters::normalizeName(str);\r
 }\r
 \r
 void AbstractBlock::setParent(AbstractBlock* _parent) {\r
 }\r
 \r
 void AbstractBlock::setParent(AbstractBlock* _parent) {\r
@@ -57,10 +59,12 @@ bool AbstractBlock::isSourceBlock() {
 }\r
 /* NB: a generator is a block that has no data inputs\r
  * and has at least one data output.\r
 }\r
 /* NB: a generator is a block that has no data inputs\r
  * and has at least one data output.\r
+ * By the way, blokcs that have no data input/output\r
+ * (like clkrstgen) are not generators !\r
  */\r
 bool AbstractBlock::isGeneratorBlock() {\r
   if (getDataInputs().size() > 0) return false;\r
  */\r
 bool AbstractBlock::isGeneratorBlock() {\r
   if (getDataInputs().size() > 0) return false;\r
-  \r
+  if (getDataOutputs().size() == 0) return false;\r
   return true;\r
 }\r
 \r
   return true;\r
 }\r
 \r
@@ -239,12 +243,7 @@ QList<BlockParameter *> AbstractBlock::getWishboneParameters() {
   return lst;\r
 }\r
 \r
   return lst;\r
 }\r
 \r
-QString AbstractBlock::normalizeName(const QString &name) {\r
-  QString s = name;\r
-  s.replace(QRegularExpression("[^a-zA-Z0-9_]"),"_");\r
-  s.replace(QRegularExpression("[_]+"),"_");\r
-  return s;\r
-}\r
+\r
 \r
 void AbstractBlock::connectClkReset() throw(Exception) {\r
 \r
 \r
 void AbstractBlock::connectClkReset() throw(Exception) {\r
 \r
@@ -286,9 +285,30 @@ void AbstractBlock::connectClkReset() throw(Exception) {
     fromClk->connectTo(toClk);\r
     fromRst->connectTo(toRst);\r
   }\r
     fromClk->connectTo(toClk);\r
     fromRst->connectTo(toRst);\r
   }\r
+}\r
 \r
 \r
+void AbstractBlock::generateEntity(QTextStream& out, bool hasController) throw(Exception) {\r
 \r
 \r
+  out << "entity " << name << " is" << endl;\r
+  try {\r
+    generateEntityOrComponentBody(out, 0, hasController);\r
+  }\r
+  catch(Exception e) {\r
+    throw(e);\r
+  }\r
+  out << "end entity " << name << ";" << endl << endl;\r
 }\r
 \r
 }\r
 \r
+void AbstractBlock::generateComponent(QTextStream& out, bool hasController) throw(Exception) {\r
+\r
+  out << "  component " << name << " is" << endl;\r
+  try {\r
+    generateEntityOrComponentBody(out, 2, hasController);\r
+  }\r
+  catch(Exception e) {\r
+    throw(e);\r
+  }\r
+  out << "  end component " << endl << endl;\r
+}\r
 \r
 \r
 \r
 \r