1 #ifndef QPDF_OFFSETINPUTSOURCE_HH 2 #define QPDF_OFFSETINPUTSOURCE_HH 3 4 // This class implements an InputSource that proxies for an underlying 5 // input source but offset a specific number of bytes. 6 7 #include <qpdf/InputSource.hh> 8 #include <qpdf/PointerHolder.hh> 9 10 class OffsetInputSource: public InputSource 11 { 12 public: 13 OffsetInputSource(PointerHolder<InputSource>, qpdf_offset_t global_offset); 14 virtual ~OffsetInputSource(); 15 16 virtual qpdf_offset_t findAndSkipNextEOL(); 17 virtual std::string const& getName() const; 18 virtual qpdf_offset_t tell(); 19 virtual void seek(qpdf_offset_t offset, int whence); 20 virtual void rewind(); 21 virtual size_t read(char* buffer, size_t length); 22 virtual void unreadCh(char ch); 23 24 private: 25 PointerHolder<InputSource> proxied; 26 qpdf_offset_t global_offset; 27 qpdf_offset_t max_safe_offset; 28 }; 29 30 #endif // QPDF_OFFSETINPUTSOURCE_HH 31