Skip to content

Commit 5e5a340

Browse files
committed
post refactor cleanup
1 parent 8dd490a commit 5e5a340

21 files changed

+530
-1318
lines changed

src/odr/definitions.hpp

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,10 @@
22

33
#include <cstdint>
44

5-
namespace odr::internal::abstract {
6-
class ElementAdapter;
7-
} // namespace odr::internal::abstract
8-
95
namespace odr {
106

117
using ElementIdentifier = std::uint64_t;
128

139
static constexpr ElementIdentifier null_element_id{0};
1410

15-
struct ElementHandle final {
16-
const internal::abstract::ElementAdapter *adapter_ptr{nullptr};
17-
ElementIdentifier identifier{null_element_id};
18-
19-
ElementHandle() = default;
20-
ElementHandle(const internal::abstract::ElementAdapter *adapter_ptr_,
21-
const ElementIdentifier identifier_)
22-
: adapter_ptr(adapter_ptr_), identifier(identifier_) {}
23-
ElementHandle(const internal::abstract::ElementAdapter &adapter_,
24-
const ElementIdentifier identifier_)
25-
: adapter_ptr(&adapter_), identifier(identifier_) {}
26-
27-
[[nodiscard]] const internal::abstract::ElementAdapter &adapter() const {
28-
return *adapter_ptr;
29-
}
30-
31-
[[nodiscard]] bool is_null() const { return identifier == null_element_id; }
32-
33-
bool operator==(const ElementHandle &other) const {
34-
return adapter_ptr == other.adapter_ptr && identifier == other.identifier;
35-
}
36-
};
37-
3811
} // namespace odr

src/odr/document.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ DocumentType Document::document_type() const noexcept {
3939
}
4040

4141
Element Document::root_element() const {
42-
return Element(m_impl->root_element());
42+
return {m_impl->element_adapter(), m_impl->root_element()};
4343
}
4444

4545
Filesystem Document::as_filesystem() const {

src/odr/document_element.cpp

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ namespace odr {
1212

1313
Element::Element() = default;
1414

15-
Element::Element(const ElementHandle &handle)
16-
: m_adapter{handle.adapter_ptr}, m_identifier{handle.identifier} {}
17-
1815
Element::Element(const internal::abstract::ElementAdapter *adapter,
1916
const ElementIdentifier identifier)
2017
: m_adapter{adapter}, m_identifier{identifier} {}
@@ -30,23 +27,26 @@ ElementType Element::type() const {
3027
}
3128

3229
Element Element::parent() const {
33-
return exists_() ? Element(m_adapter->element_parent(m_identifier))
30+
return exists_() ? Element(m_adapter, m_adapter->element_parent(m_identifier))
3431
: Element();
3532
}
3633

3734
Element Element::first_child() const {
38-
return exists_() ? Element(m_adapter->element_first_child(m_identifier))
39-
: Element();
35+
return exists_()
36+
? Element(m_adapter, m_adapter->element_first_child(m_identifier))
37+
: Element();
4038
}
4139

4240
Element Element::previous_sibling() const {
43-
return exists_() ? Element(m_adapter->element_previous_sibling(m_identifier))
41+
return exists_() ? Element(m_adapter,
42+
m_adapter->element_previous_sibling(m_identifier))
4443
: Element();
4544
}
4645

4746
Element Element::next_sibling() const {
48-
return exists_() ? Element(m_adapter->element_next_sibling(m_identifier))
49-
: Element();
47+
return exists_()
48+
? Element(m_adapter, m_adapter->element_next_sibling(m_identifier))
49+
: Element();
5050
}
5151

5252
bool Element::is_unique() const {
@@ -68,7 +68,8 @@ DocumentPath Element::document_path() const {
6868

6969
Element Element::navigate_path(const DocumentPath &path) const {
7070
return exists_()
71-
? Element(m_adapter->element_navigate_path(m_identifier, path))
71+
? Element(m_adapter,
72+
m_adapter->element_navigate_path(m_identifier, path))
7273
: Element();
7374
}
7475

@@ -168,17 +169,14 @@ Image Element::as_image() const {
168169
}
169170

170171
ElementRange Element::children() const {
171-
return {exists_()
172-
? ElementIterator(m_adapter->element_first_child(m_identifier))
173-
: ElementIterator(),
172+
return {exists_() ? ElementIterator(m_adapter, m_adapter->element_first_child(
173+
m_identifier))
174+
: ElementIterator(),
174175
ElementIterator()};
175176
}
176177

177178
ElementIterator::ElementIterator() = default;
178179

179-
ElementIterator::ElementIterator(const ElementHandle &handle)
180-
: m_adapter{handle.adapter_ptr}, m_identifier{handle.identifier} {}
181-
182180
ElementIterator::ElementIterator(
183181
const internal::abstract::ElementAdapter *adapter,
184182
const ElementIdentifier identifier)
@@ -188,10 +186,7 @@ Element ElementIterator::operator*() const { return {m_adapter, m_identifier}; }
188186

189187
ElementIterator &ElementIterator::operator++() {
190188
if (exists_()) {
191-
const auto [next_adapter, next_id] =
192-
m_adapter->element_next_sibling(m_identifier);
193-
m_adapter = next_adapter;
194-
m_identifier = next_id;
189+
m_identifier = m_adapter->element_next_sibling(m_identifier);
195190
}
196191
return *this;
197192
}
@@ -200,7 +195,7 @@ ElementIterator ElementIterator::operator++(int) const {
200195
if (!exists_()) {
201196
return {};
202197
}
203-
return ElementIterator(m_adapter->element_next_sibling(m_identifier));
198+
return {m_adapter, m_adapter->element_next_sibling(m_identifier)};
204199
}
205200

206201
bool ElementIterator::exists_() const {
@@ -228,9 +223,9 @@ MasterPage TextRoot::first_master_page() const {
228223
if (!exists_()) {
229224
return {};
230225
}
231-
const auto [master_page_adapter, master_page_id] =
226+
const ElementIdentifier master_page_id =
232227
m_adapter2->text_root_first_master_page(m_identifier);
233-
return {master_page_adapter, master_page_id,
228+
return {m_adapter, master_page_id,
234229
m_adapter->master_page_adapter(master_page_id)};
235230
}
236231

@@ -272,18 +267,21 @@ SheetCell Sheet::cell(const std::uint32_t column,
272267
if (!exists_()) {
273268
return {};
274269
}
275-
const auto [cell_adapter, cell_id] =
270+
const ElementIdentifier cell_id =
276271
m_adapter2->sheet_cell(m_identifier, column, row);
277-
return {cell_adapter, cell_id, m_adapter->sheet_cell_adapter(cell_id)};
272+
if (cell_id == null_element_id) {
273+
return {};
274+
}
275+
return {m_adapter, cell_id, m_adapter->sheet_cell_adapter(cell_id)};
278276
}
279277

280278
ElementRange Sheet::shapes() const {
281279
if (!exists_()) {
282280
return {};
283281
}
284-
const auto [first_shape_adapter, first_shape_id] =
282+
const ElementIdentifier first_shape_id =
285283
m_adapter2->sheet_first_shape(m_identifier);
286-
return ElementRange(ElementIterator(first_shape_adapter, first_shape_id));
284+
return ElementRange(ElementIterator(m_adapter, first_shape_id));
287285
}
288286

289287
TableStyle Sheet::style() const {
@@ -397,29 +395,29 @@ TableRow Table::first_row() const {
397395
if (!exists_()) {
398396
return {};
399397
}
400-
const auto [row_adapter, row_id] = m_adapter2->table_first_row(m_identifier);
401-
return {row_adapter, row_id, m_adapter->table_row_adapter(row_id)};
398+
const ElementIdentifier row_id = m_adapter2->table_first_row(m_identifier);
399+
return {m_adapter, row_id, m_adapter->table_row_adapter(row_id)};
402400
}
403401

404402
TableColumn Table::first_column() const {
405403
if (!exists_()) {
406404
return {};
407405
}
408-
const auto [column_adapter, column_id] =
406+
const ElementIdentifier column_id =
409407
m_adapter2->table_first_column(m_identifier);
410-
return {column_adapter, column_id,
411-
m_adapter->table_column_adapter(column_id)};
408+
return {m_adapter, column_id, m_adapter->table_column_adapter(column_id)};
412409
}
413410

414411
ElementRange Table::columns() const {
415-
return exists_() ? ElementRange(ElementIterator(
416-
m_adapter2->table_first_column(m_identifier)))
417-
: ElementRange();
412+
return exists_()
413+
? ElementRange(ElementIterator(
414+
m_adapter, m_adapter2->table_first_column(m_identifier)))
415+
: ElementRange();
418416
}
419417

420418
ElementRange Table::rows() const {
421419
return exists_() ? ElementRange(ElementIterator(
422-
m_adapter2->table_first_row(m_identifier)))
420+
m_adapter, m_adapter2->table_first_row(m_identifier)))
423421
: ElementRange();
424422
}
425423

src/odr/document_element.hpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ enum class ValueType {
142142
class Element {
143143
public:
144144
Element();
145-
explicit Element(const ElementHandle &handle);
146145
Element(const internal::abstract::ElementAdapter *adapter,
147146
ElementIdentifier identifier);
148147

@@ -208,7 +207,6 @@ class ElementIterator {
208207
using iterator_category = std::forward_iterator_tag;
209208

210209
ElementIterator();
211-
explicit ElementIterator(const ElementHandle &handle);
212210
ElementIterator(const internal::abstract::ElementAdapter *adapter,
213211
ElementIdentifier identifier);
214212

@@ -248,8 +246,6 @@ class ElementRange {
248246
template <typename T> class ElementBase : public Element {
249247
public:
250248
ElementBase() = default;
251-
ElementBase(const ElementHandle &handle, const T *adapter2)
252-
: Element(handle), m_adapter2{adapter2} {}
253249
ElementBase(const internal::abstract::ElementAdapter *adapter,
254250
ElementIdentifier identifier, const T *adapter2)
255251
: Element(adapter, identifier), m_adapter2{adapter2} {}

0 commit comments

Comments
 (0)