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:
parent
a171ebb942
commit
d3f2dc322b
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@ class SparseOHArray
|
|||
{
|
||||
return n_elements;
|
||||
}
|
||||
SparseOHArray copy();
|
||||
|
||||
private:
|
||||
friend class QPDF_Array;
|
||||
|
|
Loading…
Reference in New Issue
Block a user