name = reference->getName();\r
width = reference->getWidth();\r
direction = reference->getDirection();\r
- purpose = reference->getPurpose();\r
- level = reference->getLevel(); \r
- connectedFrom = NULL;\r
+ purpose = reference->getPurpose(); \r
+ connectedFrom = NULL; \r
}\r
\r
bool FunctionalInterface::isFunctionalInterface() {\r
FunctionalInterface *inter = new FunctionalInterface(owner, reference);\r
inter->setWidth(width);\r
inter->setDirection(direction);\r
- inter->setPurpose(purpose);\r
- inter->setLevel(level); \r
+ inter->setPurpose(purpose); \r
inter->connectFrom(NULL);\r
inter->setName(reference->getName()+"_"+QString::number(id+1));\r
return inter;\r
2 - iface is owned by the parent group of the block that owns this\r
2.1 - this is an output, iface is an output of the group\r
2.2 - both are inout\r
+ 3 - this is owned by a source block and iface is owned by the top group\r
\r
*/\r
if (direction == Input) return false;\r
if (iface->isReferenceInterface()) return false;\r
if (iface->getConnectedFrom() != NULL) return false;\r
-\r
+ // first case: interface of blocks within the same group\r
if (getOwner()->getParent() == iface->getOwner()->getParent()) {\r
\r
if ((direction == Output) && (iface->getDirection() == Input)) return true;\r
if ((direction == InOut) && (iface->getDirection() == InOut)) return true;\r
}\r
+ // second case: iface = interface of the group that contains owner of this\r
else if (getOwner()->getParent() == iface->getOwner()) {\r
if ((direction == Output) && (iface->getDirection() == Output)) return true;\r
if ((direction == InOut) && (iface->getDirection() == InOut)) return true;\r
}\r
+ else if ((getOwner()->isSourceBlock()) && (iface->getOwner()->isTopGroupBlock())) {\r
+ if ((direction == Output) && (iface->getDirection() == Input)) return true;\r
+ }\r
\r
return false;\r
\r