#include "UnionType.h" #include "Component.h" namespace Databoard { namespace Type { UnionType::UnionType() { } //UnionType::UnionType(std::vector components) //{ // for(int i = 0; i < (int)components.size(); ++i) // { // this->components.push_back(components.at(i)); // } //} UnionType::~UnionType() { for(int i = 0; i < (int)components.size(); ++i) { delete components.at(i); components.at(i) = NULL; } components.clear(); } void UnionType::addComponent(std::string name, DataType* type) { Component* component = new Component(name, type); components.push_back(component); } int UnionType::count() { return (int)components.size(); } int UnionType::getComponentIndex(std::string tagName) { for(int i = 0;i < (int)components.size(); ++i) { if(components.at(i)->getName() == tagName) { return i; } } return -1; } Component* UnionType::getComponent(int i) { if(i >= 0 && i < (int)components.size()) { return components.at(i); } return NULL; } //std::vector UnionType::getComponents() //{ //} std::string UnionType::writeOut(int /*indent*/) { std::string s; for(int i = 0; i < (int)components.size(); ++i) { s += "| "; s += components.at(i)->getName(); if(i != ((int)components.size()-1)) { s += " "; } } return s; } } }