Commit ba0ef7a124e9aecc2d0113598c851bae4710b887
1 parent
a68703b0
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
Showing
14 changed files
with
79 additions
and
79 deletions
CMakeLists.txt
| ... | ... | @@ -108,7 +108,7 @@ if(NOT (BUILD_STATIC_LIBS OR BUILD_SHARED_LIBS)) |
| 108 | 108 | FATAL_ERROR "At least one of static or shared libraries must be built") |
| 109 | 109 | endif() |
| 110 | 110 | |
| 111 | -add_compile_definitions($<$<COMPILE_LANGUAGE:CXX>:POINTERHOLDER_TRANSITION=2>) | |
| 111 | +add_compile_definitions($<$<COMPILE_LANGUAGE:CXX>:POINTERHOLDER_TRANSITION=3>) | |
| 112 | 112 | |
| 113 | 113 | enable_testing() |
| 114 | 114 | set(RUN_QTEST perl ${qpdf_SOURCE_DIR}/run-qtest) | ... | ... |
examples/pdf-create.cc
| ... | ... | @@ -176,7 +176,7 @@ add_page( |
| 176 | 176 | // with /FlateDecode if we don't provide any other form of |
| 177 | 177 | // compression. |
| 178 | 178 | ImageProvider* p = new ImageProvider(color_space, filter); |
| 179 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> provider(p); | |
| 179 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> provider(p); | |
| 180 | 180 | size_t width = p->getWidth(); |
| 181 | 181 | size_t height = p->getHeight(); |
| 182 | 182 | QPDFObjectHandle image = QPDFObjectHandle::newStream(&pdf); |
| ... | ... | @@ -296,10 +296,10 @@ check( |
| 296 | 296 | // Check image data |
| 297 | 297 | auto actual_data = image.getStreamData(qpdf_dl_all); |
| 298 | 298 | ImageProvider* p = new ImageProvider(desired_color_space, "null"); |
| 299 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> provider(p); | |
| 299 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> provider(p); | |
| 300 | 300 | Pl_Buffer b_p("get image data"); |
| 301 | 301 | provider->provideStreamData(0, 0, &b_p); |
| 302 | - PointerHolder<Buffer> desired_data(b_p.getBuffer()); | |
| 302 | + std::shared_ptr<Buffer> desired_data(b_p.getBuffer()); | |
| 303 | 303 | |
| 304 | 304 | if (desired_data->getSize() != actual_data->getSize()) { |
| 305 | 305 | std::cout << "page " << pageno << ": image data length mismatch" | ... | ... |
examples/pdf-custom-filter.cc
| ... | ... | @@ -205,7 +205,7 @@ class StreamReplacer: public QPDFObjectHandle::StreamDataProvider |
| 205 | 205 | |
| 206 | 206 | void registerStream( |
| 207 | 207 | QPDFObjectHandle stream, |
| 208 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> self); | |
| 208 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> self); | |
| 209 | 209 | |
| 210 | 210 | private: |
| 211 | 211 | bool maybeReplace( |
| ... | ... | @@ -283,7 +283,7 @@ StreamReplacer::maybeReplace( |
| 283 | 283 | // make all its decisions from the stream dictionary. However, |
| 284 | 284 | // it's a good idea to make sure we can retrieve the filtered data |
| 285 | 285 | // if we are going to need it later. |
| 286 | - PointerHolder<Buffer> out; | |
| 286 | + std::shared_ptr<Buffer> out; | |
| 287 | 287 | try { |
| 288 | 288 | out = stream.getStreamData(); |
| 289 | 289 | } catch (...) { |
| ... | ... | @@ -321,7 +321,7 @@ StreamReplacer::maybeReplace( |
| 321 | 321 | void |
| 322 | 322 | StreamReplacer::registerStream( |
| 323 | 323 | QPDFObjectHandle stream, |
| 324 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> self) | |
| 324 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> self) | |
| 325 | 325 | { |
| 326 | 326 | QPDFObjGen og(stream.getObjGen()); |
| 327 | 327 | |
| ... | ... | @@ -409,10 +409,10 @@ process( |
| 409 | 409 | qpdf.processFile(infilename); |
| 410 | 410 | |
| 411 | 411 | // Create a single StreamReplacer instance. The interface requires |
| 412 | - // a PointerHolder in various places, so allocate a StreamReplacer | |
| 413 | - // and stash it in a PointerHolder. | |
| 412 | + // a std::shared_ptr in various places, so allocate a StreamReplacer | |
| 413 | + // and stash it in a std::shared_ptr. | |
| 414 | 414 | StreamReplacer* replacer = new StreamReplacer(&qpdf); |
| 415 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> p(replacer); | |
| 415 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> p(replacer); | |
| 416 | 416 | |
| 417 | 417 | for (auto& o : qpdf.getAllObjects()) { |
| 418 | 418 | if (o.isStream()) { | ... | ... |
examples/pdf-filter-tokens.cc
| ... | ... | @@ -207,10 +207,11 @@ main(int argc, char* argv[]) |
| 207 | 207 | // details. |
| 208 | 208 | QPDFPageObjectHelper& page(*iter); |
| 209 | 209 | page.addContentTokenFilter( |
| 210 | - PointerHolder<QPDFObjectHandle::TokenFilter>( | |
| 210 | + std::shared_ptr<QPDFObjectHandle::TokenFilter>( | |
| 211 | 211 | new StringReverser)); |
| 212 | 212 | page.addContentTokenFilter( |
| 213 | - PointerHolder<QPDFObjectHandle::TokenFilter>(new ColorToGray)); | |
| 213 | + std::shared_ptr<QPDFObjectHandle::TokenFilter>( | |
| 214 | + new ColorToGray)); | |
| 214 | 215 | } |
| 215 | 216 | |
| 216 | 217 | QPDFWriter w(pdf, outfilename); | ... | ... |
examples/pdf-invert-images.cc
| ... | ... | @@ -41,7 +41,7 @@ class ImageInverter: public QPDFObjectHandle::StreamDataProvider |
| 41 | 41 | |
| 42 | 42 | void registerImage( |
| 43 | 43 | QPDFObjectHandle image, |
| 44 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> self); | |
| 44 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> self); | |
| 45 | 45 | |
| 46 | 46 | private: |
| 47 | 47 | std::map<QPDFObjGen, QPDFObjectHandle> copied_images; |
| ... | ... | @@ -50,14 +50,14 @@ class ImageInverter: public QPDFObjectHandle::StreamDataProvider |
| 50 | 50 | void |
| 51 | 51 | ImageInverter::registerImage( |
| 52 | 52 | QPDFObjectHandle image, |
| 53 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> self) | |
| 53 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> self) | |
| 54 | 54 | { |
| 55 | 55 | // replaceStreamData requires a pointer holder to the stream data |
| 56 | 56 | // provider, but there's no way for us to generate one ourselves, |
| 57 | 57 | // so we have to have it handed to us. Don't be tempted to have |
| 58 | - // the class contain a PointerHolder to itself as a member. Doing | |
| 58 | + // the class contain a std::shared_ptr to itself as a member. Doing | |
| 59 | 59 | // this will prevent the class from ever being deleted since the |
| 60 | - // reference count will never drop to zero (and PointerHolder | |
| 60 | + // reference count will never drop to zero (and std::shared_ptr | |
| 61 | 61 | // doesn't have weak references). |
| 62 | 62 | |
| 63 | 63 | QPDFObjGen og(image.getObjGen()); |
| ... | ... | @@ -90,7 +90,7 @@ ImageInverter::provideStreamData(int objid, int generation, Pipeline* pipeline) |
| 90 | 90 | // image data. Then invert the image data and write the inverted |
| 91 | 91 | // data to the pipeline. |
| 92 | 92 | QPDFObjGen og(objid, generation); |
| 93 | - PointerHolder<Buffer> data = | |
| 93 | + std::shared_ptr<Buffer> data = | |
| 94 | 94 | this->copied_images[og].getStreamData(qpdf_dl_all); |
| 95 | 95 | size_t size = data->getSize(); |
| 96 | 96 | unsigned char* buf = data->getBuffer(); |
| ... | ... | @@ -128,7 +128,7 @@ main(int argc, char* argv[]) |
| 128 | 128 | qpdf.processFile(infilename, password); |
| 129 | 129 | |
| 130 | 130 | ImageInverter* inv = new ImageInverter; |
| 131 | - auto p = PointerHolder<QPDFObjectHandle::StreamDataProvider>(inv); | |
| 131 | + auto p = std::shared_ptr<QPDFObjectHandle::StreamDataProvider>(inv); | |
| 132 | 132 | |
| 133 | 133 | // For each page... |
| 134 | 134 | std::vector<QPDFPageObjectHelper> pages = | ... | ... |
fuzz/qpdf_fuzzer.cc
| ... | ... | @@ -34,9 +34,9 @@ class FuzzHelper |
| 34 | 34 | void run(); |
| 35 | 35 | |
| 36 | 36 | private: |
| 37 | - PointerHolder<QPDF> getQpdf(); | |
| 38 | - PointerHolder<QPDFWriter> getWriter(PointerHolder<QPDF>); | |
| 39 | - void doWrite(PointerHolder<QPDFWriter> w); | |
| 37 | + std::shared_ptr<QPDF> getQpdf(); | |
| 38 | + std::shared_ptr<QPDFWriter> getWriter(std::shared_ptr<QPDF>); | |
| 39 | + void doWrite(std::shared_ptr<QPDFWriter> w); | |
| 40 | 40 | void testWrite(); |
| 41 | 41 | void testPages(); |
| 42 | 42 | void testOutlines(); |
| ... | ... | @@ -52,27 +52,27 @@ FuzzHelper::FuzzHelper(unsigned char const* data, size_t size) : |
| 52 | 52 | { |
| 53 | 53 | } |
| 54 | 54 | |
| 55 | -PointerHolder<QPDF> | |
| 55 | +std::shared_ptr<QPDF> | |
| 56 | 56 | FuzzHelper::getQpdf() |
| 57 | 57 | { |
| 58 | - auto is = PointerHolder<InputSource>( | |
| 58 | + auto is = std::shared_ptr<InputSource>( | |
| 59 | 59 | new BufferInputSource("fuzz input", &this->input_buffer)); |
| 60 | - auto qpdf = make_pointer_holder<QPDF>(); | |
| 60 | + auto qpdf = std::make_shared<QPDF>(); | |
| 61 | 61 | qpdf->processInputSource(is); |
| 62 | 62 | return qpdf; |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | -PointerHolder<QPDFWriter> | |
| 66 | -FuzzHelper::getWriter(PointerHolder<QPDF> qpdf) | |
| 65 | +std::shared_ptr<QPDFWriter> | |
| 66 | +FuzzHelper::getWriter(std::shared_ptr<QPDF> qpdf) | |
| 67 | 67 | { |
| 68 | - auto w = make_pointer_holder<QPDFWriter>(*qpdf); | |
| 68 | + auto w = std::make_shared<QPDFWriter>(*qpdf); | |
| 69 | 69 | w->setOutputPipeline(&this->discard); |
| 70 | 70 | w->setDecodeLevel(qpdf_dl_all); |
| 71 | 71 | return w; |
| 72 | 72 | } |
| 73 | 73 | |
| 74 | 74 | void |
| 75 | -FuzzHelper::doWrite(PointerHolder<QPDFWriter> w) | |
| 75 | +FuzzHelper::doWrite(std::shared_ptr<QPDFWriter> w) | |
| 76 | 76 | { |
| 77 | 77 | try { |
| 78 | 78 | w->write(); |
| ... | ... | @@ -88,8 +88,8 @@ FuzzHelper::testWrite() |
| 88 | 88 | { |
| 89 | 89 | // Write in various ways to exercise QPDFWriter |
| 90 | 90 | |
| 91 | - PointerHolder<QPDF> q; | |
| 92 | - PointerHolder<QPDFWriter> w; | |
| 91 | + std::shared_ptr<QPDF> q; | |
| 92 | + std::shared_ptr<QPDFWriter> w; | |
| 93 | 93 | |
| 94 | 94 | q = getQpdf(); |
| 95 | 95 | w = getWriter(q); |
| ... | ... | @@ -126,7 +126,7 @@ FuzzHelper::testPages() |
| 126 | 126 | { |
| 127 | 127 | // Parse all content streams, and exercise some helpers that |
| 128 | 128 | // operate on pages. |
| 129 | - PointerHolder<QPDF> q = getQpdf(); | |
| 129 | + std::shared_ptr<QPDF> q = getQpdf(); | |
| 130 | 130 | QPDFPageDocumentHelper pdh(*q); |
| 131 | 131 | QPDFPageLabelDocumentHelper pldh(*q); |
| 132 | 132 | QPDFOutlineDocumentHelper odh(*q); |
| ... | ... | @@ -168,7 +168,7 @@ FuzzHelper::testPages() |
| 168 | 168 | void |
| 169 | 169 | FuzzHelper::testOutlines() |
| 170 | 170 | { |
| 171 | - PointerHolder<QPDF> q = getQpdf(); | |
| 171 | + std::shared_ptr<QPDF> q = getQpdf(); | |
| 172 | 172 | std::list<std::vector<QPDFOutlineObjectHelper>> queue; |
| 173 | 173 | QPDFOutlineDocumentHelper odh(*q); |
| 174 | 174 | queue.push_back(odh.getTopLevelOutlines()); | ... | ... |
fuzz/standalone_fuzz_target_runner.cc
libtests/input_source.cc
| ... | ... | @@ -5,11 +5,11 @@ |
| 5 | 5 | #include <cstring> |
| 6 | 6 | #include <iostream> |
| 7 | 7 | |
| 8 | -static PointerHolder<Buffer> | |
| 8 | +static std::shared_ptr<Buffer> | |
| 9 | 9 | get_buffer() |
| 10 | 10 | { |
| 11 | 11 | size_t size = 3172; |
| 12 | - PointerHolder<Buffer> b(new Buffer(size)); | |
| 12 | + std::shared_ptr<Buffer> b(new Buffer(size)); | |
| 13 | 13 | unsigned char* p = b->getBuffer(); |
| 14 | 14 | for (size_t i = 0; i < size; ++i) { |
| 15 | 15 | p[i] = static_cast<unsigned char>(i & 0xff); |
| ... | ... | @@ -20,7 +20,7 @@ get_buffer() |
| 20 | 20 | class Finder: public InputSource::Finder |
| 21 | 21 | { |
| 22 | 22 | public: |
| 23 | - Finder(PointerHolder<InputSource> is, std::string const& after) : | |
| 23 | + Finder(std::shared_ptr<InputSource> is, std::string const& after) : | |
| 24 | 24 | is(is), |
| 25 | 25 | after(after) |
| 26 | 26 | { |
| ... | ... | @@ -31,7 +31,7 @@ class Finder: public InputSource::Finder |
| 31 | 31 | virtual bool check(); |
| 32 | 32 | |
| 33 | 33 | private: |
| 34 | - PointerHolder<InputSource> is; | |
| 34 | + std::shared_ptr<InputSource> is; | |
| 35 | 35 | std::string after; |
| 36 | 36 | }; |
| 37 | 37 | |
| ... | ... | @@ -57,14 +57,14 @@ check(char const* description, bool expected, bool actual) |
| 57 | 57 | int |
| 58 | 58 | main() |
| 59 | 59 | { |
| 60 | - PointerHolder<Buffer> b1 = get_buffer(); | |
| 60 | + std::shared_ptr<Buffer> b1 = get_buffer(); | |
| 61 | 61 | unsigned char* b = b1->getBuffer(); |
| 62 | 62 | // Straddle block boundaries |
| 63 | 63 | memcpy(b + 1022, "potato", 6); |
| 64 | 64 | // Overlap so that the first check() would advance past the start |
| 65 | 65 | // of the next match |
| 66 | 66 | memcpy(b + 2037, "potato potato salad ", 20); |
| 67 | - auto is = PointerHolder<InputSource>( | |
| 67 | + auto is = std::shared_ptr<InputSource>( | |
| 68 | 68 | new BufferInputSource("test buffer input source", b1.get())); |
| 69 | 69 | Finder f1(is, "salad"); |
| 70 | 70 | check("find potato salad", true, is->findFirst("potato", 0, 0, f1)); | ... | ... |
libtests/json_parse.cc
libtests/qutil.cc
| ... | ... | @@ -529,7 +529,7 @@ read_from_file_test() |
| 529 | 529 | fclose(fp); |
| 530 | 530 | } |
| 531 | 531 | |
| 532 | - PointerHolder<char> buf; | |
| 532 | + std::shared_ptr<char> buf; | |
| 533 | 533 | size_t size = 0; |
| 534 | 534 | QUtil::read_file_into_memory("other-file", buf, size); |
| 535 | 535 | std::cout << "read " << size << " bytes" << std::endl; |
| ... | ... | @@ -595,7 +595,7 @@ assert_no_file(char const* filename) |
| 595 | 595 | void |
| 596 | 596 | rename_delete_test() |
| 597 | 597 | { |
| 598 | - PointerHolder<char> buf; | |
| 598 | + std::shared_ptr<char> buf; | |
| 599 | 599 | size_t size = 0; |
| 600 | 600 | |
| 601 | 601 | try { | ... | ... |
qpdf/test_driver.cc
| ... | ... | @@ -49,7 +49,7 @@ usage() |
| 49 | 49 | class Provider: public QPDFObjectHandle::StreamDataProvider |
| 50 | 50 | { |
| 51 | 51 | public: |
| 52 | - Provider(PointerHolder<Buffer> b) : | |
| 52 | + Provider(std::shared_ptr<Buffer> b) : | |
| 53 | 53 | b(b), |
| 54 | 54 | bad_length(false) |
| 55 | 55 | { |
| ... | ... | @@ -74,7 +74,7 @@ class Provider: public QPDFObjectHandle::StreamDataProvider |
| 74 | 74 | } |
| 75 | 75 | |
| 76 | 76 | private: |
| 77 | - PointerHolder<Buffer> b; | |
| 77 | + std::shared_ptr<Buffer> b; | |
| 78 | 78 | bool bad_length; |
| 79 | 79 | }; |
| 80 | 80 | |
| ... | ... | @@ -151,7 +151,7 @@ class TokenFilter: public QPDFObjectHandle::TokenFilter |
| 151 | 151 | static std::string |
| 152 | 152 | getPageContents(QPDFObjectHandle page) |
| 153 | 153 | { |
| 154 | - PointerHolder<Buffer> b1 = page.getKey("/Contents").getStreamData(); | |
| 154 | + std::shared_ptr<Buffer> b1 = page.getKey("/Contents").getStreamData(); | |
| 155 | 155 | return std::string( |
| 156 | 156 | reinterpret_cast<char*>(b1->getBuffer()), b1->getSize()) + |
| 157 | 157 | "\0"; |
| ... | ... | @@ -271,14 +271,14 @@ test_0_1(QPDF& pdf, char const* arg2) |
| 271 | 271 | std::cout << "Raw stream data:" << std::endl; |
| 272 | 272 | std::cout.flush(); |
| 273 | 273 | QUtil::binary_stdout(); |
| 274 | - auto out = make_pointer_holder<Pl_StdioFile>("raw", stdout); | |
| 274 | + auto out = std::make_shared<Pl_StdioFile>("raw", stdout); | |
| 275 | 275 | qtest.pipeStreamData(out.get(), 0, qpdf_dl_none); |
| 276 | 276 | |
| 277 | 277 | std::cout << std::endl << "Uncompressed stream data:" << std::endl; |
| 278 | 278 | if (qtest.pipeStreamData(0, 0, qpdf_dl_all)) { |
| 279 | 279 | std::cout.flush(); |
| 280 | 280 | QUtil::binary_stdout(); |
| 281 | - out = make_pointer_holder<Pl_StdioFile>("filtered", stdout); | |
| 281 | + out = std::make_shared<Pl_StdioFile>("filtered", stdout); | |
| 282 | 282 | qtest.pipeStreamData(out.get(), 0, qpdf_dl_all); |
| 283 | 283 | std::cout << std::endl << "End of stream data" << std::endl; |
| 284 | 284 | } else { |
| ... | ... | @@ -316,7 +316,7 @@ test_2(QPDF& pdf, char const* arg2) |
| 316 | 316 | QPDFObjectHandle page = kids.getArrayItem(1); // second page |
| 317 | 317 | QPDFObjectHandle contents = page.getKey("/Contents"); |
| 318 | 318 | QUtil::binary_stdout(); |
| 319 | - auto out = make_pointer_holder<Pl_StdioFile>("filtered", stdout); | |
| 319 | + auto out = std::make_shared<Pl_StdioFile>("filtered", stdout); | |
| 320 | 320 | contents.pipeStreamData(out.get(), 0, qpdf_dl_generalized); |
| 321 | 321 | } |
| 322 | 322 | |
| ... | ... | @@ -329,8 +329,7 @@ test_3(QPDF& pdf, char const* arg2) |
| 329 | 329 | std::cout << "-- stream " << i << " --" << std::endl; |
| 330 | 330 | std::cout.flush(); |
| 331 | 331 | QUtil::binary_stdout(); |
| 332 | - auto out = | |
| 333 | - make_pointer_holder<Pl_StdioFile>("tokenized stream", stdout); | |
| 332 | + auto out = std::make_shared<Pl_StdioFile>("tokenized stream", stdout); | |
| 334 | 333 | stream.pipeStreamData( |
| 335 | 334 | out.get(), qpdf_ef_normalize, qpdf_dl_generalized); |
| 336 | 335 | } |
| ... | ... | @@ -503,7 +502,7 @@ test_8(QPDF& pdf, char const* arg2) |
| 503 | 502 | // This is a bogus way to use StreamDataProvider, but it does |
| 504 | 503 | // adequately test its functionality. |
| 505 | 504 | Provider* provider = new Provider(b); |
| 506 | - auto p = PointerHolder<QPDFObjectHandle::StreamDataProvider>(provider); | |
| 505 | + auto p = std::shared_ptr<QPDFObjectHandle::StreamDataProvider>(provider); | |
| 507 | 506 | qstream.replaceStreamData( |
| 508 | 507 | p, |
| 509 | 508 | QPDFObjectHandle::newName("/FlateDecode"), |
| ... | ... | @@ -532,7 +531,7 @@ test_9(QPDF& pdf, char const* arg2) |
| 532 | 531 | { |
| 533 | 532 | QPDFObjectHandle root = pdf.getRoot(); |
| 534 | 533 | // Explicitly exercise the Buffer version of newStream |
| 535 | - auto buf = make_pointer_holder<Buffer>(20U); | |
| 534 | + auto buf = std::make_shared<Buffer>(20U); | |
| 536 | 535 | unsigned char* bp = buf->getBuffer(); |
| 537 | 536 | memcpy(bp, "data for new stream\n", 20); // no null! |
| 538 | 537 | QPDFObjectHandle qstream = QPDFObjectHandle::newStream(&pdf, buf); |
| ... | ... | @@ -581,8 +580,8 @@ test_11(QPDF& pdf, char const* arg2) |
| 581 | 580 | { |
| 582 | 581 | QPDFObjectHandle root = pdf.getRoot(); |
| 583 | 582 | QPDFObjectHandle qstream = root.getKey("/QStream"); |
| 584 | - PointerHolder<Buffer> b1 = qstream.getStreamData(); | |
| 585 | - PointerHolder<Buffer> b2 = qstream.getRawStreamData(); | |
| 583 | + std::shared_ptr<Buffer> b1 = qstream.getStreamData(); | |
| 584 | + std::shared_ptr<Buffer> b2 = qstream.getRawStreamData(); | |
| 586 | 585 | if ((b1->getSize() == 7) && (memcmp(b1->getBuffer(), "potato\n", 7) == 0)) { |
| 587 | 586 | std::cout << "filtered stream data okay" << std::endl; |
| 588 | 587 | } |
| ... | ... | @@ -815,7 +814,7 @@ test_17(QPDF& pdf, char const* arg2) |
| 815 | 814 | QPDFObjectHandle(pages.at(1)).getKey("/Contents").getObjGen()); |
| 816 | 815 | pdf.removePage(pages.at(0)); |
| 817 | 816 | assert(pages.size() == 2); |
| 818 | - PointerHolder<Buffer> b = | |
| 817 | + std::shared_ptr<Buffer> b = | |
| 819 | 818 | QPDFObjectHandle(pages.at(0)).getKey("/Contents").getStreamData(); |
| 820 | 819 | std::string contents = std::string( |
| 821 | 820 | reinterpret_cast<char const*>(b->getBuffer()), b->getSize()); |
| ... | ... | @@ -1039,7 +1038,7 @@ test_27(QPDF& pdf, char const* arg2) |
| 1039 | 1038 | // also exercise setImmediateCopyFrom. |
| 1040 | 1039 | |
| 1041 | 1040 | // Create a provider. The provider stays in scope. |
| 1042 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> p1; | |
| 1041 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> p1; | |
| 1043 | 1042 | { |
| 1044 | 1043 | // Local scope |
| 1045 | 1044 | Pl_Buffer pl("buffer"); |
| ... | ... | @@ -1065,7 +1064,7 @@ test_27(QPDF& pdf, char const* arg2) |
| 1065 | 1064 | // Make sure some source PDFs are out of scope when we |
| 1066 | 1065 | // write. |
| 1067 | 1066 | |
| 1068 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> p2; | |
| 1067 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> p2; | |
| 1069 | 1068 | // Create another provider. This one will go out of scope |
| 1070 | 1069 | // along with its containing qpdf, which has |
| 1071 | 1070 | // setImmediateCopyFrom(true). |
| ... | ... | @@ -1266,7 +1265,7 @@ test_35(QPDF& pdf, char const* arg2) |
| 1266 | 1265 | { |
| 1267 | 1266 | // Extract attachments |
| 1268 | 1267 | |
| 1269 | - std::map<std::string, PointerHolder<Buffer>> attachments; | |
| 1268 | + std::map<std::string, std::shared_ptr<Buffer>> attachments; | |
| 1270 | 1269 | QPDFObjectHandle root = pdf.getRoot(); |
| 1271 | 1270 | QPDFObjectHandle names = root.getKey("/Names"); |
| 1272 | 1271 | QPDFObjectHandle embeddedFiles = names.getKey("/EmbeddedFiles"); |
| ... | ... | @@ -1282,7 +1281,7 @@ test_35(QPDF& pdf, char const* arg2) |
| 1282 | 1281 | attachments[filename] = stream.getStreamData(); |
| 1283 | 1282 | } |
| 1284 | 1283 | } |
| 1285 | - for (std::map<std::string, PointerHolder<Buffer>>::iterator iter = | |
| 1284 | + for (std::map<std::string, std::shared_ptr<Buffer>>::iterator iter = | |
| 1286 | 1285 | attachments.begin(); |
| 1287 | 1286 | iter != attachments.end(); |
| 1288 | 1287 | ++iter) { |
| ... | ... | @@ -1421,7 +1420,7 @@ test_41(QPDF& pdf, char const* arg2) |
| 1421 | 1420 | iter != pages.end(); |
| 1422 | 1421 | ++iter) { |
| 1423 | 1422 | (*iter).addContentTokenFilter( |
| 1424 | - PointerHolder<QPDFObjectHandle::TokenFilter>(new TokenFilter())); | |
| 1423 | + std::shared_ptr<QPDFObjectHandle::TokenFilter>(new TokenFilter())); | |
| 1425 | 1424 | } |
| 1426 | 1425 | QPDFWriter w(pdf, "a.pdf"); |
| 1427 | 1426 | w.setQDFMode(true); |
| ... | ... | @@ -2468,12 +2467,12 @@ test_68(QPDF& pdf, char const* arg2) |
| 2468 | 2467 | } catch (std::exception& e) { |
| 2469 | 2468 | std::cout << "get unfilterable stream: " << e.what() << std::endl; |
| 2470 | 2469 | } |
| 2471 | - PointerHolder<Buffer> b1 = qstream.getStreamData(qpdf_dl_all); | |
| 2470 | + std::shared_ptr<Buffer> b1 = qstream.getStreamData(qpdf_dl_all); | |
| 2472 | 2471 | if ((b1->getSize() > 10) && |
| 2473 | 2472 | (memcmp(b1->getBuffer(), "wwwwwwwww", 9) == 0)) { |
| 2474 | 2473 | std::cout << "filtered stream data okay" << std::endl; |
| 2475 | 2474 | } |
| 2476 | - PointerHolder<Buffer> b2 = qstream.getRawStreamData(); | |
| 2475 | + std::shared_ptr<Buffer> b2 = qstream.getRawStreamData(); | |
| 2477 | 2476 | if ((b2->getSize() > 10) && |
| 2478 | 2477 | (memcmp( |
| 2479 | 2478 | b2->getBuffer(), "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46", 10) == |
| ... | ... | @@ -2578,11 +2577,11 @@ test_72(QPDF& pdf, char const* arg2) |
| 2578 | 2577 | Pl_Buffer b("buffer"); |
| 2579 | 2578 | if (i == 0) { |
| 2580 | 2579 | fx1.addContentTokenFilter( |
| 2581 | - PointerHolder<QPDFObjectHandle::TokenFilter>( | |
| 2580 | + std::shared_ptr<QPDFObjectHandle::TokenFilter>( | |
| 2582 | 2581 | new TokenFilter())); |
| 2583 | 2582 | } else { |
| 2584 | 2583 | fx1.getObjectHandle().addTokenFilter( |
| 2585 | - PointerHolder<QPDFObjectHandle::TokenFilter>( | |
| 2584 | + std::shared_ptr<QPDFObjectHandle::TokenFilter>( | |
| 2586 | 2585 | new TokenFilter())); |
| 2587 | 2586 | } |
| 2588 | 2587 | fx1.pipeContents(&b); |
| ... | ... | @@ -2999,7 +2998,7 @@ test_83(QPDF& pdf, char const* arg2) |
| 2999 | 2998 | // partial = true, we just use qpdf --job-json-file. |
| 3000 | 2999 | |
| 3001 | 3000 | QPDFJob j; |
| 3002 | - PointerHolder<char> file_buf; | |
| 3001 | + std::shared_ptr<char> file_buf; | |
| 3003 | 3002 | size_t size; |
| 3004 | 3003 | QUtil::read_file_into_memory(arg2, file_buf, size); |
| 3005 | 3004 | try { |
| ... | ... | @@ -3201,7 +3200,7 @@ runtest(int n, char const* filename1, char const* arg2) |
| 3201 | 3200 | } |
| 3202 | 3201 | |
| 3203 | 3202 | QPDF pdf; |
| 3204 | - PointerHolder<char> file_buf; | |
| 3203 | + std::shared_ptr<char> file_buf; | |
| 3205 | 3204 | FILE* filep = 0; |
| 3206 | 3205 | if (n == 0) { |
| 3207 | 3206 | pdf.setAttemptRecovery(false); | ... | ... |
qpdf/test_large_file.cc
| ... | ... | @@ -231,7 +231,7 @@ create_pdf(char const* filename) |
| 231 | 231 | image_dict.replaceKey("/Width", newInteger(width)); |
| 232 | 232 | image_dict.replaceKey("/Height", newInteger(height)); |
| 233 | 233 | ImageProvider* p = new ImageProvider(pageno); |
| 234 | - PointerHolder<QPDFObjectHandle::StreamDataProvider> provider(p); | |
| 234 | + std::shared_ptr<QPDFObjectHandle::StreamDataProvider> provider(p); | |
| 235 | 235 | image.replaceStreamData( |
| 236 | 236 | provider, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); |
| 237 | 237 | |
| ... | ... | @@ -265,7 +265,7 @@ create_pdf(char const* filename) |
| 265 | 265 | static void |
| 266 | 266 | check_page_contents(size_t pageno, QPDFObjectHandle page) |
| 267 | 267 | { |
| 268 | - PointerHolder<Buffer> buf = page.getKey("/Contents").getStreamData(); | |
| 268 | + std::shared_ptr<Buffer> buf = page.getKey("/Contents").getStreamData(); | |
| 269 | 269 | std::string actual_contents = |
| 270 | 270 | std::string(reinterpret_cast<char*>(buf->getBuffer()), buf->getSize()); |
| 271 | 271 | std::string expected_contents = generate_page_contents(pageno); | ... | ... |
qpdf/test_tokenizer.cc
| ... | ... | @@ -25,7 +25,7 @@ usage() |
| 25 | 25 | class Finder: public InputSource::Finder |
| 26 | 26 | { |
| 27 | 27 | public: |
| 28 | - Finder(PointerHolder<InputSource> is, std::string const& str) : | |
| 28 | + Finder(std::shared_ptr<InputSource> is, std::string const& str) : | |
| 29 | 29 | is(is), |
| 30 | 30 | str(str) |
| 31 | 31 | { |
| ... | ... | @@ -36,7 +36,7 @@ class Finder: public InputSource::Finder |
| 36 | 36 | virtual bool check(); |
| 37 | 37 | |
| 38 | 38 | private: |
| 39 | - PointerHolder<InputSource> is; | |
| 39 | + std::shared_ptr<InputSource> is; | |
| 40 | 40 | std::string str; |
| 41 | 41 | }; |
| 42 | 42 | |
| ... | ... | @@ -117,7 +117,7 @@ sanitize(std::string const& value) |
| 117 | 117 | static void |
| 118 | 118 | try_skipping( |
| 119 | 119 | QPDFTokenizer& tokenizer, |
| 120 | - PointerHolder<InputSource> is, | |
| 120 | + std::shared_ptr<InputSource> is, | |
| 121 | 121 | size_t max_len, |
| 122 | 122 | char const* what, |
| 123 | 123 | Finder& f) |
| ... | ... | @@ -132,7 +132,7 @@ try_skipping( |
| 132 | 132 | |
| 133 | 133 | static void |
| 134 | 134 | dump_tokens( |
| 135 | - PointerHolder<InputSource> is, | |
| 135 | + std::shared_ptr<InputSource> is, | |
| 136 | 136 | std::string const& label, |
| 137 | 137 | size_t max_len, |
| 138 | 138 | bool include_ignorable, |
| ... | ... | @@ -191,12 +191,12 @@ dump_tokens( |
| 191 | 191 | static void |
| 192 | 192 | process(char const* filename, bool include_ignorable, size_t max_len) |
| 193 | 193 | { |
| 194 | - PointerHolder<InputSource> is; | |
| 194 | + std::shared_ptr<InputSource> is; | |
| 195 | 195 | |
| 196 | 196 | // Tokenize file, skipping streams |
| 197 | 197 | FileInputSource* fis = new FileInputSource(); |
| 198 | 198 | fis->setFilename(filename); |
| 199 | - is = PointerHolder<InputSource>(fis); | |
| 199 | + is = std::shared_ptr<InputSource>(fis); | |
| 200 | 200 | dump_tokens(is, "FILE", max_len, include_ignorable, true, false); |
| 201 | 201 | |
| 202 | 202 | // Tokenize content streams, skipping inline images |
| ... | ... | @@ -214,7 +214,7 @@ process(char const* filename, bool include_ignorable, size_t max_len) |
| 214 | 214 | auto content_data = plb.getBufferSharedPointer(); |
| 215 | 215 | BufferInputSource* bis = |
| 216 | 216 | new BufferInputSource("content data", content_data.get()); |
| 217 | - is = PointerHolder<InputSource>(bis); | |
| 217 | + is = std::shared_ptr<InputSource>(bis); | |
| 218 | 218 | dump_tokens( |
| 219 | 219 | is, |
| 220 | 220 | "PAGE " + QUtil::int_to_string(pageno), |
| ... | ... | @@ -231,11 +231,11 @@ process(char const* filename, bool include_ignorable, size_t max_len) |
| 231 | 231 | ++iter) { |
| 232 | 232 | if ((*iter).isStream() && (*iter).getDict().getKey("/Type").isName() && |
| 233 | 233 | (*iter).getDict().getKey("/Type").getName() == "/ObjStm") { |
| 234 | - PointerHolder<Buffer> b = | |
| 234 | + std::shared_ptr<Buffer> b = | |
| 235 | 235 | (*iter).getStreamData(qpdf_dl_specialized); |
| 236 | 236 | BufferInputSource* bis = |
| 237 | 237 | new BufferInputSource("object stream data", b.get()); |
| 238 | - is = PointerHolder<InputSource>(bis); | |
| 238 | + is = std::shared_ptr<InputSource>(bis); | |
| 239 | 239 | dump_tokens( |
| 240 | 240 | is, |
| 241 | 241 | "OBJECT STREAM " + QUtil::int_to_string((*iter).getObjectID()), | ... | ... |
zlib-flate/zlib-flate.cc
| ... | ... | @@ -59,8 +59,8 @@ main(int argc, char* argv[]) |
| 59 | 59 | |
| 60 | 60 | QUtil::binary_stdout(); |
| 61 | 61 | QUtil::binary_stdin(); |
| 62 | - auto out = make_pointer_holder<Pl_StdioFile>("stdout", stdout); | |
| 63 | - auto flate = make_pointer_holder<Pl_Flate>("flate", out.get(), action); | |
| 62 | + auto out = std::make_shared<Pl_StdioFile>("stdout", stdout); | |
| 63 | + auto flate = std::make_shared<Pl_Flate>("flate", out.get(), action); | |
| 64 | 64 | bool warn = false; |
| 65 | 65 | flate->setWarnCallback([&warn](char const* msg, int code) { |
| 66 | 66 | warn = true; | ... | ... |