aboutsummaryrefslogtreecommitdiffstats
path: root/include/qpdf/Pl_StdioFile.hh
diff options
context:
space:
mode:
Diffstat (limited to 'include/qpdf/Pl_StdioFile.hh')
-rw-r--r--include/qpdf/Pl_StdioFile.hh49
1 files changed, 49 insertions, 0 deletions
diff --git a/include/qpdf/Pl_StdioFile.hh b/include/qpdf/Pl_StdioFile.hh
new file mode 100644
index 00000000..d74ded3a
--- /dev/null
+++ b/include/qpdf/Pl_StdioFile.hh
@@ -0,0 +1,49 @@
+// Copyright (c) 2005-2008 Jay Berkenbilt
+//
+// This file is part of qpdf. This software may be distributed under
+// the terms of version 2 of the Artistic License which may be found
+// in the source distribution. It is provided "as is" without express
+// or implied warranty.
+
+// End-of-line pipeline that simply writes its data to a stdio FILE* object.
+
+#ifndef __PL_STDIOFILE_HH__
+#define __PL_STDIOFILE_HH__
+
+#include <qpdf/Pipeline.hh>
+
+#include <stdio.h>
+
+//
+// This pipeline is reusable.
+//
+
+class Pl_StdioFile: public Pipeline
+{
+ public:
+ class Exception: public Pipeline::Exception
+ {
+ public:
+ Exception(std::string const& message) :
+ Pipeline::Exception(message)
+ {
+ }
+
+ virtual ~Exception() throw ()
+ {
+ }
+ };
+
+ // f is externally maintained; this class just writes to and
+ // flushes it. It does not close it.
+ Pl_StdioFile(char const* identifier, FILE* f);
+ virtual ~Pl_StdioFile();
+
+ virtual void write(unsigned char* buf, int len);
+ virtual void finish();
+
+ private:
+ FILE* file;
+};
+
+#endif // __PL_STDIOFILE_HH__