1 #ifndef __GROUPINTERFACE_H__
2 #define __GROUPINTERFACE_H__
9 #include "ConnectedInterface.h"
10 #include "Exception.h"
19 - A GroupInterface instance can be obtained by linking it to an interface of an inner block, via a
20 contextual menu that appears when right clicking on the inner interface item.
21 Thus, it is impossible to create a "bypass": an input group interface, directly linked to an output
23 - the direction (in/out/bi) of this interface is the same as that of the inner interface.
24 - except for the top group, a correct design will always have group interfaces that have
25 both connectedTo and connectedFrom containings something. Indeed, a group interface must be seen
26 as a tunnel to communicate data from outside the group to blocks within the group.
27 Thus, an input group interface has connectedFrom refering to an output interface of a block outside the group
28 and connectedTo listing input interfaces of blocks within the group.
29 An output group interface has connectedFrom refering to an output interface of a bock within the group,
30 and connectedTo listing input interface of blocks outside the group.
35 class GroupInterface : public ConnectedInterface {
38 GroupInterface(AbstractBlock* _owner, const QString& _name, int _direction, int _purpose) throw (Exception);
42 int getClockDomain() throw(Exception); // determine at which freq. is synchronized iface
46 bool isGroupInterface();
47 bool canConnectTo(AbstractInterface* iface, bool testClock);
48 bool canConnectFrom(AbstractInterface* iface, bool testClock);
51 AbstractInterface *clone();
52 QList<ConnectedInterface *> getForwardFunctionalInterfaces(GroupInterface* groupIface);
54 void connectionsValidation(QStack<AbstractInterface *> *interfacetoValidate, QList<AbstractInterface *> *validatedInterfaces) throw(Exception);
58 #endif // __GROUPINTERFACE_H__