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

Private GIT Repository
finished testbench generation
[blast.git] / AbstractBoxItem.cpp
index 925cd6fa83ef1ed479163fe72077779bd2923780..0a820554711e7a4aab27f35c9406bdcc01ff04de 100644 (file)
 #include "AbstractInterface.h"
 #include "ConnectedInterface.h"
 
+int AbstractBoxItem::NoLock = 0;
+int AbstractBoxItem::Position = 1;
+int AbstractBoxItem::Dimension = 2;
+int AbstractBoxItem::Interfaces = 4;
+int AbstractBoxItem::Names = 8;
 
-AbstractBoxItem::  AbstractBoxItem(AbstractBlock *_refBlock, Dispatcher *_dispatcher, Parameters *_params, QGraphicsItem *parent) : QGraphicsItem(parent) {
+AbstractBoxItem::AbstractBoxItem(AbstractBlock *_refBlock, Dispatcher *_dispatcher, Parameters *_params, int _lock, QGraphicsItem *parent) : QGraphicsItem(parent) {
   dispatcher = _dispatcher;
   params = _params;
   refBlock = _refBlock;  
+  lock = _lock;
   QFontMetrics fmId(params->defaultBlockFont);
   nameWidth = fmId.width(refBlock->getName());
   nameHeight = fmId.height();
@@ -35,6 +41,7 @@ AbstractBoxItem::  AbstractBoxItem(AbstractBlock *_refBlock, Dispatcher *_dispat
 
   selected = false;
   currentInterface = NULL;
+  visible = true;
   rstClkVisible = false;
   wishboneVisible = false;
 
@@ -43,10 +50,11 @@ AbstractBoxItem::  AbstractBoxItem(AbstractBlock *_refBlock, Dispatcher *_dispat
   // NOTE : initInterfaces() is only called in subclasses
 }
 
-AbstractBoxItem::AbstractBoxItem(Dispatcher *_dispatcher, Parameters *_params, QGraphicsItem* parent) : QGraphicsItem(parent) {
+AbstractBoxItem::AbstractBoxItem(Dispatcher *_dispatcher, Parameters *_params, int _lock, QGraphicsItem* parent) : QGraphicsItem(parent) {
   dispatcher = _dispatcher;
-  params = _params;
+  params = _params;  
   refBlock = NULL;
+  lock = _lock;
   nameWidth = 0;
   nameHeight = 0;
   nameMargin = 10;
@@ -64,6 +72,7 @@ AbstractBoxItem::AbstractBoxItem(Dispatcher *_dispatcher, Parameters *_params, Q
 
   selected = false;
   currentInterface = NULL;
+  visible = true;
   rstClkVisible = false;
   wishboneVisible = false;
   
@@ -87,7 +96,7 @@ bool AbstractBoxItem::isGroupItem() {
   return false;
 }
 
-bool AbstractBoxItem::isSourceItem() {
+bool AbstractBoxItem::isStimuliItem() {
   return false;
 }
 
@@ -128,7 +137,7 @@ void AbstractBoxItem::setRefBlock(AbstractBlock* _refBlock) {
   nameHeight = fmId.height();
 }
 
-void AbstractBoxItem::initInterfaceItems() {
+void AbstractBoxItem::createInterfaceItems(Parameters::Direction posInputs, Parameters::Direction posOutputs, Parameters::Direction posBidirs) {
   /* TO DO : creating all needed InterfaceItem, with by default, input at west and output at east */
   int orientation = Parameters::West;
 
@@ -139,11 +148,11 @@ void AbstractBoxItem::initInterfaceItems() {
     if (inter->getPurpose() != AbstractInterface::Control) {
       InterfaceItem *item;
       if(inter->getDirection() == AbstractInterface::Input){
-        orientation = Parameters::West;
+        orientation = posInputs;
       } else if(inter->getDirection() == AbstractInterface::Output){
-        orientation = Parameters::East;
+        orientation = posOutputs;
       } else if(inter->getDirection() == AbstractInterface::InOut){
-        orientation = Parameters::North;
+        orientation = posBidirs;
       }
       item = new InterfaceItem(0.0 , orientation, (ConnectedInterface *)inter, this, params);
       interfaces.append(item);        
@@ -295,7 +304,7 @@ QRectF AbstractBoxItem::boundingRectInScene() {
 */
 bool AbstractBoxItem::isInterfaces(int orientation) const {
   foreach(InterfaceItem* inter, interfaces) {
-    if (inter->getOrientation() == orientation) return true;
+    if ((inter->visible) && (inter->getOrientation() == orientation)) return true;
   }
   return false;
 }