Commit 8768387c75ea149c07e8c95194908251f6b52793

Authored by m-holger
1 parent 61804943

Add new private API InputSource read methods

Improve support for reading into std::string objects.
include/qpdf/InputSource.hh
... ... @@ -76,6 +76,8 @@ class QPDF_DLL_CLASS InputSource
76 76 virtual void unreadCh(char ch) = 0;
77 77  
78 78 // The following methods are for internal use by qpdf only.
  79 + inline size_t read(std::string& str, size_t count, qpdf_offset_t at = -1);
  80 + inline std::string read(size_t count, qpdf_offset_t at = -1);
79 81 inline qpdf_offset_t fastTell();
80 82 inline bool fastRead(char&);
81 83 inline void fastUnread(bool);
... ...
libqpdf/qpdf/InputSource_private.hh
... ... @@ -3,6 +3,25 @@
3 3  
4 4 #include <qpdf/InputSource.hh>
5 5  
  6 +inline size_t
  7 +InputSource::read(std::string& str, size_t count, qpdf_offset_t at)
  8 +{
  9 + if (at >= 0) {
  10 + seek(at, SEEK_SET);
  11 + }
  12 + str.resize(count);
  13 + str.resize(read(str.data(), count));
  14 + return str.size();
  15 +}
  16 +
  17 +inline std::string
  18 +InputSource::read(size_t count, qpdf_offset_t at)
  19 +{
  20 + std::string result(count, '\0');
  21 + (void)read(result, count, at);
  22 + return result;
  23 +}
  24 +
6 25 inline void
7 26 InputSource::loadBuffer()
8 27 {
... ...