Commit 4a8515912c80e8d98c3c1a42eec4bdf7b6bbd8e1

Authored by m-holger
1 parent 56e9bcab

Add method QPDFObject::resolve

include/qpdf/QPDF.hh
... ... @@ -843,7 +843,7 @@ class QPDF
843 843 // it can resolve indirect references.
844 844 class Resolver
845 845 {
846   - friend class QPDFObjectHandle;
  846 + friend class QPDFObject;
847 847  
848 848 private:
849 849 static void
... ...
include/qpdf/QPDFObject.hh
... ... @@ -153,10 +153,19 @@ class QPDFObject
153 153 }
154 154  
155 155 bool
156   - isUnresolved()
  156 + isUnresolved() const
157 157 {
158 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 169 template <typename T>
161 170 T*
162 171 as()
... ...
libqpdf/QPDFObject.cc
1 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 2595 if (!isInitialized()) {
2596 2596 return false;
2597 2597 }
2598   - if (this->obj->isUnresolved()) {
2599   - QPDF::Resolver::resolve(this->qpdf, getObjGen());
2600   - }
  2598 + this->obj->resolve();
2601 2599 return true;
2602 2600 }
2603 2601  
... ...