]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/IntegerValue.cpp
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / IntegerValue.cpp
1 #include "IntegerValue.h"\r
2 \r
3 #include "NumberType.h"\r
4 #include "IntegerType.h"\r
5 #include "Range.h"\r
6 #include "Limit.h"\r
7 \r
8 #include <sstream>\r
9 #include "Constants.h"\r
10 \r
11 namespace Databoard {\r
12         namespace Value {\r
13                 IntegerValue::IntegerValue(Databoard::Type::DataType* dataBoard) : Value(dataBoard)\r
14                 {\r
15                 }\r
16 \r
17                 IntegerValue::~IntegerValue()\r
18                 {\r
19                 }\r
20 \r
21                 void IntegerValue::setValue(int value)\r
22                 {\r
23                         Databoard::Type::IntegerType* integerType = dynamic_cast<Databoard::Type::IntegerType*>(dataBoard);\r
24 \r
25                         if(integerType != NULL)\r
26                         {\r
27                                 this->value = value;\r
28                         }\r
29                 }\r
30 \r
31                 int IntegerValue::getValue()\r
32                 {\r
33                         return value;\r
34                 }\r
35 \r
36                 std::string IntegerValue::writeOut(int /*indent*/)\r
37                 {\r
38                         std::string s;\r
39 \r
40                         std::stringstream oss;\r
41 \r
42                         oss << value;\r
43 \r
44                         oss >> s;\r
45 \r
46                         return s;\r
47                 }\r
48 \r
49                 bool IntegerValue::equals(const Value* other)\r
50                 {\r
51                         IntegerValue* o = (IntegerValue*)other;\r
52 \r
53                         return (this->value < o->value);\r
54                 }\r
55 \r
56                 std::string IntegerValue::isValid()\r
57                 {\r
58                         if(dataBoard == NULL)\r
59                         {\r
60                                 return "IntegerValue: There is no datatype.";\r
61                         }\r
62 \r
63                         Databoard::Type::IntegerType* integerType = (Databoard::Type::IntegerType*)dataBoard;\r
64 \r
65                         if(integerType->getRange() == NULL)\r
66                         {\r
67                                 return STR_EMPTY;\r
68                         }\r
69 \r
70                         int minValue = integerType->minValue();\r
71                         int maxValue = integerType->maxValue();\r
72 \r
73                         if(integerType->getRange()->getLower()->getInclusive() == true)\r
74                         {\r
75                                 if(value < minValue)\r
76                                 {\r
77                                         return std::string("IntegerValue: ") + STR_ERROR_VALUE_SMALL;\r
78                                 }\r
79                         }\r
80                         else //if(integerType->getRange()->getLower()->getInclusive() == false)\r
81                         {\r
82                                 if(value <= minValue)\r
83                                 {\r
84                                         return std::string("IntegerValue: ") + STR_ERROR_VALUE_SMALL;\r
85                                 }\r
86                         }\r
87 \r
88                         if(integerType->getRange()->getUpper()->getInclusive() == true)\r
89                         {\r
90                                 if(value > maxValue)\r
91                                 {\r
92                                         return std::string("IntegerValue: ") + STR_ERROR_VALUE_LARGE;\r
93                                 }\r
94                         }\r
95                         else //if(integerType->getRange()->getUpper()->getInclusive() == false)\r
96                         {\r
97                                 if(value >= maxValue)\r
98                                 {\r
99                                         return std::string("IntegerValue: ") + STR_ERROR_VALUE_LARGE;\r
100                                 }\r
101                         }\r
102 \r
103                         return STR_EMPTY;\r
104                 }\r
105         }\r
106 }\r