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

Private GIT Repository
correct relative positionning of source/group
[blast.git] / BlockParameterGeneric.cpp
1 #include "BlockParameterGeneric.h"\r
2 #include "GroupBlock.h"\r
3 #include "FunctionalBlock.h"\r
4 \r
5 BlockParameterGeneric::BlockParameterGeneric() : BlockParameter() {\r
6   userValue = defaultValue;\r
7 }\r
8 \r
9 BlockParameterGeneric::BlockParameterGeneric(AbstractBlock* _owner, const QString &_name, const QString &_type, const QString &_value) : BlockParameter(_owner, _name, _type, _value) {\r
10   userValue = defaultValue;\r
11 }\r
12 \r
13 QVariant BlockParameterGeneric::getValue() {\r
14   if (isValueSet()) {\r
15     return userValue;\r
16   }\r
17   return defaultValue;\r
18 }\r
19 \r
20 bool BlockParameterGeneric::isGenericParameter() {\r
21   return true;\r
22 }\r
23 \r
24 void BlockParameterGeneric::setValue(const QString& _value) {\r
25   userValue = QVariant(_value);\r
26 }\r
27 \r
28 \r
29 bool BlockParameterGeneric::isValueSet() {\r
30   if (userValue.isNull()) return false;\r
31   return true;\r
32 }\r
33 \r
34 bool BlockParameterGeneric::isDefaultValue() {\r
35   if (userValue == defaultValue) return true;\r
36   return false;\r
37 }\r
38 \r
39 BlockParameter* BlockParameterGeneric::clone() {  \r
40 \r
41   BlockParameter* block = new BlockParameterGeneric(owner,name,getTypeString(),defaultValue.toString());\r
42   return block;\r
43 }\r
44 \r
45 QString BlockParameterGeneric::toVHDL(int context, int flags) {\r
46 \r
47   QString ret="";\r
48 \r
49 \r
50   if ((context == BlockParameter::Entity) || (context == BlockParameter::Component)) {\r
51 \r
52     QString formatValue = "%1 : %2 := %3";\r
53     QString formatNoValue = "%1 : %2";\r
54     if ((flags & BlockParameter::NoComma) == 0) {\r
55       formatValue.append(";");\r
56       formatNoValue.append(";");\r
57     }\r
58 \r
59     if (!userValue.isNull()) {\r
60       ret = formatValue.arg(name).arg(type).arg(userValue.toString());\r
61     }\r
62     else if (!defaultValue.isNull()) {\r
63       ret = formatValue.arg(name).arg(type).arg(defaultValue.toString());\r
64     }\r
65     else {\r
66       ret = formatNoValue.arg(name).arg(type);\r
67     }\r
68   }\r
69   else if (context == BlockParameter::Architecture) {\r
70     QString format = "%1 => %2";\r
71     if ((flags & BlockParameter::NoComma) == 0) {\r
72       format.append(";");\r
73     }\r
74     AbstractBlock* parent = owner->getParent();\r
75     BlockParameter* p = parent->getParameterFromName(name);\r
76     if (p != NULL) {\r
77       /* the parent group has a generic parameter with the same\r
78            name\r
79         */\r
80       ret = format.arg(name).arg(name);\r
81     }\r
82     else {\r
83       if (!userValue.isNull()) {\r
84         ret = format.arg(name).arg(userValue.toString());\r
85       }\r
86       else if (!defaultValue.isNull()) {\r
87         ret = format.arg(name).arg(defaultValue.toString());\r
88       }\r
89       else {\r
90         // abnormal case\r
91         ret = format.arg(name).arg("INVALID_VALUE");\r
92       }\r
93     }\r
94   }\r
95   return ret;\r
96 }\r
97 \r