summaryrefslogtreecommitdiffstats
path: root/include/qpdf/Pl_Buffer.hh
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2008-04-29 14:55:25 +0200
committerJay Berkenbilt <ejb@ql.org>2008-04-29 14:55:25 +0200
commit9a0b88bf7777c153dc46ace22db74ef24d51583a (patch)
treef567ac1cf2bf5071a611eb49323a935b6ac938ff /include/qpdf/Pl_Buffer.hh
downloadqpdf-9a0b88bf7777c153dc46ace22db74ef24d51583a.tar.zst
update release date to actual daterelease-qpdf-2.0
git-svn-id: svn+q:///qpdf/trunk@599 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'include/qpdf/Pl_Buffer.hh')
-rw-r--r--include/qpdf/Pl_Buffer.hh46
1 files changed, 46 insertions, 0 deletions
diff --git a/include/qpdf/Pl_Buffer.hh b/include/qpdf/Pl_Buffer.hh
new file mode 100644
index 00000000..e78b5a17
--- /dev/null
+++ b/include/qpdf/Pl_Buffer.hh
@@ -0,0 +1,46 @@
+// 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.
+
+#ifndef __PL_BUFFER_HH__
+#define __PL_BUFFER_HH__
+
+// This pipeline accumulates the data passed to it into a memory
+// buffer. Each subsequent use of this buffer appends to the data
+// accumulated so far. getBuffer() may be called only after calling
+// finish() and before calling any subsequent write(). At that point,
+// a dynamically allocated Buffer object is returned and the internal
+// buffer is reset. The caller is responseible for deleting the
+// returned Buffer.
+//
+// For this pipeline, "next" may be null. If a next pointer is
+// provided, this pipeline will also pass the data through to it.
+
+#include <qpdf/Pipeline.hh>
+#include <qpdf/PointerHolder.hh>
+#include <qpdf/Buffer.hh>
+#include <list>
+
+class Pl_Buffer: public Pipeline
+{
+ public:
+ Pl_Buffer(char const* identifier, Pipeline* next = 0);
+ virtual ~Pl_Buffer();
+ virtual void write(unsigned char*, int);
+ virtual void finish();
+
+ // Each call to getBuffer() resets this object -- see notes above.
+ // The caller is responsible for deleting the returned Buffer
+ // object.
+ Buffer* getBuffer();
+
+ private:
+ bool ready;
+ std::list<PointerHolder<Buffer> > data;
+ size_t total_size;
+};
+
+#endif // __PL_BUFFER_HH__