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

Private GIT Repository
started VHDL generation of GroupBlock
[blast.git] / ConnectedInterface.cpp
index 69a484bf764016e681441871e66862caf6d8854d..3724417ce32c5ef4cc1ef32f2e0a0ecb58515e42 100644 (file)
@@ -6,15 +6,27 @@
 \r
 ConnectedInterface::ConnectedInterface(AbstractBlock* _owner) : AbstractInterface(_owner) {\r
   connectedFrom = NULL;\r
+  outputPattern = NULL;\r
+  inputModifier = NULL;\r
+      \r
 }\r
 \r
-ConnectedInterface::ConnectedInterface(AbstractBlock* _owner, const QString& _name, const QString& _type, const QString& _width, int _direction, int _purpose) : AbstractInterface(_owner, _name, _type, _width, _direction, _purpose) {\r
-  connectedFrom = NULL;\r
+ConnectedInterface::ConnectedInterface(AbstractBlock* _owner, const QString& _name, int _direction, int _purpose, const QString& _type, const QString& _width) : AbstractInterface(_owner, _name, _direction, _purpose, _type, _width) {\r
+  connectedFrom = NULL;  \r
+  outputPattern = NULL;\r
+  inputModifier = NULL;\r
+}\r
+\r
+ConnectedInterface::~ConnectedInterface() {  \r
+  if (outputPattern != NULL) delete outputPattern;\r
 }\r
 \r
+/* NB/ became useless since disconnectTo does the job\r
\r
 void ConnectedInterface::removeConnectedTo(ConnectedInterface *iface) {\r
-  connectedTo.removeOne(iface);\r
+  connectedTo.removeAll(iface);\r
 }\r
+*/\r
 \r
 void ConnectedInterface::clearConnections() {\r
   connectedFrom = NULL;\r
@@ -25,16 +37,37 @@ void ConnectedInterface::clearConnectedTo() {
   connectedTo.clear();\r
 }\r
 \r
-bool ConnectedInterface::connectTo(ConnectedInterface *iface) {\r
+void ConnectedInterface::setOutputPattern(QList<char>* pattern) {\r
+  if (outputPattern != NULL) delete outputPattern;\r
+  outputPattern = pattern; \r
+}\r
 \r
-  if (canConnectTo(iface)) {\r
-    connectedTo.append(iface);\r
-    return true;\r
+void ConnectedInterface::connectTo(ConnectedInterface *iface) {\r
+  \r
+  connectedTo.append(iface);\r
+  iface->connectedFrom = this;\r
+  ConnectedInterface* asso1 = (ConnectedInterface*)associatedIface;\r
+  ConnectedInterface* asso2 = (ConnectedInterface*)(iface->associatedIface);\r
+  if ((asso1 != NULL) && (asso2 != NULL)) {\r
+    asso1->connectedTo.append(asso2);\r
+    asso2->connectedFrom = asso1;\r
   }\r
+}\r
 \r
-  return false;\r
+void ConnectedInterface::disconnectTo(ConnectedInterface *iface) {\r
+  \r
+  connectedTo.removeAll(iface);\r
+  iface->connectedFrom = NULL;\r
+  ConnectedInterface* asso1 = (ConnectedInterface*)associatedIface;\r
+  ConnectedInterface* asso2 = (ConnectedInterface*)(iface->associatedIface);\r
+  if ((asso1 != NULL) && (asso2 != NULL)) {\r
+    asso1->connectedTo.removeAll(asso2);\r
+    asso2->connectedFrom = NULL;\r
+  }\r
 }\r
 \r
+\r
+/*\r
 bool ConnectedInterface::connectFrom(ConnectedInterface *iface) {\r
   if (canConnectFrom(iface)) {\r
     connectedFrom = iface;\r
@@ -42,6 +75,7 @@ bool ConnectedInterface::connectFrom(ConnectedInterface *iface) {
   }\r
   return false;\r
 }\r
+*/\r
 \r
 /* getConnectionToParentGroup() :\r
    if an interface among connectedTo is an interface of the parent group\r
@@ -66,3 +100,8 @@ ConnectedInterface *ConnectedInterface::getConnectionFromParentGroup() {
   }\r
   return NULL;\r
 }\r
+\r
+void ConnectedInterface::clearInputModifier() {\r
+  if (inputModifier != NULL) delete inputModifier;\r
+  inputModifier = NULL;\r
+}\r