Use fluent appendItem

This commit is contained in:
Jay Berkenbilt 2022-04-29 20:41:16 -04:00
parent ab9d557cb0
commit 2878c186bf
4 changed files with 41 additions and 40 deletions

View File

@ -208,9 +208,8 @@ NNTreeIterator::resetLimits(
}
}
if (first.isInitialized() && last.isInitialized()) {
auto limits = QPDFObjectHandle::newArray();
limits.appendItem(first);
limits.appendItem(last);
auto limits =
QPDFObjectHandle::newArray().appendItem(first).appendItem(last);
auto olimits = node.getKey("/Limits");
if (olimits.isArray() && (olimits.getArrayNItems() == 2)) {
auto ofirst = olimits.getArrayItem(0);

View File

@ -62,13 +62,13 @@ test_bsearch()
auto mk = [&q](std::vector<int> const& v) {
auto nums = QPDFObjectHandle::newArray();
for (auto i : v) {
nums.appendItem(QPDFObjectHandle::newInteger(i));
nums.appendItem(QPDFObjectHandle::newString(
"-" + QUtil::int_to_string(i) + "-"));
nums.appendItem(QPDFObjectHandle::newInteger(i))
.appendItem(QPDFObjectHandle::newString(
"-" + QUtil::int_to_string(i) + "-"));
}
auto limits = QPDFObjectHandle::newArray();
limits.appendItem(QPDFObjectHandle::newInteger(v.at(0)));
limits.appendItem(QPDFObjectHandle::newInteger(v.at(v.size() - 1)));
limits.appendItem(QPDFObjectHandle::newInteger(v.at(0)))
.appendItem(QPDFObjectHandle::newInteger(v.at(v.size() - 1)));
auto node = q.makeIndirectObject(QPDFObjectHandle::newDictionary());
node.replaceKey("/Nums", nums).replaceKey("/Limits", limits);
return node;
@ -168,8 +168,8 @@ test_depth()
int val =
(((((i1 * NITEMS) + i2) * NITEMS) + i3) * NITEMS) + i4;
std::string str = QUtil::int_to_string(10 * val, 6);
items.appendItem(QPDFObjectHandle::newString(str));
items.appendItem(QPDFObjectHandle::newString("val " + str));
items.appendItem(QPDFObjectHandle::newString(str))
.appendItem(QPDFObjectHandle::newString("val " + str));
if (i4 == 0) {
first = str;
} else if (i4 == NITEMS - 1) {
@ -178,21 +178,23 @@ test_depth()
}
auto limits = QPDFObjectHandle::newArray();
n3.replaceKey("/Limits", limits);
limits.appendItem(QPDFObjectHandle::newString(first));
limits.appendItem(QPDFObjectHandle::newString(last));
limits.appendItem(QPDFObjectHandle::newString(first))
.appendItem(QPDFObjectHandle::newString(last));
}
auto limits = QPDFObjectHandle::newArray();
n2.replaceKey("/Limits", limits);
limits.appendItem(
k2.getArrayItem(0).getKey("/Limits").getArrayItem(0));
limits.appendItem(
k2.getArrayItem(NITEMS - 1).getKey("/Limits").getArrayItem(1));
limits
.appendItem(
k2.getArrayItem(0).getKey("/Limits").getArrayItem(0))
.appendItem(k2.getArrayItem(NITEMS - 1)
.getKey("/Limits")
.getArrayItem(1));
}
auto limits = QPDFObjectHandle::newArray();
n1.replaceKey("/Limits", limits);
limits.appendItem(k1.getArrayItem(0).getKey("/Limits").getArrayItem(0));
limits.appendItem(
k1.getArrayItem(NITEMS - 1).getKey("/Limits").getArrayItem(1));
limits.appendItem(k1.getArrayItem(0).getKey("/Limits").getArrayItem(0))
.appendItem(
k1.getArrayItem(NITEMS - 1).getKey("/Limits").getArrayItem(1));
}
QPDFNameTreeObjectHelper nh(n0, q);

View File

@ -912,10 +912,8 @@ test_24(QPDF& pdf, char const* arg2)
QPDFObjectHandle array1 = QPDFObjectHandle::newArray();
QPDFObjectHandle array2 = QPDFObjectHandle::newArray();
array1.appendItem(res2);
array1.appendItem(QPDFObjectHandle::newInteger(1));
array2.appendItem(res1);
array2.appendItem(QPDFObjectHandle::newInteger(2));
array1.appendItem(res2).appendItem(QPDFObjectHandle::newInteger(1));
array2.appendItem(res1).appendItem(QPDFObjectHandle::newInteger(2));
// Make sure trying to ask questions about a reserved object
// doesn't break it.
if (res1.isArray()) {
@ -1087,12 +1085,11 @@ test_27(QPDF& pdf, char const* arg2)
pdf.getTrailer()
.replaceKey("/QTest", pdf.copyForeignObject(qtest))
.replaceKey("/QTest2", QPDFObjectHandle::newArray());
pdf.getTrailer().getKey("/QTest2").appendItem(
pdf.copyForeignObject(s1));
pdf.getTrailer().getKey("/QTest2").appendItem(
pdf.copyForeignObject(s2));
pdf.getTrailer().getKey("/QTest2").appendItem(
pdf.copyForeignObject(s3));
pdf.getTrailer()
.getKey("/QTest2")
.appendItem(pdf.copyForeignObject(s1))
.appendItem(pdf.copyForeignObject(s2))
.appendItem(pdf.copyForeignObject(s3));
}
QPDFWriter w(pdf, "a.pdf");
@ -2099,10 +2096,13 @@ test_55(QPDF& pdf, char const* arg2)
std::vector<QPDFPageObjectHelper> pages =
QPDFPageDocumentHelper(pdf).getAllPages();
QPDFObjectHandle qtest = QPDFObjectHandle::newArray();
for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
iter != pages.end();
++iter) {
QPDFPageObjectHelper& ph(*iter);
for (auto& ph: pages) {
// Note: using fluent appendItem causes a test failure with
// MSVC 19.31.31107, which appears to evaluate the argument to
// the second appendItem before the first. Since these
// arguments have the side effect of creating objects, the
// object numbers end up being different even though the
// resulting file is semantically correct.
qtest.appendItem(ph.getFormXObjectForPage());
qtest.appendItem(ph.getFormXObjectForPage(false));
}

View File

@ -199,18 +199,18 @@ create_pdf(char const* filename)
QPDFObjectHandle procset =
pdf.makeIndirectObject(QPDFObjectHandle::newArray());
procset.appendItem(newName("/PDF"));
procset.appendItem(newName("/Text"));
procset.appendItem(newName("/ImageC"));
procset.appendItem(newName("/PDF"))
.appendItem(newName("/Text"))
.appendItem(newName("/ImageC"));
QPDFObjectHandle rfont = QPDFObjectHandle::newDictionary();
rfont.replaceKey("/F1", font);
QPDFObjectHandle mediabox = QPDFObjectHandle::newArray();
mediabox.appendItem(newInteger(0));
mediabox.appendItem(newInteger(0));
mediabox.appendItem(newInteger(612));
mediabox.appendItem(newInteger(792));
mediabox.appendItem(newInteger(0))
.appendItem(newInteger(0))
.appendItem(newInteger(612))
.appendItem(newInteger(792));
QPDFPageDocumentHelper dh(pdf);
for (size_t pageno = 1; pageno <= npages; ++pageno) {