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

Private GIT Repository
modifying pattern methods to throw exceptions
[blast.git] / FunctionalInterface.h
1 #ifndef __FUNCTIONALINTERFACE_H__\r
2 #define __FUNCTIONALINTERFACE_H__\r
3 \r
4 #include <iostream>\r
5 \r
6 #include <QtCore>\r
7 #include <QtGui>\r
8 \r
9 #include "ConnectedInterface.h"\r
10 class ReferenceInterface;\r
11 \r
12 #include "Exception.h"\r
13 \r
14 using namespace std;\r
15 using namespace Qt;\r
16 \r
17 \r
18 /* NOTES :\r
19 \r
20   - A FunctionalInterface instance can be obtained by:\r
21      - cloning an existing ReferenceInterface when a new functionalBlock is created by cloning a ReferenceBlock\r
22      - cloning an existing FunctionalInterface when its reference has a multiplicity > 1\r
23 \r
24    - For an Input, the list connectedFrom can contain ONLY ONE element\r
25    - For an Output, the list connectedTo can contain several element\r
26    - If connectedTo contains something, then connectedFrom is NULL\r
27    - If connectedFrom contains something, the connectedTo is empty.\r
28  */\r
29 \r
30 class FunctionalInterface : public ConnectedInterface {\r
31 \r
32 public :\r
33   FunctionalInterface();\r
34   FunctionalInterface(AbstractBlock* _owner, ReferenceInterface* _reference) throw(Exception); // create a default interface (see AbstractInterface)\r
35 \r
36   // getters\r
37   inline ReferenceInterface* getReference() { return reference; }\r
38   //inline QList<char>* getConsumptionPattern() { return consumptionPattern; }\r
39   //inline QList<char>* getProductionPattern() { return productionPattern; }  \r
40 \r
41   // setters\r
42   //inline void setConsumptionPattern(QList<char>* pattern) { consumptionPattern = pattern; }\r
43   //inline void setProductionPattern(QList<char>* pattern) { productionPattern = pattern; }  \r
44 \r
45   // testers\r
46   bool isFunctionalInterface();\r
47   bool canConnectTo(AbstractInterface* iface);\r
48   bool canConnectFrom(AbstractInterface* iface);\r
49 \r
50   // others\r
51 \r
52   AbstractInterface* clone();\r
53 \r
54   void connectionsValidation(QStack<AbstractInterface*> *interfacetoValidate, QList<AbstractInterface*> *validatedInterfaces) throw(Exception);\r
55   int getInterfaceMultiplicity();\r
56 \r
57 private:\r
58 \r
59   ReferenceInterface* reference;  \r
60   \r
61   //patterns\r
62   //QList<char>* consumptionPattern; //! only usefull for input interfaces\r
63   //QList<char>* productionPattern; //! only usefull for output interfaces  \r
64   //QString admittance; //! only usefull for input interfaces  \r
65 };\r
66 \r
67 #endif // __FUNCTIONALINTERFACE_H__\r