From d3f2dc322b8e6341d1c16b03c8d6f894c363ed8b Mon Sep 17 00:00:00 2001 From: m-holger Date: Sun, 11 Dec 2022 16:49:41 +0000 Subject: Refactor QPDF_Array::copy --- libqpdf/QPDF_Array.cc | 21 ++++++++++++++++----- libqpdf/SparseOHArray.cc | 13 ------------- libqpdf/qpdf/SparseOHArray.hh | 1 - 3 files changed, 16 insertions(+), 19 deletions(-) (limited to 'libqpdf') 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> const& items) std::shared_ptr 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> 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 -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; -- cgit v1.2.3-70-g09d2