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,19 +67,7 @@ class QPDFEmbeddedFileDocumentHelper: public QPDFDocumentHelper | ||
| 67 | private: | 67 | private: |
| 68 | void initEmbeddedFiles(); | 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 | std::shared_ptr<Members> m; | 72 | std::shared_ptr<Members> m; |
| 85 | }; | 73 | }; |
libqpdf/QPDFEmbeddedFileDocumentHelper.cc
| @@ -30,16 +30,25 @@ | @@ -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 | QPDFEmbeddedFileDocumentHelper::QPDFEmbeddedFileDocumentHelper(QPDF& qpdf) : | 43 | QPDFEmbeddedFileDocumentHelper::QPDFEmbeddedFileDocumentHelper(QPDF& qpdf) : |
| 34 | QPDFDocumentHelper(qpdf), | 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 | if (names.isDictionary()) { | 48 | if (names.isDictionary()) { |
| 40 | auto embedded_files = names.getKey("/EmbeddedFiles"); | 49 | auto embedded_files = names.getKey("/EmbeddedFiles"); |
| 41 | if (embedded_files.isDictionary()) { | 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,7 +74,7 @@ QPDFEmbeddedFileDocumentHelper::initEmbeddedFiles() | ||
| 65 | if (!embedded_files.isDictionary()) { | 74 | if (!embedded_files.isDictionary()) { |
| 66 | auto nth = QPDFNameTreeObjectHelper::newEmpty(qpdf); | 75 | auto nth = QPDFNameTreeObjectHelper::newEmpty(qpdf); |
| 67 | names.replaceKey("/EmbeddedFiles", nth.getObjectHandle()); | 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 |