Commit e10932f3585c2add9ea661480065963076bca348

Authored by m-holger
1 parent 2dc837f4

Refactor `Streams` class: move implementation to `Doc::Objects::Streams`, improv…

…e encapsulation, and streamline stream data handling.
libqpdf/QPDF_Stream.cc
@@ -25,32 +25,7 @@ @@ -25,32 +25,7 @@
25 using namespace std::literals; 25 using namespace std::literals;
26 using namespace qpdf; 26 using namespace qpdf;
27 27
28 -// Pipe class is restricted to QPDF_Stream.  
29 -class QPDF::Doc::Streams  
30 -{  
31 - public:  
32 - static bool  
33 - pipeStreamData(  
34 - QPDF* qpdf,  
35 - QPDFObjGen og,  
36 - qpdf_offset_t offset,  
37 - size_t length,  
38 - QPDFObjectHandle dict,  
39 - bool is_root_metadata,  
40 - Pipeline* pipeline,  
41 - bool suppress_warnings,  
42 - bool will_retry)  
43 - {  
44 - return qpdf->pipeStreamData(  
45 - og, offset, length, dict, is_root_metadata, pipeline, suppress_warnings, will_retry);  
46 - }  
47 -  
48 - static void  
49 - copyStreamData(QPDF* qpdf, QPDFObjectHandle const& dest, QPDFObjectHandle const& src)  
50 - {  
51 - qpdf->copyStreamData(dest, src);  
52 - }  
53 -}; 28 +using Streams = QPDF::Doc::Objects::Streams;
54 29
55 namespace 30 namespace
56 { 31 {
@@ -217,7 +192,7 @@ Stream::copy() const @@ -217,7 +192,7 @@ Stream::copy() const
217 { 192 {
218 Stream result = qpdf()->newStream(); 193 Stream result = qpdf()->newStream();
219 result.stream()->stream_dict = getDict().copy(); 194 result.stream()->stream_dict = getDict().copy();
220 - QPDF::Doc::Streams::copyStreamData(qpdf(), result, *this); 195 + Streams::copyStreamData(qpdf(), result, *this);
221 return result; 196 return result;
222 } 197 }
223 198
@@ -593,7 +568,7 @@ Stream::pipeStreamData( @@ -593,7 +568,7 @@ Stream::pipeStreamData(
593 if (offset() == 0) { 568 if (offset() == 0) {
594 throw std::logic_error("pipeStreamData called for stream with no data"); 569 throw std::logic_error("pipeStreamData called for stream with no data");
595 } 570 }
596 - if (!QPDF::Doc::Streams::pipeStreamData( 571 + if (!Streams::pipeStreamData(
597 qpdf(), 572 qpdf(),
598 id_gen(), 573 id_gen(),
599 offset(), 574 offset(),
libqpdf/qpdf/QPDF_private.hh
@@ -340,8 +340,6 @@ class QPDF::Doc @@ -340,8 +340,6 @@ class QPDF::Doc
340 class JobSetter; 340 class JobSetter;
341 class ParseGuard; 341 class ParseGuard;
342 class Resolver; 342 class Resolver;
343 - class StreamCopier;  
344 - class Streams;  
345 class Writer; 343 class Writer;
346 344
347 class Encryption 345 class Encryption
@@ -620,6 +618,39 @@ class QPDF::Doc @@ -620,6 +618,39 @@ class QPDF::Doc
620 std::map<unsigned long long, Copier> copiers; 618 std::map<unsigned long long, Copier> copiers;
621 }; // class QPDF::Doc::Objects::Foreign 619 }; // class QPDF::Doc::Objects::Foreign
622 620
  621 + class Streams
  622 + {
  623 + public:
  624 + static bool
  625 + pipeStreamData(
  626 + QPDF* qpdf,
  627 + QPDFObjGen og,
  628 + qpdf_offset_t offset,
  629 + size_t length,
  630 + QPDFObjectHandle dict,
  631 + bool is_root_metadata,
  632 + Pipeline* pipeline,
  633 + bool suppress_warnings,
  634 + bool will_retry)
  635 + {
  636 + return qpdf->pipeStreamData(
  637 + og,
  638 + offset,
  639 + length,
  640 + dict,
  641 + is_root_metadata,
  642 + pipeline,
  643 + suppress_warnings,
  644 + will_retry);
  645 + }
  646 +
  647 + static void
  648 + copyStreamData(QPDF* qpdf, QPDFObjectHandle const& dest, QPDFObjectHandle const& src)
  649 + {
  650 + qpdf->copyStreamData(dest, src);
  651 + }
  652 + };
  653 +
623 public: 654 public:
624 Objects() = delete; 655 Objects() = delete;
625 Objects(Objects const&) = delete; 656 Objects(Objects const&) = delete;