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

Private GIT Repository
1st commit of all files
[blast.git] / ReferenceInterface.cpp
1 #include "ReferenceInterface.h"
2 #include "AbstractBlock.h"
3
4 ReferenceInterface::ReferenceInterface(AbstractBlock* _owner)  throw(Exception) : AbstractInterface(_owner) {
5   if (_owner->isReferenceBlock()) throw(Exception(BLOCK_INVALID_TYPE));
6   multiplicity = 1;
7 }
8
9 ReferenceInterface::ReferenceInterface(AbstractBlock* _owner,
10                                        const QString& _name, const QString&_type,
11                                        const QString& _width,
12                                        int _direction,
13                                        int _purpose,
14                                        int _level,
15                                        int _multiplicity)
16 throw (Exception) : AbstractInterface(_owner, _name, _type, _width, _direction, _purpose, _level) {
17
18   if (_owner->isReferenceBlock()) throw(Exception(BLOCK_INVALID_TYPE));
19
20   multiplicity = _multiplicity;
21   if (direction == InOut) {
22     multiplicity = 1;
23   }
24 }
25
26 bool ReferenceInterface::isReferenceInterface() {
27   return true;
28 }
29
30 void ReferenceInterface::setMultiplicity(int _multiplicity) {
31   if (direction == InOut) {
32     multiplicity = 1;
33   }
34   else {
35     multiplicity = _multiplicity;
36   }
37 }
38
39 int ReferenceInterface::translatePurpose(const QString& txt) {
40   if (txt == "clock") {
41     return Clock;
42   }
43   else if (txt == "reset") {
44     return Reset;
45   }
46   if (txt == "wb") {
47     return Wishbone;
48   }
49   return Data;
50 }
51
52 int ReferenceInterface::translateLevel(const QString& txt) {
53
54   if (txt == "top") {
55     return Top;
56   }
57   return Basic;
58 }
59
60 int ReferenceInterface::translateMultiplicity(const QString& txt) {
61   bool ok;
62   int mult;
63   if (txt == "*") {
64     mult = -1;
65   }
66   else {
67     mult = txt.toInt(&ok);
68     if (!ok) {
69       mult = 1;
70     }
71   }
72   return mult;
73 }