]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/UnionType.cpp
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / UnionType.cpp
diff --git a/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/UnionType.cpp b/bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/UnionType.cpp
new file mode 100644 (file)
index 0000000..f7f9bcd
--- /dev/null
@@ -0,0 +1,89 @@
+#include "UnionType.h"\r
+\r
+#include "Component.h"\r
+\r
+namespace Databoard {\r
+       namespace Type {\r
+\r
+               UnionType::UnionType()\r
+               {\r
+               }\r
+\r
+               //UnionType::UnionType(std::vector<Component*> components)\r
+               //{\r
+               //      for(int i = 0; i < (int)components.size(); ++i)\r
+               //      {\r
+               //              this->components.push_back(components.at(i));\r
+               //      }\r
+               //}\r
+\r
+               UnionType::~UnionType()\r
+               {\r
+                       for(int i = 0; i < (int)components.size(); ++i)\r
+                       {\r
+                               delete components.at(i);\r
+                               components.at(i) = NULL;\r
+                       }\r
+\r
+                       components.clear();\r
+               }\r
+\r
+               void UnionType::addComponent(std::string name, DataType* type)\r
+               {\r
+                       Component* component = new Component(name, type);\r
+\r
+                       components.push_back(component);\r
+               }\r
+\r
+               int UnionType::count()\r
+               {\r
+                       return (int)components.size();\r
+               }\r
+\r
+               int UnionType::getComponentIndex(std::string tagName)\r
+               {\r
+                       for(int i = 0;i < (int)components.size(); ++i)\r
+                       {\r
+                               if(components.at(i)->getName() == tagName)\r
+                               {\r
+                                       return i;\r
+                               }\r
+                       }\r
+\r
+                       return -1;\r
+               }\r
+\r
+               Component* UnionType::getComponent(int i)\r
+               {\r
+                       if(i >= 0 && i < (int)components.size())\r
+                       {\r
+                               return components.at(i);\r
+                       }\r
+\r
+                       return NULL;\r
+               }\r
+\r
+               //std::vector<Component*> UnionType::getComponents()\r
+               //{\r
+               //}\r
+\r
+               std::string UnionType::writeOut(int /*indent*/)\r
+               {\r
+                       std::string s;\r
+\r
+                       for(int i = 0; i < (int)components.size(); ++i)\r
+                       {\r
+                               s += "| ";\r
+\r
+                               s += components.at(i)->getName();\r
+\r
+                               if(i != ((int)components.size()-1))\r
+                               {\r
+                                       s += " ";\r
+                               }\r
+                       }\r
+\r
+                       return s;\r
+               }\r
+       }\r
+}\r