diff --git a/libqpdf/NNTree.cc b/libqpdf/NNTree.cc index a888f42f..3ab18190 100644 --- a/libqpdf/NNTree.cc +++ b/libqpdf/NNTree.cc @@ -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); diff --git a/libtests/nntree.cc b/libtests/nntree.cc index 31b1bd42..f999e2e7 100644 --- a/libtests/nntree.cc +++ b/libtests/nntree.cc @@ -62,13 +62,13 @@ test_bsearch() auto mk = [&q](std::vector 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); diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc index 03d5d57d..00d87d6a 100644 --- a/qpdf/test_driver.cc +++ b/qpdf/test_driver.cc @@ -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 pages = QPDFPageDocumentHelper(pdf).getAllPages(); QPDFObjectHandle qtest = QPDFObjectHandle::newArray(); - for (std::vector::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)); } diff --git a/qpdf/test_large_file.cc b/qpdf/test_large_file.cc index e264e831..32494426 100644 --- a/qpdf/test_large_file.cc +++ b/qpdf/test_large_file.cc @@ -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) {