]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/Limit.cpp
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / Limit.cpp
1 #include "Limit.h"\r
2 \r
3 #include "Constants.h"\r
4 #include <sstream>\r
5 \r
6 #ifdef max\r
7 #undef max\r
8 #endif\r
9 #ifdef min\r
10 #undef min\r
11 #endif\r
12 \r
13 #include <algorithm>\r
14 \r
15 namespace Databoard {\r
16 \r
17         Limit::Limit(bool isLower)\r
18         {\r
19                 this->isLower = isLower;\r
20                 isInclusive = false;\r
21         }\r
22 \r
23         Limit::~Limit()\r
24         {\r
25         }\r
26 \r
27         void Limit::setValue(std::string value)\r
28         {\r
29                 this->value = value;\r
30         }\r
31 \r
32         std::string Limit::getValue()\r
33         {\r
34                 return value;\r
35         }\r
36 \r
37         double Limit::getDouble(double value)\r
38         {\r
39                 if(this->value.size() > 0)\r
40                 {\r
41                         double c;\r
42 \r
43                         std::istringstream iss(this->value);\r
44 \r
45                         iss >> c;\r
46 \r
47                         if(isLower == true)\r
48                         {\r
49                                 c = std::max(value, c);\r
50                         }\r
51                         else\r
52                         {\r
53                                 c = std::min(value, c);\r
54                         }\r
55 \r
56                         return c;\r
57                 }\r
58                 else\r
59                 {\r
60                         return value;\r
61                 }\r
62         }\r
63 \r
64         float Limit::getFloat(float value)\r
65         {\r
66                 if(this->value.size() > 0)\r
67                 {\r
68                         float c;\r
69 \r
70                         std::istringstream iss(this->value);\r
71 \r
72                         iss >> c;\r
73 \r
74                         if(isLower == true)\r
75                         {\r
76                                 c = std::max(value, c);\r
77                         }\r
78                         else\r
79                         {\r
80                                 c = std::min(value, c);\r
81                         }\r
82 \r
83                         return c;\r
84                 }\r
85                 else\r
86                 {\r
87                         return value;\r
88                 }\r
89         }\r
90 \r
91         int Limit::getInteger(int value)\r
92         {\r
93                 if(this->value.size() > 0)\r
94                 {\r
95                         int c;\r
96 \r
97                         std::istringstream iss(this->value);\r
98 \r
99                         iss >> c;\r
100 \r
101                         if(isLower == true)\r
102                         {\r
103                                 c = std::max(value, c);\r
104                         }\r
105                         else\r
106                         {\r
107                                 c = std::min(value, c);\r
108                         }\r
109 \r
110                         return c;\r
111                 }\r
112                 else\r
113                 {\r
114                         return value;\r
115                 }\r
116         }\r
117 \r
118         long Limit::getLong(long value)\r
119         {\r
120                 if(this->value.size() > 0)\r
121                 {\r
122                         long c;\r
123 \r
124                         std::istringstream iss(this->value);\r
125 \r
126                         iss >> c;\r
127 \r
128                         if(isLower == true)\r
129                         {\r
130                                 c = std::max(value, c);\r
131                         }\r
132                         else\r
133                         {\r
134                                 c = std::min(value, c);\r
135                         }\r
136 \r
137                         return c;\r
138                 }\r
139                 else\r
140                 {\r
141                         return value;\r
142                 }\r
143         }\r
144 \r
145         char Limit::getByte(char value)\r
146         {\r
147                 if(this->value.size() > 0)\r
148                 {\r
149                         char c;\r
150 \r
151                         std::istringstream iss(this->value);\r
152 \r
153                         iss >> c;\r
154 \r
155                         if(isLower == true)\r
156                         {\r
157                                 c = std::max(value, c);\r
158                         }\r
159                         else\r
160                         {\r
161                                 c = std::min(value, c);\r
162                         }\r
163 \r
164                         return c;\r
165                 }\r
166                 else\r
167                 {\r
168                         return value;\r
169                 }\r
170         }\r
171 \r
172         void Limit::setInclusive()\r
173         {\r
174                 isInclusive = true;\r
175         }\r
176 \r
177         bool Limit::getInclusive()\r
178         {\r
179                 return isInclusive;\r
180         }\r
181 \r
182         std::string Limit::writeOut()\r
183         {\r
184                 std::string s;\r
185 \r
186                 if(isLower == true)\r
187                 {\r
188                         if(isInclusive == true)\r
189                         {\r
190                                 s += "[";\r
191                         }\r
192                         else\r
193                         {\r
194                                 s += "(";\r
195                         }\r
196                 }\r
197 \r
198                 s += value;\r
199 \r
200                 if(isLower == false)\r
201                 {\r
202                         if(isInclusive == true)\r
203                         {\r
204                                 s += "]";\r
205                         }\r
206                         else\r
207                         {\r
208                                 s += ")";\r
209                         }\r
210                 }\r
211 \r
212                 return s;\r
213         }\r
214 }\r