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

Private GIT Repository
started to include patterns in implementation
[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 \r
39   // setters\r
40 \r
41   // testers\r
42   bool isFunctionalInterface();\r
43   bool canConnectTo(AbstractInterface* iface);\r
44   bool canConnectFrom(AbstractInterface* iface);\r
45 \r
46   // others\r
47 \r
48   AbstractInterface* clone();\r
49 \r
50   void connectionsValidation(QStack<AbstractInterface*> *interfacetoValidate, QList<AbstractInterface*> *validatedInterfaces) throw(Exception);\r
51   int getInterfaceMultiplicity();\r
52 \r
53 private:\r
54 \r
55   ReferenceInterface* reference;  \r
56 \r
57 };\r
58 \r
59 #endif // __FUNCTIONALINTERFACE_H__\r