aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/qpdf/OffsetInputSource.hh
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/qpdf/OffsetInputSource.hh')
-rw-r--r--libqpdf/qpdf/OffsetInputSource.hh29
1 files changed, 29 insertions, 0 deletions
diff --git a/libqpdf/qpdf/OffsetInputSource.hh b/libqpdf/qpdf/OffsetInputSource.hh
new file mode 100644
index 00000000..aedc574a
--- /dev/null
+++ b/libqpdf/qpdf/OffsetInputSource.hh
@@ -0,0 +1,29 @@
+#ifndef __QPDF_OFFSETINPUTSOURCE_HH__
+#define __QPDF_OFFSETINPUTSOURCE_HH__
+
+// This class implements an InputSource that proxies for an underlying
+// input source but offset a specific number of bytes.
+
+#include <qpdf/InputSource.hh>
+#include <qpdf/PointerHolder.hh>
+
+class OffsetInputSource: public InputSource
+{
+ public:
+ OffsetInputSource(PointerHolder<InputSource>, qpdf_offset_t global_offset);
+ virtual ~OffsetInputSource();
+
+ virtual qpdf_offset_t findAndSkipNextEOL();
+ virtual std::string const& getName() const;
+ virtual qpdf_offset_t tell();
+ virtual void seek(qpdf_offset_t offset, int whence);
+ virtual void rewind();
+ virtual size_t read(char* buffer, size_t length);
+ virtual void unreadCh(char ch);
+
+ private:
+ PointerHolder<InputSource> proxied;
+ qpdf_offset_t global_offset;
+};
+
+#endif // __QPDF_OFFSETINPUTSOURCE_HH__