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