Commit 388719d42ef290d025fb10c9e03e40b98d2b728c
1 parent
6df06185
Add `Buffer::view()` method and update unit tests
Implement `Buffer::view()` to provide a read-only view of the buffer content. Update unit tests to validate `view()` behavior alongside `move()`. Include necessary `#include <string_view>` for functionality.
Showing
3 changed files
with
17 additions
and
1 deletions
include/qpdf/Buffer.hh
| @@ -25,6 +25,7 @@ | @@ -25,6 +25,7 @@ | ||
| 25 | #include <cstddef> | 25 | #include <cstddef> |
| 26 | #include <memory> | 26 | #include <memory> |
| 27 | #include <string> | 27 | #include <string> |
| 28 | +#include <string_view> | ||
| 28 | 29 | ||
| 29 | class Buffer | 30 | class Buffer |
| 30 | { | 31 | { |
| @@ -71,6 +72,10 @@ class Buffer | @@ -71,6 +72,10 @@ class Buffer | ||
| 71 | QPDF_DLL | 72 | QPDF_DLL |
| 72 | std::string move(); | 73 | std::string move(); |
| 73 | 74 | ||
| 75 | + // Return a string_view to the data. | ||
| 76 | + QPDF_DLL | ||
| 77 | + std::string_view view() const; | ||
| 78 | + | ||
| 74 | private: | 79 | private: |
| 75 | class Members; | 80 | class Members; |
| 76 | 81 |
libqpdf/Buffer.cc
| @@ -108,3 +108,12 @@ Buffer::move() | @@ -108,3 +108,12 @@ Buffer::move() | ||
| 108 | } | 108 | } |
| 109 | return {m->buf, m->size}; | 109 | return {m->buf, m->size}; |
| 110 | } | 110 | } |
| 111 | + | ||
| 112 | +std::string_view | ||
| 113 | +Buffer::view() const | ||
| 114 | +{ | ||
| 115 | + if (!m->buf) { | ||
| 116 | + return {}; | ||
| 117 | + } | ||
| 118 | + return {m->buf, m->size}; | ||
| 119 | +} |
libtests/buffer.cc
| @@ -35,11 +35,13 @@ main() | @@ -35,11 +35,13 @@ main() | ||
| 35 | assert(bc2p[0] == 'R'); | 35 | assert(bc2p[0] == 'R'); |
| 36 | assert(bc2p[1] == 'W'); | 36 | assert(bc2p[1] == 'W'); |
| 37 | 37 | ||
| 38 | - // Test move method | 38 | + // Test move and view method |
| 39 | + assert(bc1.view() == "RW"); | ||
| 39 | auto s1 = bc1.move(); | 40 | auto s1 = bc1.move(); |
| 40 | assert(bc1.getBuffer() == nullptr); | 41 | assert(bc1.getBuffer() == nullptr); |
| 41 | assert(bc1.getSize() == 0); | 42 | assert(bc1.getSize() == 0); |
| 42 | assert(s1 == "RW"); | 43 | assert(s1 == "RW"); |
| 44 | + assert(bc1.view().empty()); | ||
| 43 | 45 | ||
| 44 | // Test Buffer(std:string&&) | 46 | // Test Buffer(std:string&&) |
| 45 | Buffer bc3("QW"); | 47 | Buffer bc3("QW"); |