mirror of https://github.com/qpdf/qpdf.git
Refactor QPDF_Array::getJSON
This commit is contained in:
parent
a7b6975132
commit
c2ab0441b5
|
@ -151,20 +151,33 @@ QPDF_Array::unparse()
|
|||
JSON
|
||||
QPDF_Array::getJSON(int json_version)
|
||||
{
|
||||
static const JSON j_null = JSON::makeNull();
|
||||
JSON j_array = JSON::makeArray();
|
||||
if (sparse) {
|
||||
JSON j = JSON::makeArray();
|
||||
for (int i = 0; i < sp_size; ++i) {
|
||||
j.addArrayElement(at(i).getJSON(json_version));
|
||||
int next = 0;
|
||||
for (auto& item: sp_elements) {
|
||||
int key = item.first;
|
||||
for (int j = next; j < key; ++j) {
|
||||
j_array.addArrayElement(j_null);
|
||||
}
|
||||
auto og = item.second->getObjGen();
|
||||
j_array.addArrayElement(
|
||||
og.isIndirect() ? JSON::makeString(og.unparse(' ') + " R")
|
||||
: item.second->getJSON(json_version));
|
||||
next = ++key;
|
||||
}
|
||||
for (int j = next; j < sp_size; ++j) {
|
||||
j_array.addArrayElement(j_null);
|
||||
}
|
||||
return j;
|
||||
} else {
|
||||
JSON j = JSON::makeArray();
|
||||
size_t size = elements.size();
|
||||
for (int i = 0; i < int(size); ++i) {
|
||||
j.addArrayElement(at(i).getJSON(json_version));
|
||||
for (auto const& item: elements) {
|
||||
auto og = item->getObjGen();
|
||||
j_array.addArrayElement(
|
||||
og.isIndirect() ? JSON::makeString(og.unparse(' ') + " R")
|
||||
: item->getJSON(json_version));
|
||||
}
|
||||
return j;
|
||||
}
|
||||
return j_array;
|
||||
}
|
||||
|
||||
QPDFObjectHandle
|
||||
|
|
|
@ -50,5 +50,6 @@ QPDF_Null::unparse()
|
|||
JSON
|
||||
QPDF_Null::getJSON(int json_version)
|
||||
{
|
||||
// If this is updated, QPDF_Array::getJSON must also be updated.
|
||||
return JSON::makeNull();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue