Commit 5e292cfff7b107cec7616faeab713ef861c0f3e2
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.
Showing
3 changed files
with
20 additions
and
20 deletions
include/qpdf/QPDF.hh
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 | { |