Coverage Report

Created: 2022-08-24 06:19

/src/Fast-DDS/include/fastrtps/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 fastrtps {
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
};
33
34
class BaseNode
35
{
36
public:
37
38
    BaseNode(
39
            NodeType type)
40
        : data_type_(type)
41
        , parent_(nullptr)
42
115k
    {
43
115k
    }
44
45
115k
    virtual ~BaseNode() = default;
46
47
    BaseNode(
48
            const BaseNode&) = delete;
49
    BaseNode& operator =(
50
            const BaseNode&) = delete;
51
52
    BaseNode(
53
            BaseNode&&) = default;
54
    BaseNode& operator =(
55
            BaseNode&&) = default;
56
57
    NodeType getType() const
58
107k
    {
59
107k
        return data_type_;
60
107k
    }
61
62
    void addChild(
63
            std::unique_ptr<BaseNode> child)
64
44.8k
    {
65
44.8k
        child->setParent(this);
66
44.8k
        children.push_back(std::move(child));
67
44.8k
    }
68
69
    bool removeChild(
70
            const size_t& index)
71
0
    {
72
0
        if (children.size() > index)
73
0
        {
74
0
            children.erase(children.begin() + index);
75
0
            return true;
76
0
        }
77
0
        else
78
0
        {
79
0
            return false;
80
0
        }
81
0
    }
82
83
    BaseNode* getChild(
84
            const size_t& index) const
85
0
    {
86
0
        if (children.empty())
87
0
        {
88
0
            return nullptr;
89
0
        }
90
0
        return children[index].get();
91
0
    }
92
93
    BaseNode* getParent() const
94
0
    {
95
0
        return parent_;
96
0
    }
97
98
    void setParent(
99
            BaseNode* parent)
100
44.8k
    {
101
44.8k
        parent_ = parent;
102
44.8k
    }
103
104
    size_t getNumChildren() const
105
0
    {
106
0
        return children.size();
107
0
    }
108
109
    std::vector<std::unique_ptr<BaseNode>>& getChildren()
110
2.85k
    {
111
2.85k
        return children;
112
2.85k
    }
113
114
private:
115
116
    NodeType data_type_;
117
    BaseNode* parent_;
118
    std::vector<std::unique_ptr<BaseNode>> children;
119
};
120
121
template <class T>
122
class DataNode : public BaseNode
123
{
124
public:
125
126
    DataNode(
127
            NodeType type);
128
    DataNode(
129
            NodeType type,
130
            std::unique_ptr<T> data);
131
    virtual ~DataNode();
132
133
    DataNode(
134
            const DataNode&) = delete;
135
    DataNode& operator =(
136
            const DataNode&) = delete;
137
138
    DataNode(
139
            DataNode&&)            = default;
140
    DataNode& operator =(
141
            DataNode&&) = default;
142
143
    T* get() const;
144
    std::unique_ptr<T> getData();
145
    void setData(
146
            std::unique_ptr<T> data);
147
148
    void addAttribute(
149
            const std::string& name,
150
            const std::string& value);
151
    const std::map<std::string, std::string>& getAttributes();
152
153
private:
154
155
    std::map<std::string, std::string> attributes_;
156
    std::unique_ptr<T> data_;
157
};
158
159
template <class T>
160
DataNode<T>::DataNode(
161
        NodeType type)
162
    : BaseNode(type)
163
    , attributes_()
164
    , data_(nullptr)
165
{
166
}
167
168
template <class T>
169
DataNode<T>::DataNode(
170
        NodeType type,
171
        std::unique_ptr<T> data)
172
    : BaseNode(type)
173
    , attributes_()
174
    , data_(std::move(data))
175
92.4k
{
176
92.4k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ParticipantAttributes>::DataNode(eprosima::fastrtps::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastrtps::ParticipantAttributes, std::__1::default_delete<eprosima::fastrtps::ParticipantAttributes> >)
Line
Count
Source
175
19.6k
{
176
19.6k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::PublisherAttributes>::DataNode(eprosima::fastrtps::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastrtps::PublisherAttributes, std::__1::default_delete<eprosima::fastrtps::PublisherAttributes> >)
Line
Count
Source
175
19.1k
{
176
19.1k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::SubscriberAttributes>::DataNode(eprosima::fastrtps::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastrtps::SubscriberAttributes, std::__1::default_delete<eprosima::fastrtps::SubscriberAttributes> >)
Line
Count
Source
175
15.0k
{
176
15.0k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::TopicAttributes>::DataNode(eprosima::fastrtps::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastrtps::TopicAttributes, std::__1::default_delete<eprosima::fastrtps::TopicAttributes> >)
Line
Count
Source
175
13.6k
{
176
13.6k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::RequesterAttributes>::DataNode(eprosima::fastrtps::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastrtps::RequesterAttributes, std::__1::default_delete<eprosima::fastrtps::RequesterAttributes> >)
Line
Count
Source
175
12.1k
{
176
12.1k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ReplierAttributes>::DataNode(eprosima::fastrtps::xmlparser::NodeType, std::__1::unique_ptr<eprosima::fastrtps::ReplierAttributes, std::__1::default_delete<eprosima::fastrtps::ReplierAttributes> >)
Line
Count
Source
175
12.7k
{
176
12.7k
}
177
178
template <class T>
179
DataNode<T>::~DataNode()
180
92.4k
{
181
92.4k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ParticipantAttributes>::~DataNode()
Line
Count
Source
180
19.6k
{
181
19.6k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::PublisherAttributes>::~DataNode()
Line
Count
Source
180
19.1k
{
181
19.1k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::SubscriberAttributes>::~DataNode()
Line
Count
Source
180
15.0k
{
181
15.0k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::TopicAttributes>::~DataNode()
Line
Count
Source
180
13.6k
{
181
13.6k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::RequesterAttributes>::~DataNode()
Line
Count
Source
180
12.1k
{
181
12.1k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ReplierAttributes>::~DataNode()
Line
Count
Source
180
12.7k
{
181
12.7k
}
182
183
template <class T>
184
T* DataNode<T>::get() const
185
250k
{
186
250k
    return data_.get();
187
250k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::TopicAttributes>::get() const
Line
Count
Source
185
13.6k
{
186
13.6k
    return data_.get();
187
13.6k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ParticipantAttributes>::get() const
Line
Count
Source
185
17.4k
{
186
17.4k
    return data_.get();
187
17.4k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::PublisherAttributes>::get() const
Line
Count
Source
185
19.1k
{
186
19.1k
    return data_.get();
187
19.1k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::SubscriberAttributes>::get() const
Line
Count
Source
185
15.0k
{
186
15.0k
    return data_.get();
187
15.0k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::RequesterAttributes>::get() const
Line
Count
Source
185
90.2k
{
186
90.2k
    return data_.get();
187
90.2k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ReplierAttributes>::get() const
Line
Count
Source
185
94.9k
{
186
94.9k
    return data_.get();
187
94.9k
}
188
189
template <class T>
190
std::unique_ptr<T> DataNode<T>::getData()
191
18.0k
{
192
18.0k
    return std::move(data_);
193
18.0k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ParticipantAttributes>::getData()
Line
Count
Source
191
2.27k
{
192
2.27k
    return std::move(data_);
193
2.27k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::PublisherAttributes>::getData()
Line
Count
Source
191
3.18k
{
192
3.18k
    return std::move(data_);
193
3.18k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::SubscriberAttributes>::getData()
Line
Count
Source
191
3.14k
{
192
3.14k
    return std::move(data_);
193
3.14k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::TopicAttributes>::getData()
Line
Count
Source
191
3.61k
{
192
3.61k
    return std::move(data_);
193
3.61k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::RequesterAttributes>::getData()
Line
Count
Source
191
2.84k
{
192
2.84k
    return std::move(data_);
193
2.84k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ReplierAttributes>::getData()
Line
Count
Source
191
3.00k
{
192
3.00k
    return std::move(data_);
193
3.00k
}
194
195
template <class T>
196
void DataNode<T>::setData(
197
        std::unique_ptr<T> data)
198
{
199
    data_ = std::move(data);
200
}
201
202
template <class T>
203
void DataNode<T>::addAttribute(
204
        const std::string& name,
205
        const std::string& value)
206
139k
{
207
139k
    attributes_[name] = value;
208
139k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::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
206
11.3k
{
207
11.3k
    attributes_[name] = value;
208
11.3k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::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
206
7.89k
{
207
7.89k
    attributes_[name] = value;
208
7.89k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::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
206
11.3k
{
207
11.3k
    attributes_[name] = value;
208
11.3k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::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
206
7.95k
{
207
7.95k
    attributes_[name] = value;
208
7.95k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::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
206
56.0k
{
207
56.0k
    attributes_[name] = value;
208
56.0k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::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
206
44.7k
{
207
44.7k
    attributes_[name] = value;
208
44.7k
}
209
210
template <class T>
211
const std::map<std::string, std::string>& DataNode<T>::getAttributes()
212
84.9k
{
213
84.9k
    return attributes_;
214
84.9k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ParticipantAttributes>::getAttributes()
Line
Count
Source
212
7.54k
{
213
7.54k
    return attributes_;
214
7.54k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::PublisherAttributes>::getAttributes()
Line
Count
Source
212
10.6k
{
213
10.6k
    return attributes_;
214
10.6k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::SubscriberAttributes>::getAttributes()
Line
Count
Source
212
9.77k
{
213
9.77k
    return attributes_;
214
9.77k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::TopicAttributes>::getAttributes()
Line
Count
Source
212
15.8k
{
213
15.8k
    return attributes_;
214
15.8k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::RequesterAttributes>::getAttributes()
Line
Count
Source
212
20.3k
{
213
20.3k
    return attributes_;
214
20.3k
}
eprosima::fastrtps::xmlparser::DataNode<eprosima::fastrtps::ReplierAttributes>::getAttributes()
Line
Count
Source
212
20.7k
{
213
20.7k
    return attributes_;
214
20.7k
}
215
216
} // namespace xmlparser
217
} // namespace fastrtps
218
} // namespace eprosima
219
#endif // !_XML_TREE_