Coverage Report

Created: 2025-06-13 06:46

/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_