@@ -83,6 +83,9 public: | |||
|
83 | 83 | |
|
84 | 84 | DataSourceItemType type() const noexcept; |
|
85 | 85 | |
|
86 | bool operator==(const DataSourceItem &other); | |
|
87 | bool operator!=(const DataSourceItem &other); | |
|
88 | ||
|
86 | 89 | private: |
|
87 | 90 | class DataSourceItemPrivate; |
|
88 | 91 | spimpl::unique_impl_ptr<DataSourceItemPrivate> impl; |
@@ -117,3 +117,24 DataSourceItemType DataSourceItem::type() const noexcept | |||
|
117 | 117 | { |
|
118 | 118 | return impl->m_Type; |
|
119 | 119 | } |
|
120 | ||
|
121 | bool DataSourceItem::operator==(const DataSourceItem &other) | |
|
122 | { | |
|
123 | // Compares items' attributes | |
|
124 | if (std::tie(impl->m_Type, impl->m_Data) == std::tie(other.impl->m_Type, other.impl->m_Data)) { | |
|
125 | // Compares contents of items' children | |
|
126 | return std::equal(std::cbegin(impl->m_Children), std::cend(impl->m_Children), | |
|
127 | std::cbegin(other.impl->m_Children), | |
|
128 | [](const auto &itemChild, const auto &otherChild) { | |
|
129 | return *itemChild == *otherChild; | |
|
130 | }); | |
|
131 | } | |
|
132 | else { | |
|
133 | return false; | |
|
134 | } | |
|
135 | } | |
|
136 | ||
|
137 | bool DataSourceItem::operator!=(const DataSourceItem &other) | |
|
138 | { | |
|
139 | return !(*this == other); | |
|
140 | } |
General Comments 0
You need to be logged in to leave comments.
Login now