From e10932f3585c2add9ea661480065963076bca348 Mon Sep 17 00:00:00 2001 From: m-holger Date: Tue, 7 Oct 2025 19:18:12 +0100 Subject: [PATCH] Refactor `Streams` class: move implementation to `Doc::Objects::Streams`, improve encapsulation, and streamline stream data handling. --- libqpdf/QPDF_Stream.cc | 31 +++---------------------------- libqpdf/qpdf/QPDF_private.hh | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 99332ea..11400d2 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -25,32 +25,7 @@ using namespace std::literals; using namespace qpdf; -// Pipe class is restricted to QPDF_Stream. -class QPDF::Doc::Streams -{ - public: - static bool - pipeStreamData( - QPDF* qpdf, - QPDFObjGen og, - qpdf_offset_t offset, - size_t length, - QPDFObjectHandle dict, - bool is_root_metadata, - Pipeline* pipeline, - bool suppress_warnings, - bool will_retry) - { - return qpdf->pipeStreamData( - og, offset, length, dict, is_root_metadata, pipeline, suppress_warnings, will_retry); - } - - static void - copyStreamData(QPDF* qpdf, QPDFObjectHandle const& dest, QPDFObjectHandle const& src) - { - qpdf->copyStreamData(dest, src); - } -}; +using Streams = QPDF::Doc::Objects::Streams; namespace { @@ -217,7 +192,7 @@ Stream::copy() const { Stream result = qpdf()->newStream(); result.stream()->stream_dict = getDict().copy(); - QPDF::Doc::Streams::copyStreamData(qpdf(), result, *this); + Streams::copyStreamData(qpdf(), result, *this); return result; } @@ -593,7 +568,7 @@ Stream::pipeStreamData( if (offset() == 0) { throw std::logic_error("pipeStreamData called for stream with no data"); } - if (!QPDF::Doc::Streams::pipeStreamData( + if (!Streams::pipeStreamData( qpdf(), id_gen(), offset(), diff --git a/libqpdf/qpdf/QPDF_private.hh b/libqpdf/qpdf/QPDF_private.hh index 8832cbd..465deed 100644 --- a/libqpdf/qpdf/QPDF_private.hh +++ b/libqpdf/qpdf/QPDF_private.hh @@ -340,8 +340,6 @@ class QPDF::Doc class JobSetter; class ParseGuard; class Resolver; - class StreamCopier; - class Streams; class Writer; class Encryption @@ -620,6 +618,39 @@ class QPDF::Doc std::map copiers; }; // class QPDF::Doc::Objects::Foreign + class Streams + { + public: + static bool + pipeStreamData( + QPDF* qpdf, + QPDFObjGen og, + qpdf_offset_t offset, + size_t length, + QPDFObjectHandle dict, + bool is_root_metadata, + Pipeline* pipeline, + bool suppress_warnings, + bool will_retry) + { + return qpdf->pipeStreamData( + og, + offset, + length, + dict, + is_root_metadata, + pipeline, + suppress_warnings, + will_retry); + } + + static void + copyStreamData(QPDF* qpdf, QPDFObjectHandle const& dest, QPDFObjectHandle const& src) + { + qpdf->copyStreamData(dest, src); + } + }; + public: Objects() = delete; Objects(Objects const&) = delete; -- libgit2 0.21.4