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

Private GIT Repository
changed sources to stimulis
[blast.git] / SpecialBlock.cpp
1 #include "SpecialBlock.h"\r
2 #include "FunctionalInterface.h"\r
3 \r
4 SpecialBlock::SpecialBlock(int _type, GroupBlock* _parent, ReferenceBlock* _reference, bool createIfaces) throw(Exception) : FunctionalBlock(_parent, _reference, createIfaces) {\r
5   specialType = _type;\r
6 }\r
7 \r
8 SpecialBlock::~SpecialBlock() {\r
9 }\r
10 \r
11 bool SpecialBlock::isSpecialBlock() {\r
12   return true;\r
13 }\r
14 \r
15 void SpecialBlock::checkInputPatternCompatibility() throw(Exception) {\r
16   try {\r
17     switch(specialType) {\r
18     case Source :\r
19       checkInputPatternCompatibilitySource();\r
20       break;\r
21     case Sink :\r
22       checkInputPatternCompatibilitySink();\r
23       break;\r
24     case ClkConvert :\r
25       checkInputPatternCompatibilityClockConvert();\r
26       break;\r
27     default:\r
28       break;\r
29     }\r
30   }\r
31   catch(Exception e) {\r
32     throw (e);\r
33   }\r
34 }\r
35 \r
36 void SpecialBlock::computeOutputPattern(int nbExec) throw(Exception) {\r
37   try {\r
38     switch(specialType) {\r
39     case Source :\r
40       computeOutputPatternSource(nbExec);\r
41       break;\r
42     case Sink :\r
43       computeOutputPatternSink(nbExec);\r
44       break;\r
45     case ClkConvert :\r
46       computeOutputPatternClockConvert(nbExec);\r
47       break;    \r
48     default:\r
49       break;\r
50     }\r
51   }\r
52   catch(Exception e) {\r
53     throw (e);\r
54   }\r
55 }\r
56 \r
57 void SpecialBlock::checkInputPatternCompatibilitySource() throw(Exception) {\r
58 }\r
59 void SpecialBlock::computeOutputPatternSource(int nbExec) throw(Exception) {\r
60 \r
61   cout << "computing output pattern of " << qPrintable(name) << " for " << nbExec << " executions" << endl;\r
62   foreach(AbstractInterface* iface, getControlOutputs()) {\r
63     FunctionalInterface* connIface = AI_TO_FUN(iface);\r
64     // create output pattern\r
65     QList<char>* pp = productionPattern.value(connIface);\r
66     QList<char>* pattern = new QList<char>(*pp);\r
67     for(int i=1;i<nbExec;i++) pattern->append(*pp);\r
68     // assign pattern to interface\r
69     connIface->setOutputPattern(pattern);\r
70     // store it in QMap\r
71     outputPattern.insert(connIface,pattern);\r
72   }\r
73   setOutputPatternComputed(true);\r
74 }\r
75 \r
76 void SpecialBlock::checkInputPatternCompatibilitySink() throw(Exception) {\r
77 }\r
78 void SpecialBlock::computeOutputPatternSink(int nbExec) throw(Exception) {\r
79 }\r
80 \r
81 void SpecialBlock::checkInputPatternCompatibilityClockConvert() throw(Exception) {\r
82 }\r
83 void SpecialBlock::computeOutputPatternClockConvert(int nbExec) throw(Exception) {\r
84 }\r
85 \r
86 \r