Commit 4a8515912c80e8d98c3c1a42eec4bdf7b6bbd8e1

Authored by m-holger
1 parent 56e9bcab

Add method QPDFObject::resolve

include/qpdf/QPDF.hh
@@ -843,7 +843,7 @@ class QPDF @@ -843,7 +843,7 @@ class QPDF
843 // it can resolve indirect references. 843 // it can resolve indirect references.
844 class Resolver 844 class Resolver
845 { 845 {
846 - friend class QPDFObjectHandle; 846 + friend class QPDFObject;
847 847
848 private: 848 private:
849 static void 849 static void
include/qpdf/QPDFObject.hh
@@ -153,10 +153,19 @@ class QPDFObject @@ -153,10 +153,19 @@ class QPDFObject
153 } 153 }
154 154
155 bool 155 bool
156 - isUnresolved() 156 + isUnresolved() const
157 { 157 {
158 return value->type_code == ::ot_unresolved; 158 return value->type_code == ::ot_unresolved;
159 } 159 }
  160 + void
  161 + resolve()
  162 + {
  163 + if (isUnresolved()) {
  164 + doResolve();
  165 + }
  166 + }
  167 + void doResolve();
  168 +
160 template <typename T> 169 template <typename T>
161 T* 170 T*
162 as() 171 as()
libqpdf/QPDFObject.cc
1 #include <qpdf/QPDFObject.hh> 1 #include <qpdf/QPDFObject.hh>
  2 +
  3 +#include <qpdf/QPDF.hh>
  4 +
  5 +void
  6 +QPDFObject::doResolve()
  7 +{
  8 + auto og = value->og;
  9 + QPDF::Resolver::resolve(value->qpdf, og);
  10 +}
libqpdf/QPDFObjectHandle.cc
@@ -2595,9 +2595,7 @@ QPDFObjectHandle::dereference() @@ -2595,9 +2595,7 @@ QPDFObjectHandle::dereference()
2595 if (!isInitialized()) { 2595 if (!isInitialized()) {
2596 return false; 2596 return false;
2597 } 2597 }
2598 - if (this->obj->isUnresolved()) {  
2599 - QPDF::Resolver::resolve(this->qpdf, getObjGen());  
2600 - } 2598 + this->obj->resolve();
2601 return true; 2599 return true;
2602 } 2600 }
2603 2601