]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/Limit.cpp b/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/Limit.cpp
new file mode 100644 (file)
index 0000000..3a861bf
--- /dev/null
@@ -0,0 +1,214 @@
+#include "Limit.h"\r
+\r
+#include "Constants.h"\r
+#include <sstream>\r
+\r
+#ifdef max\r
+#undef max\r
+#endif\r
+#ifdef min\r
+#undef min\r
+#endif\r
+\r
+#include <algorithm>\r
+\r
+namespace Databoard {\r
+\r
+       Limit::Limit(bool isLower)\r
+       {\r
+               this->isLower = isLower;\r
+               isInclusive = false;\r
+       }\r
+\r
+       Limit::~Limit()\r
+       {\r
+       }\r
+\r
+       void Limit::setValue(std::string value)\r
+       {\r
+               this->value = value;\r
+       }\r
+\r
+       std::string Limit::getValue()\r
+       {\r
+               return value;\r
+       }\r
+\r
+       double Limit::getDouble(double value)\r
+       {\r
+               if(this->value.size() > 0)\r
+               {\r
+                       double c;\r
+\r
+                       std::istringstream iss(this->value);\r
+\r
+                       iss >> c;\r
+\r
+                       if(isLower == true)\r
+                       {\r
+                               c = std::max(value, c);\r
+                       }\r
+                       else\r
+                       {\r
+                               c = std::min(value, c);\r
+                       }\r
+\r
+                       return c;\r
+               }\r
+               else\r
+               {\r
+                       return value;\r
+               }\r
+       }\r
+\r
+       float Limit::getFloat(float value)\r
+       {\r
+               if(this->value.size() > 0)\r
+               {\r
+                       float c;\r
+\r
+                       std::istringstream iss(this->value);\r
+\r
+                       iss >> c;\r
+\r
+                       if(isLower == true)\r
+                       {\r
+                               c = std::max(value, c);\r
+                       }\r
+                       else\r
+                       {\r
+                               c = std::min(value, c);\r
+                       }\r
+\r
+                       return c;\r
+               }\r
+               else\r
+               {\r
+                       return value;\r
+               }\r
+       }\r
+\r
+       int Limit::getInteger(int value)\r
+       {\r
+               if(this->value.size() > 0)\r
+               {\r
+                       int c;\r
+\r
+                       std::istringstream iss(this->value);\r
+\r
+                       iss >> c;\r
+\r
+                       if(isLower == true)\r
+                       {\r
+                               c = std::max(value, c);\r
+                       }\r
+                       else\r
+                       {\r
+                               c = std::min(value, c);\r
+                       }\r
+\r
+                       return c;\r
+               }\r
+               else\r
+               {\r
+                       return value;\r
+               }\r
+       }\r
+\r
+       long Limit::getLong(long value)\r
+       {\r
+               if(this->value.size() > 0)\r
+               {\r
+                       long c;\r
+\r
+                       std::istringstream iss(this->value);\r
+\r
+                       iss >> c;\r
+\r
+                       if(isLower == true)\r
+                       {\r
+                               c = std::max(value, c);\r
+                       }\r
+                       else\r
+                       {\r
+                               c = std::min(value, c);\r
+                       }\r
+\r
+                       return c;\r
+               }\r
+               else\r
+               {\r
+                       return value;\r
+               }\r
+       }\r
+\r
+       char Limit::getByte(char value)\r
+       {\r
+               if(this->value.size() > 0)\r
+               {\r
+                       char c;\r
+\r
+                       std::istringstream iss(this->value);\r
+\r
+                       iss >> c;\r
+\r
+                       if(isLower == true)\r
+                       {\r
+                               c = std::max(value, c);\r
+                       }\r
+                       else\r
+                       {\r
+                               c = std::min(value, c);\r
+                       }\r
+\r
+                       return c;\r
+               }\r
+               else\r
+               {\r
+                       return value;\r
+               }\r
+       }\r
+\r
+       void Limit::setInclusive()\r
+       {\r
+               isInclusive = true;\r
+       }\r
+\r
+       bool Limit::getInclusive()\r
+       {\r
+               return isInclusive;\r
+       }\r
+\r
+       std::string Limit::writeOut()\r
+       {\r
+               std::string s;\r
+\r
+               if(isLower == true)\r
+               {\r
+                       if(isInclusive == true)\r
+                       {\r
+                               s += "[";\r
+                       }\r
+                       else\r
+                       {\r
+                               s += "(";\r
+                       }\r
+               }\r
+\r
+               s += value;\r
+\r
+               if(isLower == false)\r
+               {\r
+                       if(isInclusive == true)\r
+                       {\r
+                               s += "]";\r
+                       }\r
+                       else\r
+                       {\r
+                               s += ")";\r
+                       }\r
+               }\r
+\r
+               return s;\r
+       }\r
+}\r