Commit 5e292cfff7b107cec7616faeab713ef861c0f3e2

Authored by m-holger
1 parent 0be4a8e7

Move `Resolver` to `QPDF::Doc` and update references

Relocate `Resolver` to `QPDF::Doc` for improved encapsulation of resolution logic. Adjust all references accordingly to use the new placement.
include/qpdf/QPDF.hh
@@ -791,7 +791,6 @@ class QPDF @@ -791,7 +791,6 @@ class QPDF
791 791
792 class Doc; 792 class Doc;
793 class Writer; 793 class Writer;
794 - class Resolver;  
795 class StreamCopier; 794 class StreamCopier;
796 class Pipe; 795 class Pipe;
797 class JobSetter; 796 class JobSetter;
libqpdf/qpdf/QPDFObjectHandle_private.hh
@@ -577,7 +577,7 @@ namespace qpdf @@ -577,7 +577,7 @@ namespace qpdf
577 return &std::get<T>(obj->value); 577 return &std::get<T>(obj->value);
578 } 578 }
579 if (std::holds_alternative<QPDF_Unresolved>(obj->value)) { 579 if (std::holds_alternative<QPDF_Unresolved>(obj->value)) {
580 - return BaseHandle(QPDF::Resolver::resolved(obj->qpdf, obj->og)).as<T>(); 580 + return BaseHandle(QPDF::Doc::Resolver::resolved(obj->qpdf, obj->og)).as<T>();
581 } 581 }
582 if (std::holds_alternative<QPDF_Reference>(obj->value)) { 582 if (std::holds_alternative<QPDF_Reference>(obj->value)) {
583 // see comment in QPDF_Reference. 583 // see comment in QPDF_Reference.
@@ -676,7 +676,7 @@ namespace qpdf @@ -676,7 +676,7 @@ namespace qpdf
676 return ::ot_uninitialized; 676 return ::ot_uninitialized;
677 } 677 }
678 if (raw_type_code() == ::ot_unresolved) { 678 if (raw_type_code() == ::ot_unresolved) {
679 - return QPDF::Resolver::resolved(obj->qpdf, obj->og)->getTypeCode(); 679 + return QPDF::Doc::Resolver::resolved(obj->qpdf, obj->og)->getTypeCode();
680 } 680 }
681 return raw_type_code(); 681 return raw_type_code();
682 } 682 }
@@ -688,7 +688,7 @@ namespace qpdf @@ -688,7 +688,7 @@ namespace qpdf
688 return ::ot_uninitialized; 688 return ::ot_uninitialized;
689 } 689 }
690 if (raw_type_code() == ::ot_unresolved) { 690 if (raw_type_code() == ::ot_unresolved) {
691 - return QPDF::Resolver::resolved(obj->qpdf, obj->og)->getTypeCode(); 691 + return QPDF::Doc::Resolver::resolved(obj->qpdf, obj->og)->getTypeCode();
692 } 692 }
693 if (raw_type_code() == ::ot_reference) { 693 if (raw_type_code() == ::ot_reference) {
694 return std::get<QPDF_Reference>(obj->value).obj->getTypeCode(); 694 return std::get<QPDF_Reference>(obj->value).obj->getTypeCode();
@@ -728,7 +728,7 @@ inline qpdf_object_type_e @@ -728,7 +728,7 @@ inline qpdf_object_type_e
728 QPDFObject::getResolvedTypeCode() const 728 QPDFObject::getResolvedTypeCode() const
729 { 729 {
730 if (getTypeCode() == ::ot_unresolved) { 730 if (getTypeCode() == ::ot_unresolved) {
731 - return QPDF::Resolver::resolved(qpdf, og)->getTypeCode(); 731 + return QPDF::Doc::Resolver::resolved(qpdf, og)->getTypeCode();
732 } 732 }
733 if (getTypeCode() == ::ot_reference) { 733 if (getTypeCode() == ::ot_reference) {
734 return std::get<QPDF_Reference>(value).obj->getTypeCode(); 734 return std::get<QPDF_Reference>(value).obj->getTypeCode();
libqpdf/qpdf/QPDF_private.hh
@@ -13,21 +13,6 @@ @@ -13,21 +13,6 @@
13 13
14 using namespace qpdf; 14 using namespace qpdf;
15 15
16 -// The Resolver class is restricted to QPDFObject so that only it can resolve indirect  
17 -// references.  
18 -class QPDF::Resolver  
19 -{  
20 - friend class QPDFObject;  
21 - friend class qpdf::BaseHandle;  
22 -  
23 - private:  
24 - static std::shared_ptr<QPDFObject> const&  
25 - resolved(QPDF* qpdf, QPDFObjGen og)  
26 - {  
27 - return qpdf->resolve(og);  
28 - }  
29 -};  
30 -  
31 // StreamCopier class is restricted to QPDFObjectHandle so it can copy stream data. 16 // StreamCopier class is restricted to QPDFObjectHandle so it can copy stream data.
32 class QPDF::StreamCopier 17 class QPDF::StreamCopier
33 { 18 {
@@ -383,6 +368,7 @@ class QPDF::Doc @@ -383,6 +368,7 @@ class QPDF::Doc
383 { 368 {
384 public: 369 public:
385 class ParseGuard; 370 class ParseGuard;
  371 + class Resolver;
386 372
387 Doc() = delete; 373 Doc() = delete;
388 Doc(Doc const&) = delete; 374 Doc(Doc const&) = delete;
@@ -540,6 +526,21 @@ class QPDF::Members @@ -540,6 +526,21 @@ class QPDF::Members
540 std::map<QPDFObjGen, std::set<ObjUser>> object_to_obj_users; 526 std::map<QPDFObjGen, std::set<ObjUser>> object_to_obj_users;
541 }; 527 };
542 528
  529 +// The Resolver class is restricted to QPDFObject and BaseHandle so that only it can resolve
  530 +// indirect references.
  531 +class QPDF::Doc::Resolver
  532 +{
  533 + friend class QPDFObject;
  534 + friend class qpdf::BaseHandle;
  535 +
  536 + private:
  537 + static std::shared_ptr<QPDFObject> const&
  538 + resolved(QPDF* qpdf, QPDFObjGen og)
  539 + {
  540 + return qpdf->resolve(og);
  541 + }
  542 +};
  543 +
543 // JobSetter class is restricted to QPDFJob. 544 // JobSetter class is restricted to QPDFJob.
544 class QPDF::JobSetter 545 class QPDF::JobSetter
545 { 546 {