using namespace std;
using namespace Qt;
-
+/*!
+ * \brief The ConnectedInterface class represents an interface of block (functional or group) that may be connected from/to other interfaces
+ * A ConnectedInterface is used to establish connection between blocks.
+ */
class ConnectedInterface : public AbstractInterface {
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 QList<char>* getOutputPattern() { return outputPattern; }
// setters
+ void setOutputPattern(QList<char>* pattern);
// testers
inline bool isConnectedTo(){return connectedTo.length() != 0;}
virtual bool canConnectTo(AbstractInterface* iface) = 0;
virtual bool canConnectFrom(AbstractInterface* iface) = 0;
- // others
- bool connectTo(ConnectedInterface* iface);
- bool connectFrom(ConnectedInterface* iface);
+ // others
+ void connectTo(ConnectedInterface* iface);
+ void disconnectTo(ConnectedInterface* iface);
+ //bool connectFrom(ConnectedInterface* iface);
ConnectedInterface* getConnectionToParentGroup();
ConnectedInterface* getConnectionFromParentGroup();
- virtual AbstractInterface *clone() = 0;
-
- void removeConnectedTo(ConnectedInterface *inter);
+ virtual AbstractInterface *clone() = 0;
+ //void removeConnectedTo(ConnectedInterface *inter);
virtual void clearConnectedTo();
inline void clearConnectedFrom() { connectedFrom = NULL; }
//virtual void connectionsValidation(QStack<AbstractInterface*> *interfacetoValidate, QList<AbstractInterface*> *validatedInterfaces) throw(Exception) = 0;
protected:
+ /*!
+ * \brief connectedTo lists of connections to interfaces owned by other blocks (functional or group)
+ * Since the graph is oriented, and taking into account it modles a FPGA desing,
+ * this interface may be connected to several interfaces owned by other blocks (functional or group).
+ * connectedTo references such interfaces if they exist.
+ */
QList<ConnectedInterface*> connectedTo;
- ConnectedInterface* connectedFrom;
-
+ /*!
+ * \brief connectedFrom connection from an interface owned by another blocks (functional or group)
+ * Since the graph is oriented, and taking into account it modles a FPGA desing,
+ * 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;
+
+ // patterns
+ QList<char>* outputPattern; //! only usefull for output interfaces
};