#include "AbstractInterface.h"
class ReferenceInterface;
+#include "AbstractInputModifier.h"
+
#include "Exception.h"
public :
ConnectedInterface(AbstractBlock* _owner);
- ConnectedInterface(AbstractBlock* _owner, const QString& _name, const QString& _type, const QString& _width, int _direction, int _purpose);
+ ConnectedInterface(AbstractBlock* _owner, const QString& _name, int _direction, int _purpose, const QString& _type, const QString& _width);
+ ~ConnectedInterface();
+
// getters
inline QList<ConnectedInterface*> getConnectedTo() { return connectedTo;}
- inline ConnectedInterface* getConnectedFrom() { return connectedFrom;}
+ inline ConnectedInterface* getConnectedFrom() { return connectedFrom;}
+ inline QList<char>* getOutputPattern() { return outputPattern; }
+ inline AbstractInputModifier* getInputModifier() { return inputModifier; }
- // setters
+ // setters
+ void setOutputPattern(QList<char>* pattern);
+ inline void setInputModifier(AbstractInputModifier* mod) { inputModifier = mod; }
// testers
inline bool isConnectedTo(){return connectedTo.length() != 0;}
+ inline bool isConnectedToMany(){return connectedTo.length()>=2;}
inline bool isConnectedFrom(){return connectedFrom != NULL;}
virtual bool canConnectTo(AbstractInterface* iface) = 0;
virtual bool canConnectFrom(AbstractInterface* iface) = 0;
// others
- bool connectTo(ConnectedInterface* iface);
- bool connectFrom(ConnectedInterface* iface);
+ void connectTo(ConnectedInterface* iface);
+ void disconnectTo(ConnectedInterface* iface);
+ //bool connectFrom(ConnectedInterface* iface);
ConnectedInterface* getConnectionToParentGroup();
ConnectedInterface* getConnectionFromParentGroup();
+ void clearInputModifier();
virtual AbstractInterface *clone() = 0;
- void removeConnectedTo(ConnectedInterface *inter);
+ //void removeConnectedTo(ConnectedInterface *inter);
virtual void clearConnectedTo();
inline void clearConnectedFrom() { connectedFrom = NULL; }
* there may be a single interface owned by another block (functional or group) that is connected to
* this interface. connecteFrom references such an interface if it exists.
*/
- ConnectedInterface* connectedFrom;
- /*!
- * \brief associatedIface the control (resp. data) interface that is bounded to this data (resp. control) interface
- * If a reference block is designed to be fully integrated in Blast, nearly every data interface is bounded
- * to a control interface that signals if the value presented on the interface is valid or not. associatedIface
- * references this control interface if this is a data interface, and a data interface is this is a control interface.
- * Note that the association is done by the call of setAssociatedIface() that must be done only for a control interface.
- * (NB: a test is done in the method to prevent the other case).
- */
- ConnectedInterface* associatedIface;
+ ConnectedInterface* connectedFrom;
+ AbstractInputModifier* inputModifier; // if needed, represent a block taht does not appear on screen but taht will modify the stream.
+
+ // patterns
+ QList<char>* outputPattern; //! only usefull for output interfaces
};