From 0aae54d3836107fdb9dc54faf0778bf262dd7e0a Mon Sep 17 00:00:00 2001 From: m-holger Date: Thu, 30 Mar 2023 14:16:07 +0100 Subject: Refactor QPDF_Array::setFromVector --- libqpdf/QPDF_Array.cc | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) (limited to 'libqpdf/QPDF_Array.cc') diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index 9593c31f..afec05af 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -35,7 +35,18 @@ QPDF_Array::QPDF_Array( QPDFValue(::ot_array, "array"), sparse(sparse) { - setFromVector(std::move(v)); + if (sparse) { + sp_elements = SparseOHArray(); + for (auto&& item: v) { + if (item->getTypeCode() != ::ot_null || + item->getObjGen().isIndirect()) { + sp_elements.elements[sp_elements.n_elements] = std::move(item); + } + ++sp_elements.n_elements; + } + } else { + elements = std::move(v); + } } QPDF_Array::QPDF_Array(SparseOHArray const& items) : @@ -207,33 +218,11 @@ QPDF_Array::setAt(int at, QPDFObjectHandle const& oh) void QPDF_Array::setFromVector(std::vector const& v) { - if (sparse) { - sp_elements = SparseOHArray(); - for (auto const& iter: v) { - sp_elements.elements[sp_elements.n_elements++] = iter.getObj(); - } - } else { - elements.resize(0); - for (auto const& iter: v) { - elements.push_back(iter.getObj()); - } - } -} - -void -QPDF_Array::setFromVector(std::vector>&& v) -{ - if (sparse) { - sp_elements = SparseOHArray(); - for (auto&& item: v) { - if (item->getTypeCode() != ::ot_null || - item->getObjGen().isIndirect()) { - sp_elements.elements[sp_elements.n_elements] = std::move(item); - } - ++sp_elements.n_elements; - } - } else { - elements = std::move(v); + elements.resize(0); + elements.reserve(v.size()); + for (auto const& item: v) { + checkOwnership(item); + elements.push_back(item.getObj()); } } -- cgit v1.2.3-70-g09d2