Commit 4974090fa7d666a26d136f63c4b9c1da1cf062d8
1 parent
f871b753
Refactor `QPDFEmbeddedFileDocumentHelper::Members` to use `std::unique_ptr`, imp…
…rove memory management, and simplify initialization logic.
Showing
2 changed files
with
15 additions
and
18 deletions
include/qpdf/QPDFEmbeddedFileDocumentHelper.hh
| ... | ... | @@ -67,19 +67,7 @@ class QPDFEmbeddedFileDocumentHelper: public QPDFDocumentHelper |
| 67 | 67 | private: |
| 68 | 68 | void initEmbeddedFiles(); |
| 69 | 69 | |
| 70 | - class Members | |
| 71 | - { | |
| 72 | - friend class QPDFEmbeddedFileDocumentHelper; | |
| 73 | - | |
| 74 | - public: | |
| 75 | - ~Members() = default; | |
| 76 | - | |
| 77 | - private: | |
| 78 | - Members() = default; | |
| 79 | - Members(Members const&) = delete; | |
| 80 | - | |
| 81 | - std::shared_ptr<QPDFNameTreeObjectHelper> embedded_files; | |
| 82 | - }; | |
| 70 | + class Members; | |
| 83 | 71 | |
| 84 | 72 | std::shared_ptr<Members> m; |
| 85 | 73 | }; | ... | ... |
libqpdf/QPDFEmbeddedFileDocumentHelper.cc
| ... | ... | @@ -30,16 +30,25 @@ |
| 30 | 30 | // >> |
| 31 | 31 | // >> |
| 32 | 32 | |
| 33 | +class QPDFEmbeddedFileDocumentHelper::Members | |
| 34 | +{ | |
| 35 | + public: | |
| 36 | + Members() = default; | |
| 37 | + Members(Members const&) = delete; | |
| 38 | + ~Members() = default; | |
| 39 | + | |
| 40 | + std::unique_ptr<QPDFNameTreeObjectHelper> embedded_files; | |
| 41 | +}; | |
| 42 | + | |
| 33 | 43 | QPDFEmbeddedFileDocumentHelper::QPDFEmbeddedFileDocumentHelper(QPDF& qpdf) : |
| 34 | 44 | QPDFDocumentHelper(qpdf), |
| 35 | - m(new Members()) | |
| 45 | + m(std::make_shared<Members>()) | |
| 36 | 46 | { |
| 37 | - auto root = qpdf.getRoot(); | |
| 38 | - auto names = root.getKey("/Names"); | |
| 47 | + auto names = qpdf.getRoot().getKey("/Names"); | |
| 39 | 48 | if (names.isDictionary()) { |
| 40 | 49 | auto embedded_files = names.getKey("/EmbeddedFiles"); |
| 41 | 50 | if (embedded_files.isDictionary()) { |
| 42 | - m->embedded_files = std::make_shared<QPDFNameTreeObjectHelper>(embedded_files, qpdf); | |
| 51 | + m->embedded_files = std::make_unique<QPDFNameTreeObjectHelper>(embedded_files, qpdf); | |
| 43 | 52 | } |
| 44 | 53 | } |
| 45 | 54 | } |
| ... | ... | @@ -65,7 +74,7 @@ QPDFEmbeddedFileDocumentHelper::initEmbeddedFiles() |
| 65 | 74 | if (!embedded_files.isDictionary()) { |
| 66 | 75 | auto nth = QPDFNameTreeObjectHelper::newEmpty(qpdf); |
| 67 | 76 | names.replaceKey("/EmbeddedFiles", nth.getObjectHandle()); |
| 68 | - m->embedded_files = std::make_shared<QPDFNameTreeObjectHelper>(nth); | |
| 77 | + m->embedded_files = std::make_unique<QPDFNameTreeObjectHelper>(nth); | |
| 69 | 78 | } |
| 70 | 79 | } |
| 71 | 80 | ... | ... |