@@ -12,9 +12,6 @@ namespace odr {
1212
1313Element::Element () = default ;
1414
15- Element::Element (const ElementHandle &handle)
16- : m_adapter{handle.adapter_ptr }, m_identifier{handle.identifier } {}
17-
1815Element::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
3229Element 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
3734Element 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
4240Element 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
4746Element 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
5252bool Element::is_unique () const {
@@ -68,7 +68,8 @@ DocumentPath Element::document_path() const {
6868
6969Element 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
170171ElementRange 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
177178ElementIterator::ElementIterator () = default ;
178179
179- ElementIterator::ElementIterator (const ElementHandle &handle)
180- : m_adapter{handle.adapter_ptr }, m_identifier{handle.identifier } {}
181-
182180ElementIterator::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
189187ElementIterator &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
206201bool 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
280278ElementRange 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
289287TableStyle 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
404402TableColumn 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
414411ElementRange 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
420418ElementRange 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
0 commit comments