mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 02:49:00 +00:00
Add getBufferSharedPointer() to Pl_Buffer and QPDFWriter
This commit is contained in:
parent
3e98fe46a2
commit
cfaae47dc6
@ -1,5 +1,9 @@
|
||||
2022-02-06 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* Pl_Buffer and QPDFWriter: add getBufferSharedPointer(), which
|
||||
turns a PointerHolder<Buffer> but will return a
|
||||
std::shared_ptr<Buffer> in qpdf 11.
|
||||
|
||||
* From m-holger: add getKeyIfDict(), which calls getKey for
|
||||
dictionaries and returns null if called on null. This is for
|
||||
easier access to optional, lower-level dictionaries.
|
||||
|
2
TODO
2
TODO
@ -420,6 +420,8 @@ auto x = std::make_unique<T[]>(5)
|
||||
|
||||
PointerHolder in public API:
|
||||
|
||||
PointerHolder<Buffer> Pl_Buffer::getBufferSharedPointer();
|
||||
PointerHolder<Buffer> QPDFWriter::getBufferSharedPointer();
|
||||
QUtil::read_file_into_memory(
|
||||
char const*, PointerHolder<char>&, unsigned long&)
|
||||
QPDFObjectHandle::addContentTokenFilter(
|
||||
|
@ -51,10 +51,14 @@ class Pl_Buffer: public Pipeline
|
||||
|
||||
// Each call to getBuffer() resets this object -- see notes above.
|
||||
// The caller is responsible for deleting the returned Buffer
|
||||
// object.
|
||||
// object. See also getBufferSharedPointer() and getMallocBuffer().
|
||||
QPDF_DLL
|
||||
Buffer* getBuffer();
|
||||
|
||||
// Same as getBuffer but wraps the result in a shared pointer.
|
||||
QPDF_DLL
|
||||
PointerHolder<Buffer> getBufferSharedPointer();
|
||||
|
||||
// getMallocBuffer behaves in the same was as getBuffer except the
|
||||
// buffer is allocated with malloc(), making it suitable for use
|
||||
// when calling from other languages. If there is no data, *buf is
|
||||
|
@ -118,13 +118,18 @@ class QPDFWriter
|
||||
QPDF_DLL
|
||||
void setOutputMemory();
|
||||
|
||||
// Return the buffer object containing the PDF file. If
|
||||
// Return the buffer object containing the PDF file. If
|
||||
// setOutputMemory() has been called, this method may be called
|
||||
// exactly one time after write() has returned. The caller is
|
||||
// responsible for deleting the buffer when done.
|
||||
// exactly one time after write() has returned. The caller is
|
||||
// responsible for deleting the buffer when done. See also
|
||||
// getBufferSharedPointer().
|
||||
QPDF_DLL
|
||||
Buffer* getBuffer();
|
||||
|
||||
// Return getBuffer() in a shared pointer.
|
||||
QPDF_DLL
|
||||
PointerHolder<Buffer> getBufferSharedPointer();
|
||||
|
||||
// Supply your own pipeline object. Output will be written to
|
||||
// this pipeline, and QPDFWriter will call finish() on the
|
||||
// pipeline. It is the caller's responsibility to manage the
|
||||
|
@ -79,10 +79,16 @@ Pl_Buffer::getBuffer()
|
||||
unsigned char* p = b->getBuffer();
|
||||
memcpy(p, this->m->data->getBuffer(), this->m->total_size);
|
||||
}
|
||||
this->m = new Members();
|
||||
this->m = PointerHolder<Members>(new Members());
|
||||
return b;
|
||||
}
|
||||
|
||||
PointerHolder<Buffer>
|
||||
Pl_Buffer::getBufferSharedPointer()
|
||||
{
|
||||
return PointerHolder<Buffer>(getBuffer());
|
||||
}
|
||||
|
||||
void
|
||||
Pl_Buffer::getMallocBuffer(unsigned char **buf, size_t* len)
|
||||
{
|
||||
|
@ -157,6 +157,12 @@ QPDFWriter::getBuffer()
|
||||
return result;
|
||||
}
|
||||
|
||||
PointerHolder<Buffer>
|
||||
QPDFWriter::getBufferSharedPointer()
|
||||
{
|
||||
return PointerHolder<Buffer>(getBuffer());
|
||||
}
|
||||
|
||||
void
|
||||
QPDFWriter::setOutputPipeline(Pipeline* p)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user