/src/Fast-DDS/src/cpp/xmlparser/XMLTree.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef _XML_TREE_ |
2 | | #define _XML_TREE_ |
3 | | |
4 | | #include <map> |
5 | | #include <memory> |
6 | | #include <string> |
7 | | #include <vector> |
8 | | |
9 | | namespace eprosima { |
10 | | namespace fastdds { |
11 | | namespace xmlparser { |
12 | | |
13 | | enum class NodeType |
14 | | { |
15 | | PROFILES, |
16 | | PARTICIPANT, |
17 | | PUBLISHER, |
18 | | SUBSCRIBER, |
19 | | RTPS, |
20 | | QOS_PROFILE, |
21 | | APPLICATION, |
22 | | TYPE, |
23 | | TOPIC, |
24 | | DATA_WRITER, |
25 | | DATA_READER, |
26 | | ROOT, |
27 | | TYPES, |
28 | | LOG, |
29 | | REQUESTER, |
30 | | REPLIER, |
31 | | LIBRARY_SETTINGS, |
32 | | DOMAINPARTICIPANT_FACTORY |
33 | | }; |
34 | | |
35 | | class BaseNode |
36 | | { |
37 | | public: |
38 | | |
39 | | BaseNode( |
40 | | NodeType type) |
41 | 316k | : data_type_(type) |
42 | 316k | , parent_(nullptr) |
43 | 316k | { |
44 | 316k | } |
45 | | |
46 | 316k | virtual ~BaseNode() = default; |
47 | | |
48 | | BaseNode( |
49 | | const BaseNode&) = delete; |
50 | | BaseNode& operator =( |
51 | | const BaseNode&) = delete; |
52 | | |
53 | | BaseNode( |
54 | | BaseNode&&) = default; |
55 | | BaseNode& operator =( |
56 | | BaseNode&&) = default; |
57 | | |
58 | | NodeType getType() const |
59 | 293k | { |
60 | 293k | return data_type_; |
61 | 293k | } |
62 | | |
63 | | void addChild( |
64 | | std::unique_ptr<BaseNode> child) |
65 | 189k | { |
66 | 189k | child->setParent(this); |
67 | 189k | children.push_back(std::move(child)); |
68 | 189k | } |
69 | | |
70 | | bool removeChild( |
71 | | const size_t& index) |
72 | 0 | { |
73 | 0 | if (children.size() > index) |
74 | 0 | { |
75 | 0 | children.erase(children.begin() + index); |
76 | 0 | return true; |
77 | 0 | } |
78 | 0 | else |
79 | 0 | { |
80 | 0 | return false; |
81 | 0 | } |
82 | 0 | } |
83 | | |
84 | | BaseNode* getChild( |
85 | | const size_t& index) const |
86 | 0 | { |
87 | 0 | if (children.empty()) |
88 | 0 | { |
89 | 0 | return nullptr; |
90 | 0 | } |
91 | 0 | return children[index].get(); |
92 | 0 | } |
93 | | |
94 | | BaseNode* getParent() const |
95 | 0 | { |
96 | 0 | return parent_; |
97 | 0 | } |
98 | | |
99 | | void setParent( |
100 | | BaseNode* parent) |
101 | 189k | { |
102 | 189k | parent_ = parent; |
103 | 189k | } |
104 | | |
105 | | size_t getNumChildren() const |
106 | 0 | { |
107 | 0 | return children.size(); |
108 | 0 | } |
109 | | |
110 | | std::vector<std::unique_ptr<BaseNode>>& getChildren() |
111 | 2.95k | { |
112 | 2.95k | return children; |
113 | 2.95k | } |
114 | | |
115 | | private: |
116 | | |
117 | | NodeType data_type_; |
118 | | BaseNode* parent_; |
119 | | std::vector<std::unique_ptr<BaseNode>> children; |
120 | | }; |
121 | | |
122 | | template <class T> |
123 | | class DataNode : public BaseNode |
124 | | { |
125 | | public: |
126 | | |
127 | | DataNode( |
128 | | NodeType type); |
129 | | DataNode( |
130 | | NodeType type, |
131 | | std::unique_ptr<T> data); |
132 | | virtual ~DataNode(); |
133 | | |
134 | | DataNode( |
135 | | const DataNode&) = delete; |
136 | | DataNode& operator =( |
137 | | const DataNode&) = delete; |
138 | | |
139 | | DataNode( |
140 | | DataNode&&) = default; |
141 | | DataNode& operator =( |
142 | | DataNode&&) = default; |
143 | | |
144 | | T* get() const; |
145 | | std::unique_ptr<T> getData(); |
146 | | void setData( |
147 | | std::unique_ptr<T> data); |
148 | | |
149 | | void addAttribute( |
150 | | const std::string& name, |
151 | | const std::string& value); |
152 | | const std::map<std::string, std::string>& getAttributes(); |
153 | | |
154 | | private: |
155 | | |
156 | | std::map<std::string, std::string> attributes_; |
157 | | std::unique_ptr<T> data_; |
158 | | }; |
159 | | |
160 | | template <class T> |
161 | | DataNode<T>::DataNode( |
162 | | NodeType type) |
163 | | : BaseNode(type) |
164 | | , attributes_() |
165 | | , data_(nullptr) |
166 | | { |
167 | | } |
168 | | |
169 | | template <class T> |
170 | | DataNode<T>::DataNode( |
171 | | NodeType type, |
172 | | std::unique_ptr<T> data) |
173 | 287k | : BaseNode(type) |
174 | 287k | , attributes_() |
175 | 287k | , data_(std::move(data)) |
176 | 287k | { |
177 | 287k | } eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::dds::DomainParticipantFactoryQos>::DataNode(eprosima::fastdds::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastdds::dds::DomainParticipantFactoryQos, std::__1::default_delete<eprosima::fastdds::dds::DomainParticipantFactoryQos> >) Line | Count | Source | 173 | 12.8k | : BaseNode(type) | 174 | 12.8k | , attributes_() | 175 | 12.8k | , data_(std::move(data)) | 176 | 12.8k | { | 177 | 12.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ParticipantAttributes>::DataNode(eprosima::fastdds::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastdds::xmlparser::ParticipantAttributes, std::__1::default_delete<eprosima::fastdds::xmlparser::ParticipantAttributes> >) Line | Count | Source | 173 | 105k | : BaseNode(type) | 174 | 105k | , attributes_() | 175 | 105k | , data_(std::move(data)) | 176 | 105k | { | 177 | 105k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::PublisherAttributes>::DataNode(eprosima::fastdds::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastdds::xmlparser::PublisherAttributes, std::__1::default_delete<eprosima::fastdds::xmlparser::PublisherAttributes> >) Line | Count | Source | 173 | 35.3k | : BaseNode(type) | 174 | 35.3k | , attributes_() | 175 | 35.3k | , data_(std::move(data)) | 176 | 35.3k | { | 177 | 35.3k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::SubscriberAttributes>::DataNode(eprosima::fastdds::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastdds::xmlparser::SubscriberAttributes, std::__1::default_delete<eprosima::fastdds::xmlparser::SubscriberAttributes> >) Line | Count | Source | 173 | 81.6k | : BaseNode(type) | 174 | 81.6k | , attributes_() | 175 | 81.6k | , data_(std::move(data)) | 176 | 81.6k | { | 177 | 81.6k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::TopicAttributes>::DataNode(eprosima::fastdds::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastdds::xmlparser::TopicAttributes, std::__1::default_delete<eprosima::fastdds::xmlparser::TopicAttributes> >) Line | Count | Source | 173 | 23.9k | : BaseNode(type) | 174 | 23.9k | , attributes_() | 175 | 23.9k | , data_(std::move(data)) | 176 | 23.9k | { | 177 | 23.9k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::RequesterAttributes>::DataNode(eprosima::fastdds::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastdds::xmlparser::RequesterAttributes, std::__1::default_delete<eprosima::fastdds::xmlparser::RequesterAttributes> >) Line | Count | Source | 173 | 12.8k | : BaseNode(type) | 174 | 12.8k | , attributes_() | 175 | 12.8k | , data_(std::move(data)) | 176 | 12.8k | { | 177 | 12.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ReplierAttributes>::DataNode(eprosima::fastdds::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastdds::xmlparser::ReplierAttributes, std::__1::default_delete<eprosima::fastdds::xmlparser::ReplierAttributes> >) Line | Count | Source | 173 | 15.4k | : BaseNode(type) | 174 | 15.4k | , attributes_() | 175 | 15.4k | , data_(std::move(data)) | 176 | 15.4k | { | 177 | 15.4k | } |
|
178 | | |
179 | | template <class T> |
180 | | DataNode<T>::~DataNode() |
181 | 287k | { |
182 | 287k | } eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::dds::DomainParticipantFactoryQos>::~DataNode() Line | Count | Source | 181 | 12.8k | { | 182 | 12.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ParticipantAttributes>::~DataNode() Line | Count | Source | 181 | 105k | { | 182 | 105k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::PublisherAttributes>::~DataNode() Line | Count | Source | 181 | 35.3k | { | 182 | 35.3k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::SubscriberAttributes>::~DataNode() Line | Count | Source | 181 | 81.6k | { | 182 | 81.6k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::TopicAttributes>::~DataNode() Line | Count | Source | 181 | 23.9k | { | 182 | 23.9k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::RequesterAttributes>::~DataNode() Line | Count | Source | 181 | 12.8k | { | 182 | 12.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ReplierAttributes>::~DataNode() Line | Count | Source | 181 | 15.4k | { | 182 | 15.4k | } |
|
183 | | |
184 | | template <class T> |
185 | | T* DataNode<T>::get() const |
186 | 395k | { |
187 | 395k | return data_.get(); |
188 | 395k | } eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::TopicAttributes>::get() const Line | Count | Source | 186 | 23.9k | { | 187 | 23.9k | return data_.get(); | 188 | 23.9k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::dds::DomainParticipantFactoryQos>::get() const Line | Count | Source | 186 | 2.81k | { | 187 | 2.81k | return data_.get(); | 188 | 2.81k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ParticipantAttributes>::get() const Line | Count | Source | 186 | 23.0k | { | 187 | 23.0k | return data_.get(); | 188 | 23.0k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::PublisherAttributes>::get() const Line | Count | Source | 186 | 35.3k | { | 187 | 35.3k | return data_.get(); | 188 | 35.3k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::SubscriberAttributes>::get() const Line | Count | Source | 186 | 81.6k | { | 187 | 81.6k | return data_.get(); | 188 | 81.6k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::RequesterAttributes>::get() const Line | Count | Source | 186 | 117k | { | 187 | 117k | return data_.get(); | 188 | 117k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ReplierAttributes>::get() const Line | Count | Source | 186 | 111k | { | 187 | 111k | return data_.get(); | 188 | 111k | } |
|
189 | | |
190 | | template <class T> |
191 | | std::unique_ptr<T> DataNode<T>::getData() |
192 | 58.6k | { |
193 | 58.6k | return std::move(data_); |
194 | 58.6k | } eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::dds::DomainParticipantFactoryQos>::getData() Line | Count | Source | 192 | 4.79k | { | 193 | 4.79k | return std::move(data_); | 194 | 4.79k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ParticipantAttributes>::getData() Line | Count | Source | 192 | 8.48k | { | 193 | 8.48k | return std::move(data_); | 194 | 8.48k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::PublisherAttributes>::getData() Line | Count | Source | 192 | 7.96k | { | 193 | 7.96k | return std::move(data_); | 194 | 7.96k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::SubscriberAttributes>::getData() Line | Count | Source | 192 | 16.3k | { | 193 | 16.3k | return std::move(data_); | 194 | 16.3k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::TopicAttributes>::getData() Line | Count | Source | 192 | 11.8k | { | 193 | 11.8k | return std::move(data_); | 194 | 11.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::RequesterAttributes>::getData() Line | Count | Source | 192 | 4.97k | { | 193 | 4.97k | return std::move(data_); | 194 | 4.97k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ReplierAttributes>::getData() Line | Count | Source | 192 | 4.14k | { | 193 | 4.14k | return std::move(data_); | 194 | 4.14k | } |
|
195 | | |
196 | | template <class T> |
197 | | void DataNode<T>::setData( |
198 | | std::unique_ptr<T> data) |
199 | | { |
200 | | data_ = std::move(data); |
201 | | } |
202 | | |
203 | | template <class T> |
204 | | void DataNode<T>::addAttribute( |
205 | | const std::string& name, |
206 | | const std::string& value) |
207 | 222k | { |
208 | 222k | attributes_[name] = value; |
209 | 222k | } eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::TopicAttributes>::addAttribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 207 | 21.4k | { | 208 | 21.4k | attributes_[name] = value; | 209 | 21.4k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::dds::DomainParticipantFactoryQos>::addAttribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 207 | 11.9k | { | 208 | 11.9k | attributes_[name] = value; | 209 | 11.9k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ParticipantAttributes>::addAttribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 207 | 23.3k | { | 208 | 23.3k | attributes_[name] = value; | 209 | 23.3k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::PublisherAttributes>::addAttribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 207 | 17.1k | { | 208 | 17.1k | attributes_[name] = value; | 209 | 17.1k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::SubscriberAttributes>::addAttribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 207 | 33.8k | { | 208 | 33.8k | attributes_[name] = value; | 209 | 33.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::RequesterAttributes>::addAttribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 207 | 47.7k | { | 208 | 47.7k | attributes_[name] = value; | 209 | 47.7k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ReplierAttributes>::addAttribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Line | Count | Source | 207 | 66.8k | { | 208 | 66.8k | attributes_[name] = value; | 209 | 66.8k | } |
|
210 | | |
211 | | template <class T> |
212 | | const std::map<std::string, std::string>& DataNode<T>::getAttributes() |
213 | 183k | { |
214 | 183k | return attributes_; |
215 | 183k | } eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::dds::DomainParticipantFactoryQos>::getAttributes() Line | Count | Source | 213 | 14.1k | { | 214 | 14.1k | return attributes_; | 215 | 14.1k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ParticipantAttributes>::getAttributes() Line | Count | Source | 213 | 23.9k | { | 214 | 23.9k | return attributes_; | 215 | 23.9k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::PublisherAttributes>::getAttributes() Line | Count | Source | 213 | 21.8k | { | 214 | 21.8k | return attributes_; | 215 | 21.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::SubscriberAttributes>::getAttributes() Line | Count | Source | 213 | 38.6k | { | 214 | 38.6k | return attributes_; | 215 | 38.6k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::TopicAttributes>::getAttributes() Line | Count | Source | 213 | 33.2k | { | 214 | 33.2k | return attributes_; | 215 | 33.2k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::RequesterAttributes>::getAttributes() Line | Count | Source | 213 | 25.8k | { | 214 | 25.8k | return attributes_; | 215 | 25.8k | } |
eprosima::fastdds::xmlparser::DataNode<eprosima::fastdds::xmlparser::ReplierAttributes>::getAttributes() Line | Count | Source | 213 | 26.2k | { | 214 | 26.2k | return attributes_; | 215 | 26.2k | } |
|
216 | | |
217 | | } // namespace xmlparser |
218 | | } // namespace fastdds |
219 | | } // namespace eprosima |
220 | | #endif // !_XML_TREE_ |