]> AND Private Git Repository - blast.git/blob - ConnectedInterface.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
modifying pattern methods to throw exceptions
[blast.git] / ConnectedInterface.h
1 #ifndef __CONNECTEDINTERFACE_H__
2 #define __CONNECTEDINTERFACE_H__
3
4 #include <iostream>
5
6 #include <QtCore>
7 #include <QtGui>
8
9 #include "AbstractInterface.h"
10 class ReferenceInterface;
11
12 #include "Exception.h"
13
14 using namespace std;
15 using namespace Qt;
16
17 /*!
18  * \brief The ConnectedInterface class represents an interface of block (functional or group) that may be connected from/to other interfaces
19  * A ConnectedInterface is used to establish connection between blocks.
20  */
21 class ConnectedInterface : public AbstractInterface {
22
23 public :
24
25   ConnectedInterface(AbstractBlock* _owner);
26   ConnectedInterface(AbstractBlock* _owner, const QString& _name, const QString& _type, const QString& _width, int _direction, int _purpose);
27   ~ConnectedInterface();
28   
29   // getters
30   inline QList<ConnectedInterface*> getConnectedTo() { return connectedTo;}
31   inline ConnectedInterface* getConnectedFrom() { return connectedFrom;}
32   inline QList<char>* getOutputPattern() { return outputPattern; }  
33
34   // setters
35   void setOutputPattern(QList<char>* pattern);
36
37   // testers
38   inline bool isConnectedTo(){return connectedTo.length() != 0;}
39   inline bool isConnectedFrom(){return connectedFrom != NULL;}
40   virtual bool canConnectTo(AbstractInterface* iface) = 0;
41   virtual bool canConnectFrom(AbstractInterface* iface) = 0;
42
43   // others  
44   void connectTo(ConnectedInterface* iface);
45   void disconnectTo(ConnectedInterface* iface);
46   //bool connectFrom(ConnectedInterface* iface);
47   ConnectedInterface* getConnectionToParentGroup();
48   ConnectedInterface* getConnectionFromParentGroup();
49
50   virtual AbstractInterface *clone() = 0;  
51   //void removeConnectedTo(ConnectedInterface *inter);
52
53   virtual void clearConnectedTo();
54   inline void clearConnectedFrom() { connectedFrom = NULL; }
55   virtual void clearConnections();
56   //virtual void connectionsValidation(QStack<AbstractInterface*> *interfacetoValidate, QList<AbstractInterface*> *validatedInterfaces) throw(Exception) = 0;  
57
58 protected:
59   /*!
60    * \brief connectedTo lists of connections to interfaces owned by other blocks (functional or group)
61    * Since the graph is oriented, and taking into account it modles a FPGA desing,
62    * this interface may be connected to several interfaces owned by other blocks (functional or group).
63    * connectedTo references such interfaces if they exist.
64    */
65   QList<ConnectedInterface*> connectedTo;
66   /*!
67    * \brief connectedFrom connection from an interface owned by another blocks (functional or group)
68    * Since the graph is oriented, and taking into account it modles a FPGA desing,
69    * there may be a single interface owned by another block (functional or group) that is connected to
70    * this interface. connecteFrom references such an interface if it exists.
71    */
72   ConnectedInterface* connectedFrom;  
73   
74   // patterns  
75   QList<char>* outputPattern; //! only usefull for output interfaces
76 };
77
78
79 #endif // __CONNECTEDINTERFACE_H__