diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDF.cc | 1 | ||||
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 31 |
2 files changed, 32 insertions, 0 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 9593c44f..98ad2267 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -21,6 +21,7 @@ #include <qpdf/Pl_OStream.hh> #include <qpdf/QPDFExc.hh> #include <qpdf/QPDFLogger.hh> +#include <qpdf/QPDFObject.hh> #include <qpdf/QPDF_Array.hh> #include <qpdf/QPDF_Dictionary.hh> #include <qpdf/QPDF_Null.hh> diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index cb1e9e45..a1019955 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -7,6 +7,7 @@ #include <qpdf/QPDFExc.hh> #include <qpdf/QPDFLogger.hh> #include <qpdf/QPDFMatrix.hh> +#include <qpdf/QPDFObject.hh> #include <qpdf/QPDFPageObjectHelper.hh> #include <qpdf/QPDFParser.hh> #include <qpdf/QPDF_Array.hh> @@ -2770,6 +2771,36 @@ QPDFObjectHandle::QPDFArrayItems::end() return iterator(oh, false); } +QPDFObjGen +QPDFObjectHandle::getObjGen() const +{ + return isInitialized() ? obj->getObjGen() : QPDFObjGen(); +} + +// Indirect object accessors +QPDF* +QPDFObjectHandle::getOwningQPDF( + bool allow_nullptr, std::string const& error_msg) const +{ + // Will be null for direct objects + auto result = isInitialized() ? this->obj->getQPDF() : nullptr; + if (!allow_nullptr && (result == nullptr)) { + throw std::runtime_error( + error_msg == "" ? "attempt to use a null qpdf object" : error_msg); + } + return result; +} + +void +QPDFObjectHandle::setParsedOffset(qpdf_offset_t offset) +{ + // This is called during parsing on newly created direct objects, + // so we can't call dereference() here. + if (isInitialized()) { + this->obj->setParsedOffset(offset); + } +} + QPDFObjectHandle operator""_qpdf(char const* v, size_t len) { return QPDFObjectHandle::parse( |