diff options
author | m-holger <m-holger@kubitscheck.org> | 2022-12-11 17:49:41 +0100 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-04-01 14:57:47 +0200 |
commit | d3f2dc322b8e6341d1c16b03c8d6f894c363ed8b (patch) | |
tree | 629a55bcc893240162632d38af54f0ca50acb06f /libqpdf | |
parent | a171ebb9427e41559efbeb1f144a19b73bb3eca6 (diff) | |
download | qpdf-d3f2dc322b8e6341d1c16b03c8d6f894c363ed8b.tar.zst |
Refactor QPDF_Array::copy
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDF_Array.cc | 21 | ||||
-rw-r--r-- | libqpdf/SparseOHArray.cc | 13 | ||||
-rw-r--r-- | libqpdf/qpdf/SparseOHArray.hh | 1 |
3 files changed, 16 insertions, 19 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index 1f1ce55a..d5cef946 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -92,11 +92,22 @@ QPDF_Array::create(std::vector<std::shared_ptr<QPDFObject>> const& items) std::shared_ptr<QPDFObject> QPDF_Array::copy(bool shallow) { - if (sparse) { - return create(shallow ? sp_elements : sp_elements.copy()); - } else { - if (shallow) { + if (shallow) { + if (sparse) { + return create(sp_elements); + } else { return create(elements); + } + } else { + if (sparse) { + SparseOHArray result; + result.n_elements = sp_elements.n_elements; + for (auto const& element: sp_elements.elements) { + auto const& obj = element.second; + result.elements[element.first] = + obj->getObjGen().isIndirect() ? obj : obj->copy(); + } + return create(std::move(result)); } else { std::vector<std::shared_ptr<QPDFObject>> result; result.reserve(elements.size()); @@ -107,7 +118,7 @@ QPDF_Array::copy(bool shallow) : element->copy()) : element); } - return create(result); + return create(std::move(result)); } } } diff --git a/libqpdf/SparseOHArray.cc b/libqpdf/SparseOHArray.cc index c830d035..8b137891 100644 --- a/libqpdf/SparseOHArray.cc +++ b/libqpdf/SparseOHArray.cc @@ -1,14 +1 @@ -#include <qpdf/SparseOHArray.hh> -SparseOHArray -SparseOHArray::copy() -{ - SparseOHArray result; - result.n_elements = this->n_elements; - for (auto const& element: this->elements) { - auto value = element.second; - result.elements[element.first] = - value->getObjGen().isIndirect() ? value : value->copy(); - } - return result; -} diff --git a/libqpdf/qpdf/SparseOHArray.hh b/libqpdf/qpdf/SparseOHArray.hh index e7733472..5760f174 100644 --- a/libqpdf/qpdf/SparseOHArray.hh +++ b/libqpdf/qpdf/SparseOHArray.hh @@ -16,7 +16,6 @@ class SparseOHArray { return n_elements; } - SparseOHArray copy(); private: friend class QPDF_Array; |