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 25 using namespace std::literals;
26 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 30 namespace
56 31 {
... ... @@ -217,7 +192,7 @@ Stream::copy() const
217 192 {
218 193 Stream result = qpdf()->newStream();
219 194 result.stream()->stream_dict = getDict().copy();
220   - QPDF::Doc::Streams::copyStreamData(qpdf(), result, *this);
  195 + Streams::copyStreamData(qpdf(), result, *this);
221 196 return result;
222 197 }
223 198  
... ... @@ -593,7 +568,7 @@ Stream::pipeStreamData(
593 568 if (offset() == 0) {
594 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 572 qpdf(),
598 573 id_gen(),
599 574 offset(),
... ...
libqpdf/qpdf/QPDF_private.hh
... ... @@ -340,8 +340,6 @@ class QPDF::Doc
340 340 class JobSetter;
341 341 class ParseGuard;
342 342 class Resolver;
343   - class StreamCopier;
344   - class Streams;
345 343 class Writer;
346 344  
347 345 class Encryption
... ... @@ -620,6 +618,39 @@ class QPDF::Doc
620 618 std::map<unsigned long long, Copier> copiers;
621 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 654 public:
624 655 Objects() = delete;
625 656 Objects(Objects const&) = delete;
... ...