]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/UnionValue.cpp
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / UnionValue.cpp
diff --git a/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/UnionValue.cpp b/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/UnionValue.cpp
new file mode 100644 (file)
index 0000000..67568e7
--- /dev/null
@@ -0,0 +1,96 @@
+#include "UnionValue.h"\r
+\r
+#include "UnionType.h"\r
+#include "Component.h"\r
+#include "Constants.h"\r
+\r
+namespace Databoard {\r
+       namespace Value {\r
+               UnionValue::UnionValue(Databoard::Type::DataType* dataBoard) : Value(dataBoard)\r
+               {\r
+                       tag = -1;\r
+                       value = NULL;\r
+               }\r
+\r
+               UnionValue::~UnionValue()\r
+               {\r
+                       if(value != NULL)\r
+                       {\r
+                               delete value;\r
+                               value = NULL;\r
+                       }\r
+               }\r
+\r
+               int UnionValue::getTag()\r
+               {\r
+                       return tag;\r
+               }\r
+\r
+               Value* UnionValue::getValue()\r
+               {\r
+                       return value;\r
+               }\r
+\r
+               void UnionValue::setValue(int tag, Value* value)\r
+               {\r
+                       this->tag = tag;\r
+                       this->value = value;\r
+               }\r
+\r
+               std::string UnionValue::writeOut(int /*indent*/)\r
+               {\r
+                       std::string s;\r
+\r
+                       Databoard::Type::UnionType* unionType = (Databoard::Type::UnionType*)dataBoard;\r
+\r
+                       Databoard::Type::Component* component = unionType->getComponent(tag);\r
+\r
+                       if(component != NULL)\r
+                       {\r
+                               s += component->getName();\r
+                               s += " ";\r
+                       }\r
+\r
+                       if(value != NULL)\r
+                       {\r
+                               s += value->writeOut();\r
+                       }\r
+\r
+                       //s += value;\r
+\r
+                       //if(unit.size() != 0)\r
+                       //{\r
+                       //      s += "(Unit=\"" + unit + "\")";\r
+                       //}\r
+\r
+                       return s;\r
+               }\r
+\r
+               bool UnionValue::equals(const Value* other)\r
+               {\r
+                       UnionValue* o = (UnionValue*)other;\r
+\r
+                       if(tag != o->tag)\r
+                       {\r
+                               return (tag < o->tag);\r
+                       }\r
+\r
+                       return (value->equals(o->value));\r
+               }\r
+\r
+               std::string UnionValue::isValid()\r
+               {\r
+                       if(dataBoard == NULL)\r
+                       {\r
+                               return "LongValue: There is no datatype.";\r
+                       }\r
+\r
+                       if(value == NULL)\r
+                       {\r
+                               return STR_ERROR;\r
+                       }\r
+\r
+                       return value->isValid();\r
+               }\r
+       }\r
+}\r