]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/UnionType.cpp
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / UnionType.cpp
1 #include "UnionType.h"
2
3 #include "Component.h"
4
5 namespace Databoard {
6         namespace Type {
7
8                 UnionType::UnionType()
9                 {
10                 }
11
12                 //UnionType::UnionType(std::vector<Component*> components)
13                 //{
14                 //      for(int i = 0; i < (int)components.size(); ++i)
15                 //      {
16                 //              this->components.push_back(components.at(i));
17                 //      }
18                 //}
19
20                 UnionType::~UnionType()
21                 {
22                         for(int i = 0; i < (int)components.size(); ++i)
23                         {
24                                 delete components.at(i);
25                                 components.at(i) = NULL;
26                         }
27
28                         components.clear();
29                 }
30
31                 void UnionType::addComponent(std::string name, DataType* type)
32                 {
33                         Component* component = new Component(name, type);
34
35                         components.push_back(component);
36                 }
37
38                 int UnionType::count()
39                 {
40                         return (int)components.size();
41                 }
42
43                 int UnionType::getComponentIndex(std::string tagName)
44                 {
45                         for(int i = 0;i < (int)components.size(); ++i)
46                         {
47                                 if(components.at(i)->getName() == tagName)
48                                 {
49                                         return i;
50                                 }
51                         }
52
53                         return -1;
54                 }
55
56                 Component* UnionType::getComponent(int i)
57                 {
58                         if(i >= 0 && i < (int)components.size())
59                         {
60                                 return components.at(i);
61                         }
62
63                         return NULL;
64                 }
65
66                 //std::vector<Component*> UnionType::getComponents()
67                 //{
68                 //}
69
70                 std::string UnionType::writeOut(int /*indent*/)
71                 {
72                         std::string s;
73
74                         for(int i = 0; i < (int)components.size(); ++i)
75                         {
76                                 s += "| ";
77
78                                 s += components.at(i)->getName();
79
80                                 if(i != ((int)components.size()-1))
81                                 {
82                                         s += " ";
83                                 }
84                         }
85
86                         return s;
87                 }
88         }
89 }