From 431bd666c0504af0c8a016a96a73b7efbf9737c9 Mon Sep 17 00:00:00 2001 From: m-holger Date: Tue, 2 Aug 2022 21:35:04 +0100 Subject: Split QPDFObject into QPDFObject and QPDFValue --- libqpdf/QPDFObject.cc | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) (limited to 'libqpdf/QPDFObject.cc') diff --git a/libqpdf/QPDFObject.cc b/libqpdf/QPDFObject.cc index 382dd6c6..8df2b480 100644 --- a/libqpdf/QPDFObject.cc +++ b/libqpdf/QPDFObject.cc @@ -1,47 +1 @@ #include - -QPDFObject::QPDFObject() : - owning_qpdf(nullptr), - parsed_offset(-1) -{ -} - -std::shared_ptr -QPDFObject::do_create(QPDFObject* object) -{ - std::shared_ptr obj(object); - return obj; -} - -void -QPDFObject::setDescription(QPDF* qpdf, std::string const& description) -{ - this->owning_qpdf = qpdf; - this->object_description = description; -} - -bool -QPDFObject::getDescription(QPDF*& qpdf, std::string& description) -{ - qpdf = this->owning_qpdf; - description = this->object_description; - return this->owning_qpdf != nullptr; -} - -bool -QPDFObject::hasDescription() -{ - return this->owning_qpdf != nullptr; -} - -void -QPDFObject::setParsedOffset(qpdf_offset_t offset) -{ - this->parsed_offset = offset; -} - -qpdf_offset_t -QPDFObject::getParsedOffset() -{ - return this->parsed_offset; -} -- cgit v1.2.3-54-g00ecf From 4a8515912c80e8d98c3c1a42eec4bdf7b6bbd8e1 Mon Sep 17 00:00:00 2001 From: m-holger Date: Sun, 14 Aug 2022 10:50:30 +0100 Subject: Add method QPDFObject::resolve --- include/qpdf/QPDF.hh | 2 +- include/qpdf/QPDFObject.hh | 11 ++++++++++- libqpdf/QPDFObject.cc | 9 +++++++++ libqpdf/QPDFObjectHandle.cc | 4 +--- 4 files changed, 21 insertions(+), 5 deletions(-) (limited to 'libqpdf/QPDFObject.cc') diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh index 42097425..bcd85cd2 100644 --- a/include/qpdf/QPDF.hh +++ b/include/qpdf/QPDF.hh @@ -843,7 +843,7 @@ class QPDF // it can resolve indirect references. class Resolver { - friend class QPDFObjectHandle; + friend class QPDFObject; private: static void diff --git a/include/qpdf/QPDFObject.hh b/include/qpdf/QPDFObject.hh index 7bb7c6e1..751a5736 100644 --- a/include/qpdf/QPDFObject.hh +++ b/include/qpdf/QPDFObject.hh @@ -153,10 +153,19 @@ class QPDFObject } bool - isUnresolved() + isUnresolved() const { return value->type_code == ::ot_unresolved; } + void + resolve() + { + if (isUnresolved()) { + doResolve(); + } + } + void doResolve(); + template T* as() diff --git a/libqpdf/QPDFObject.cc b/libqpdf/QPDFObject.cc index 8df2b480..8b538021 100644 --- a/libqpdf/QPDFObject.cc +++ b/libqpdf/QPDFObject.cc @@ -1 +1,10 @@ #include + +#include + +void +QPDFObject::doResolve() +{ + auto og = value->og; + QPDF::Resolver::resolve(value->qpdf, og); +} diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 8a38352f..c55506a5 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -2595,9 +2595,7 @@ QPDFObjectHandle::dereference() if (!isInitialized()) { return false; } - if (this->obj->isUnresolved()) { - QPDF::Resolver::resolve(this->qpdf, getObjGen()); - } + this->obj->resolve(); return true; } -- cgit v1.2.3-54-g00ecf