From 388719d42ef290d025fb10c9e03e40b98d2b728c Mon Sep 17 00:00:00 2001 From: m-holger Date: Mon, 29 Sep 2025 11:39:37 +0100 Subject: [PATCH] Add `Buffer::view()` method and update unit tests --- include/qpdf/Buffer.hh | 5 +++++ libqpdf/Buffer.cc | 9 +++++++++ libtests/buffer.cc | 4 +++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/qpdf/Buffer.hh b/include/qpdf/Buffer.hh index e3f6841..06e4706 100644 --- a/include/qpdf/Buffer.hh +++ b/include/qpdf/Buffer.hh @@ -25,6 +25,7 @@ #include #include #include +#include class Buffer { @@ -71,6 +72,10 @@ class Buffer QPDF_DLL std::string move(); + // Return a string_view to the data. + QPDF_DLL + std::string_view view() const; + private: class Members; diff --git a/libqpdf/Buffer.cc b/libqpdf/Buffer.cc index 14f64f2..14d6b8e 100644 --- a/libqpdf/Buffer.cc +++ b/libqpdf/Buffer.cc @@ -108,3 +108,12 @@ Buffer::move() } return {m->buf, m->size}; } + +std::string_view +Buffer::view() const +{ + if (!m->buf) { + return {}; + } + return {m->buf, m->size}; +} diff --git a/libtests/buffer.cc b/libtests/buffer.cc index 9792713..29e7428 100644 --- a/libtests/buffer.cc +++ b/libtests/buffer.cc @@ -35,11 +35,13 @@ main() assert(bc2p[0] == 'R'); assert(bc2p[1] == 'W'); - // Test move method + // Test move and view method + assert(bc1.view() == "RW"); auto s1 = bc1.move(); assert(bc1.getBuffer() == nullptr); assert(bc1.getSize() == 0); assert(s1 == "RW"); + assert(bc1.view().empty()); // Test Buffer(std:string&&) Buffer bc3("QW"); -- libgit2 0.21.4