aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-04-09 20:49:10 +0200
committerJay Berkenbilt <ejb@ql.org>2022-04-09 23:33:29 +0200
commitba0ef7a124e9aecc2d0113598c851bae4710b887 (patch)
tree5dec35b3d51effc43e55ff3ba0b1ca3f274eea17 /qpdf
parenta68703b07e928be0eeb909c0e777e13e88cbf86d (diff)
downloadqpdf-ba0ef7a124e9aecc2d0113598c851bae4710b887.tar.zst
Replace PointerHolder with std::shared_ptr in the rest of the code
Increase to POINTERHOLDER_TRANSITION=3 patrepl s/PointerHolder/std::shared_ptr/g **/*.cc **/*.hh patrepl s/make_pointer_holder/std::make_shared/g **/*.cc patrepl s/make_array_pointer_holder/QUtil::make_shared_array/g **/*.cc patrepl s,qpdf/std::shared_ptr,qpdf/PointerHolder, **/*.cc **/*.hh git restore include/qpdf/PointerHolder.hh git restore libtests/pointer_holder.cc cleanpatch ./format-code
Diffstat (limited to 'qpdf')
-rw-r--r--qpdf/test_driver.cc47
-rw-r--r--qpdf/test_large_file.cc4
-rw-r--r--qpdf/test_tokenizer.cc18
3 files changed, 34 insertions, 35 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index c697bdc9..8a93721f 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -49,7 +49,7 @@ usage()
class Provider: public QPDFObjectHandle::StreamDataProvider
{
public:
- Provider(PointerHolder<Buffer> b) :
+ Provider(std::shared_ptr<Buffer> b) :
b(b),
bad_length(false)
{
@@ -74,7 +74,7 @@ class Provider: public QPDFObjectHandle::StreamDataProvider
}
private:
- PointerHolder<Buffer> b;
+ std::shared_ptr<Buffer> b;
bool bad_length;
};
@@ -151,7 +151,7 @@ class TokenFilter: public QPDFObjectHandle::TokenFilter
static std::string
getPageContents(QPDFObjectHandle page)
{
- PointerHolder<Buffer> b1 = page.getKey("/Contents").getStreamData();
+ std::shared_ptr<Buffer> b1 = page.getKey("/Contents").getStreamData();
return std::string(
reinterpret_cast<char*>(b1->getBuffer()), b1->getSize()) +
"\0";
@@ -271,14 +271,14 @@ test_0_1(QPDF& pdf, char const* arg2)
std::cout << "Raw stream data:" << std::endl;
std::cout.flush();
QUtil::binary_stdout();
- auto out = make_pointer_holder<Pl_StdioFile>("raw", stdout);
+ auto out = std::make_shared<Pl_StdioFile>("raw", stdout);
qtest.pipeStreamData(out.get(), 0, qpdf_dl_none);
std::cout << std::endl << "Uncompressed stream data:" << std::endl;
if (qtest.pipeStreamData(0, 0, qpdf_dl_all)) {
std::cout.flush();
QUtil::binary_stdout();
- out = make_pointer_holder<Pl_StdioFile>("filtered", stdout);
+ out = std::make_shared<Pl_StdioFile>("filtered", stdout);
qtest.pipeStreamData(out.get(), 0, qpdf_dl_all);
std::cout << std::endl << "End of stream data" << std::endl;
} else {
@@ -316,7 +316,7 @@ test_2(QPDF& pdf, char const* arg2)
QPDFObjectHandle page = kids.getArrayItem(1); // second page
QPDFObjectHandle contents = page.getKey("/Contents");
QUtil::binary_stdout();
- auto out = make_pointer_holder<Pl_StdioFile>("filtered", stdout);
+ auto out = std::make_shared<Pl_StdioFile>("filtered", stdout);
contents.pipeStreamData(out.get(), 0, qpdf_dl_generalized);
}
@@ -329,8 +329,7 @@ test_3(QPDF& pdf, char const* arg2)
std::cout << "-- stream " << i << " --" << std::endl;
std::cout.flush();
QUtil::binary_stdout();
- auto out =
- make_pointer_holder<Pl_StdioFile>("tokenized stream", stdout);
+ auto out = std::make_shared<Pl_StdioFile>("tokenized stream", stdout);
stream.pipeStreamData(
out.get(), qpdf_ef_normalize, qpdf_dl_generalized);
}
@@ -503,7 +502,7 @@ test_8(QPDF& pdf, char const* arg2)
// This is a bogus way to use StreamDataProvider, but it does
// adequately test its functionality.
Provider* provider = new Provider(b);
- auto p = PointerHolder<QPDFObjectHandle::StreamDataProvider>(provider);
+ auto p = std::shared_ptr<QPDFObjectHandle::StreamDataProvider>(provider);
qstream.replaceStreamData(
p,
QPDFObjectHandle::newName("/FlateDecode"),
@@ -532,7 +531,7 @@ test_9(QPDF& pdf, char const* arg2)
{
QPDFObjectHandle root = pdf.getRoot();
// Explicitly exercise the Buffer version of newStream
- auto buf = make_pointer_holder<Buffer>(20U);
+ auto buf = std::make_shared<Buffer>(20U);
unsigned char* bp = buf->getBuffer();
memcpy(bp, "data for new stream\n", 20); // no null!
QPDFObjectHandle qstream = QPDFObjectHandle::newStream(&pdf, buf);
@@ -581,8 +580,8 @@ test_11(QPDF& pdf, char const* arg2)
{
QPDFObjectHandle root = pdf.getRoot();
QPDFObjectHandle qstream = root.getKey("/QStream");
- PointerHolder<Buffer> b1 = qstream.getStreamData();
- PointerHolder<Buffer> b2 = qstream.getRawStreamData();
+ std::shared_ptr<Buffer> b1 = qstream.getStreamData();
+ std::shared_ptr<Buffer> b2 = qstream.getRawStreamData();
if ((b1->getSize() == 7) && (memcmp(b1->getBuffer(), "potato\n", 7) == 0)) {
std::cout << "filtered stream data okay" << std::endl;
}
@@ -815,7 +814,7 @@ test_17(QPDF& pdf, char const* arg2)
QPDFObjectHandle(pages.at(1)).getKey("/Contents").getObjGen());
pdf.removePage(pages.at(0));
assert(pages.size() == 2);
- PointerHolder<Buffer> b =
+ std::shared_ptr<Buffer> b =
QPDFObjectHandle(pages.at(0)).getKey("/Contents").getStreamData();
std::string contents = std::string(
reinterpret_cast<char const*>(b->getBuffer()), b->getSize());
@@ -1039,7 +1038,7 @@ test_27(QPDF& pdf, char const* arg2)
// also exercise setImmediateCopyFrom.
// Create a provider. The provider stays in scope.
- PointerHolder<QPDFObjectHandle::StreamDataProvider> p1;
+ std::shared_ptr<QPDFObjectHandle::StreamDataProvider> p1;
{
// Local scope
Pl_Buffer pl("buffer");
@@ -1065,7 +1064,7 @@ test_27(QPDF& pdf, char const* arg2)
// Make sure some source PDFs are out of scope when we
// write.
- PointerHolder<QPDFObjectHandle::StreamDataProvider> p2;
+ std::shared_ptr<QPDFObjectHandle::StreamDataProvider> p2;
// Create another provider. This one will go out of scope
// along with its containing qpdf, which has
// setImmediateCopyFrom(true).
@@ -1266,7 +1265,7 @@ test_35(QPDF& pdf, char const* arg2)
{
// Extract attachments
- std::map<std::string, PointerHolder<Buffer>> attachments;
+ std::map<std::string, std::shared_ptr<Buffer>> attachments;
QPDFObjectHandle root = pdf.getRoot();
QPDFObjectHandle names = root.getKey("/Names");
QPDFObjectHandle embeddedFiles = names.getKey("/EmbeddedFiles");
@@ -1282,7 +1281,7 @@ test_35(QPDF& pdf, char const* arg2)
attachments[filename] = stream.getStreamData();
}
}
- for (std::map<std::string, PointerHolder<Buffer>>::iterator iter =
+ for (std::map<std::string, std::shared_ptr<Buffer>>::iterator iter =
attachments.begin();
iter != attachments.end();
++iter) {
@@ -1421,7 +1420,7 @@ test_41(QPDF& pdf, char const* arg2)
iter != pages.end();
++iter) {
(*iter).addContentTokenFilter(
- PointerHolder<QPDFObjectHandle::TokenFilter>(new TokenFilter()));
+ std::shared_ptr<QPDFObjectHandle::TokenFilter>(new TokenFilter()));
}
QPDFWriter w(pdf, "a.pdf");
w.setQDFMode(true);
@@ -2468,12 +2467,12 @@ test_68(QPDF& pdf, char const* arg2)
} catch (std::exception& e) {
std::cout << "get unfilterable stream: " << e.what() << std::endl;
}
- PointerHolder<Buffer> b1 = qstream.getStreamData(qpdf_dl_all);
+ std::shared_ptr<Buffer> b1 = qstream.getStreamData(qpdf_dl_all);
if ((b1->getSize() > 10) &&
(memcmp(b1->getBuffer(), "wwwwwwwww", 9) == 0)) {
std::cout << "filtered stream data okay" << std::endl;
}
- PointerHolder<Buffer> b2 = qstream.getRawStreamData();
+ std::shared_ptr<Buffer> b2 = qstream.getRawStreamData();
if ((b2->getSize() > 10) &&
(memcmp(
b2->getBuffer(), "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46", 10) ==
@@ -2578,11 +2577,11 @@ test_72(QPDF& pdf, char const* arg2)
Pl_Buffer b("buffer");
if (i == 0) {
fx1.addContentTokenFilter(
- PointerHolder<QPDFObjectHandle::TokenFilter>(
+ std::shared_ptr<QPDFObjectHandle::TokenFilter>(
new TokenFilter()));
} else {
fx1.getObjectHandle().addTokenFilter(
- PointerHolder<QPDFObjectHandle::TokenFilter>(
+ std::shared_ptr<QPDFObjectHandle::TokenFilter>(
new TokenFilter()));
}
fx1.pipeContents(&b);
@@ -2999,7 +2998,7 @@ test_83(QPDF& pdf, char const* arg2)
// partial = true, we just use qpdf --job-json-file.
QPDFJob j;
- PointerHolder<char> file_buf;
+ std::shared_ptr<char> file_buf;
size_t size;
QUtil::read_file_into_memory(arg2, file_buf, size);
try {
@@ -3201,7 +3200,7 @@ runtest(int n, char const* filename1, char const* arg2)
}
QPDF pdf;
- PointerHolder<char> file_buf;
+ std::shared_ptr<char> file_buf;
FILE* filep = 0;
if (n == 0) {
pdf.setAttemptRecovery(false);
diff --git a/qpdf/test_large_file.cc b/qpdf/test_large_file.cc
index 0a81dcc7..24fc9e11 100644
--- a/qpdf/test_large_file.cc
+++ b/qpdf/test_large_file.cc
@@ -231,7 +231,7 @@ create_pdf(char const* filename)
image_dict.replaceKey("/Width", newInteger(width));
image_dict.replaceKey("/Height", newInteger(height));
ImageProvider* p = new ImageProvider(pageno);
- PointerHolder<QPDFObjectHandle::StreamDataProvider> provider(p);
+ std::shared_ptr<QPDFObjectHandle::StreamDataProvider> provider(p);
image.replaceStreamData(
provider, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull());
@@ -265,7 +265,7 @@ create_pdf(char const* filename)
static void
check_page_contents(size_t pageno, QPDFObjectHandle page)
{
- PointerHolder<Buffer> buf = page.getKey("/Contents").getStreamData();
+ std::shared_ptr<Buffer> buf = page.getKey("/Contents").getStreamData();
std::string actual_contents =
std::string(reinterpret_cast<char*>(buf->getBuffer()), buf->getSize());
std::string expected_contents = generate_page_contents(pageno);
diff --git a/qpdf/test_tokenizer.cc b/qpdf/test_tokenizer.cc
index c609d848..5b99888c 100644
--- a/qpdf/test_tokenizer.cc
+++ b/qpdf/test_tokenizer.cc
@@ -25,7 +25,7 @@ usage()
class Finder: public InputSource::Finder
{
public:
- Finder(PointerHolder<InputSource> is, std::string const& str) :
+ Finder(std::shared_ptr<InputSource> is, std::string const& str) :
is(is),
str(str)
{
@@ -36,7 +36,7 @@ class Finder: public InputSource::Finder
virtual bool check();
private:
- PointerHolder<InputSource> is;
+ std::shared_ptr<InputSource> is;
std::string str;
};
@@ -117,7 +117,7 @@ sanitize(std::string const& value)
static void
try_skipping(
QPDFTokenizer& tokenizer,
- PointerHolder<InputSource> is,
+ std::shared_ptr<InputSource> is,
size_t max_len,
char const* what,
Finder& f)
@@ -132,7 +132,7 @@ try_skipping(
static void
dump_tokens(
- PointerHolder<InputSource> is,
+ std::shared_ptr<InputSource> is,
std::string const& label,
size_t max_len,
bool include_ignorable,
@@ -191,12 +191,12 @@ dump_tokens(
static void
process(char const* filename, bool include_ignorable, size_t max_len)
{
- PointerHolder<InputSource> is;
+ std::shared_ptr<InputSource> is;
// Tokenize file, skipping streams
FileInputSource* fis = new FileInputSource();
fis->setFilename(filename);
- is = PointerHolder<InputSource>(fis);
+ is = std::shared_ptr<InputSource>(fis);
dump_tokens(is, "FILE", max_len, include_ignorable, true, false);
// Tokenize content streams, skipping inline images
@@ -214,7 +214,7 @@ process(char const* filename, bool include_ignorable, size_t max_len)
auto content_data = plb.getBufferSharedPointer();
BufferInputSource* bis =
new BufferInputSource("content data", content_data.get());
- is = PointerHolder<InputSource>(bis);
+ is = std::shared_ptr<InputSource>(bis);
dump_tokens(
is,
"PAGE " + QUtil::int_to_string(pageno),
@@ -231,11 +231,11 @@ process(char const* filename, bool include_ignorable, size_t max_len)
++iter) {
if ((*iter).isStream() && (*iter).getDict().getKey("/Type").isName() &&
(*iter).getDict().getKey("/Type").getName() == "/ObjStm") {
- PointerHolder<Buffer> b =
+ std::shared_ptr<Buffer> b =
(*iter).getStreamData(qpdf_dl_specialized);
BufferInputSource* bis =
new BufferInputSource("object stream data", b.get());
- is = PointerHolder<InputSource>(bis);
+ is = std::shared_ptr<InputSource>(bis);
dump_tokens(
is,
"OBJECT STREAM " + QUtil::int_to_string((*iter).getObjectID()),