--- /dev/null
+#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