2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-05-29 00:10:54 +00:00

Refactor QPDF_Array::copy

This commit is contained in:
m-holger 2022-12-11 16:49:41 +00:00
parent a171ebb942
commit d3f2dc322b
3 changed files with 16 additions and 19 deletions

View File

@ -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));
}
}
}

View File

@ -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;
}

View File

@ -16,7 +16,6 @@ class SparseOHArray
{
return n_elements;
}
SparseOHArray copy();
private:
friend class QPDF_Array;