Commit b0ceea467ae3cb6c2cbecf57ae23532a951994ad
1 parent
03ea948c
Add `final` specifiers and initialize member variables.
Refactored several classes to use C++11 `final` specifiers for inheritance restrictions and added default member initializations. These changes enhance code clarity, improve safety, and ensure modern coding practices.
Showing
21 changed files
with
53 additions
and
87 deletions
include/qpdf/ClosedFileInputSource.hh
| ... | ... | @@ -69,9 +69,9 @@ class QPDF_DLL_CLASS ClosedFileInputSource: public InputSource |
| 69 | 69 | void after(); |
| 70 | 70 | |
| 71 | 71 | std::string filename; |
| 72 | - qpdf_offset_t offset; | |
| 72 | + qpdf_offset_t offset{0}; | |
| 73 | 73 | std::shared_ptr<FileInputSource> fis; |
| 74 | - bool stay_open; | |
| 74 | + bool stay_open{false}; | |
| 75 | 75 | }; |
| 76 | 76 | |
| 77 | 77 | #endif // QPDF_CLOSEDFILEINPUTSOURCE_HH | ... | ... |
include/qpdf/QPDFAcroFormDocumentHelper.hh
| ... | ... | @@ -234,10 +234,10 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper |
| 234 | 234 | ~Members() = default; |
| 235 | 235 | |
| 236 | 236 | private: |
| 237 | - Members(); | |
| 237 | + Members() = default; | |
| 238 | 238 | Members(Members const&) = delete; |
| 239 | 239 | |
| 240 | - bool cache_valid; | |
| 240 | + bool cache_valid{false}; | |
| 241 | 241 | std::map<QPDFObjGen, std::vector<QPDFAnnotationObjectHelper>> field_to_annotations; |
| 242 | 242 | std::map<QPDFObjGen, QPDFFormFieldObjectHelper> annotation_to_field; |
| 243 | 243 | std::map<QPDFObjGen, std::string> field_to_name; | ... | ... |
libqpdf/AES_PDF_native.cc
| ... | ... | @@ -17,8 +17,7 @@ AES_PDF_native::AES_PDF_native( |
| 17 | 17 | unsigned char* cbc_block) : |
| 18 | 18 | encrypt(encrypt), |
| 19 | 19 | cbc_mode(cbc_mode), |
| 20 | - cbc_block(cbc_block), | |
| 21 | - nrounds(0) | |
| 20 | + cbc_block(cbc_block) | |
| 22 | 21 | { |
| 23 | 22 | size_t keybits = 8 * key_bytes; |
| 24 | 23 | this->key = std::make_unique<unsigned char[]>(key_bytes); | ... | ... |
libqpdf/BitWriter.cc
libqpdf/ClosedFileInputSource.cc
libqpdf/ContentNormalizer.cc
libqpdf/InsecureRandomDataProvider.cc
libqpdf/NNTree.cc
| ... | ... | @@ -28,8 +28,7 @@ error(QPDF& qpdf, QPDFObjectHandle& node, std::string const& msg) |
| 28 | 28 | } |
| 29 | 29 | |
| 30 | 30 | NNTreeIterator::NNTreeIterator(NNTreeImpl& impl) : |
| 31 | - impl(impl), | |
| 32 | - item_number(-1) | |
| 31 | + impl(impl) | |
| 33 | 32 | { |
| 34 | 33 | } |
| 35 | 34 | |
| ... | ... | @@ -666,7 +665,6 @@ NNTreeImpl::NNTreeImpl( |
| 666 | 665 | NNTreeDetails const& details, QPDF& qpdf, QPDFObjectHandle& oh, bool auto_repair) : |
| 667 | 666 | details(details), |
| 668 | 667 | qpdf(qpdf), |
| 669 | - split_threshold(32), | |
| 670 | 668 | oh(oh), |
| 671 | 669 | auto_repair(auto_repair) |
| 672 | 670 | { | ... | ... |
libqpdf/Pl_SHA2.cc
libqpdf/QPDFAcroFormDocumentHelper.cc
libqpdf/QPDFArgParser.cc
| ... | ... | @@ -18,12 +18,7 @@ QPDFArgParser::Members::Members(int argc, char const* const argv[], char const* |
| 18 | 18 | |
| 19 | 19 | argc(argc), |
| 20 | 20 | argv(argv), |
| 21 | - progname_env(progname_env), | |
| 22 | - cur_arg(0), | |
| 23 | - bash_completion(false), | |
| 24 | - zsh_completion(false), | |
| 25 | - option_table(nullptr), | |
| 26 | - final_check_handler(nullptr) | |
| 21 | + progname_env(progname_env) | |
| 27 | 22 | { |
| 28 | 23 | auto tmp = QUtil::make_unique_cstr(argv[0]); |
| 29 | 24 | whoami = QUtil::getWhoami(tmp.get()); | ... | ... |
libqpdf/ResourceFinder.cc
libqpdf/qpdf/AES_PDF_native.hh
libqpdf/qpdf/BitWriter.hh
libqpdf/qpdf/ContentNormalizer.hh
| ... | ... | @@ -6,7 +6,7 @@ |
| 6 | 6 | class ContentNormalizer final: public QPDFObjectHandle::TokenFilter |
| 7 | 7 | { |
| 8 | 8 | public: |
| 9 | - ContentNormalizer(); | |
| 9 | + ContentNormalizer() = default; | |
| 10 | 10 | ~ContentNormalizer() final = default; |
| 11 | 11 | void handleToken(QPDFTokenizer::Token const&) final; |
| 12 | 12 | |
| ... | ... | @@ -22,8 +22,8 @@ class ContentNormalizer final: public QPDFObjectHandle::TokenFilter |
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | private: |
| 25 | - bool any_bad_tokens; | |
| 26 | - bool last_token_was_bad; | |
| 25 | + bool any_bad_tokens{false}; | |
| 26 | + bool last_token_was_bad{false}; | |
| 27 | 27 | }; |
| 28 | 28 | |
| 29 | 29 | #endif // CONTENTNORMALIZER_HH | ... | ... |
libqpdf/qpdf/InsecureRandomDataProvider.hh
| ... | ... | @@ -3,18 +3,18 @@ |
| 3 | 3 | |
| 4 | 4 | #include <qpdf/RandomDataProvider.hh> |
| 5 | 5 | |
| 6 | -class InsecureRandomDataProvider: public RandomDataProvider | |
| 6 | +class InsecureRandomDataProvider final: public RandomDataProvider | |
| 7 | 7 | { |
| 8 | 8 | public: |
| 9 | - InsecureRandomDataProvider(); | |
| 10 | - ~InsecureRandomDataProvider() override = default; | |
| 11 | - void provideRandomData(unsigned char* data, size_t len) override; | |
| 9 | + InsecureRandomDataProvider() = default; | |
| 10 | + ~InsecureRandomDataProvider() final = default; | |
| 11 | + void provideRandomData(unsigned char* data, size_t len) final; | |
| 12 | 12 | static RandomDataProvider* getInstance(); |
| 13 | 13 | |
| 14 | 14 | private: |
| 15 | 15 | long random(); |
| 16 | 16 | |
| 17 | - bool seeded_random; | |
| 17 | + bool seeded_random{false}; | |
| 18 | 18 | }; |
| 19 | 19 | |
| 20 | 20 | #endif // INSECURERANDOMDATAPROVIDER_HH | ... | ... |
libqpdf/qpdf/NNTree.hh
| ... | ... | @@ -84,7 +84,7 @@ class NNTreeIterator |
| 84 | 84 | NNTreeImpl& impl; |
| 85 | 85 | std::list<PathElement> path; |
| 86 | 86 | QPDFObjectHandle node; |
| 87 | - int item_number; | |
| 87 | + int item_number{-1}; | |
| 88 | 88 | value_type ivalue; |
| 89 | 89 | }; |
| 90 | 90 | |
| ... | ... | @@ -123,7 +123,7 @@ class NNTreeImpl |
| 123 | 123 | |
| 124 | 124 | NNTreeDetails const& details; |
| 125 | 125 | QPDF& qpdf; |
| 126 | - int split_threshold; | |
| 126 | + int split_threshold{32}; | |
| 127 | 127 | QPDFObjectHandle oh; |
| 128 | 128 | bool auto_repair; |
| 129 | 129 | }; | ... | ... |
libqpdf/qpdf/Pl_SHA2.hh
libqpdf/qpdf/QPDFArgParser.hh
| ... | ... | @@ -206,9 +206,9 @@ class QPDFArgParser |
| 206 | 206 | char const* const* argv; |
| 207 | 207 | std::string whoami; |
| 208 | 208 | std::string progname_env; |
| 209 | - int cur_arg; | |
| 210 | - bool bash_completion; | |
| 211 | - bool zsh_completion; | |
| 209 | + int cur_arg{0}; | |
| 210 | + bool bash_completion{false}; | |
| 211 | + bool zsh_completion{false}; | |
| 212 | 212 | std::string bash_prev; |
| 213 | 213 | std::string bash_cur; |
| 214 | 214 | std::string bash_line; |
| ... | ... | @@ -216,9 +216,9 @@ class QPDFArgParser |
| 216 | 216 | std::map<std::string, option_table_t> option_tables; |
| 217 | 217 | option_table_t main_option_table; |
| 218 | 218 | option_table_t help_option_table; |
| 219 | - option_table_t* option_table; | |
| 219 | + option_table_t* option_table{nullptr}; | |
| 220 | 220 | std::string option_table_name; |
| 221 | - bare_arg_handler_t final_check_handler; | |
| 221 | + bare_arg_handler_t final_check_handler{nullptr}; | |
| 222 | 222 | std::vector<std::string> new_argv; |
| 223 | 223 | std::vector<std::string> bash_argv; |
| 224 | 224 | std::vector<char const*> argv_ph; | ... | ... |
libqpdf/qpdf/QPDFCrypto_native.hh
| ... | ... | @@ -8,37 +8,37 @@ |
| 8 | 8 | #include <qpdf/SHA2_native.hh> |
| 9 | 9 | #include <memory> |
| 10 | 10 | |
| 11 | -class QPDFCrypto_native: public QPDFCryptoImpl | |
| 11 | +class QPDFCrypto_native final: public QPDFCryptoImpl | |
| 12 | 12 | { |
| 13 | 13 | public: |
| 14 | 14 | QPDFCrypto_native() = default; |
| 15 | 15 | |
| 16 | - virtual ~QPDFCrypto_native() = default; | |
| 16 | + ~QPDFCrypto_native() final = default; | |
| 17 | 17 | |
| 18 | - virtual void provideRandomData(unsigned char* data, size_t len); | |
| 18 | + void provideRandomData(unsigned char* data, size_t len) final; | |
| 19 | 19 | |
| 20 | - virtual void MD5_init(); | |
| 21 | - virtual void MD5_update(unsigned char const* data, size_t len); | |
| 22 | - virtual void MD5_finalize(); | |
| 23 | - virtual void MD5_digest(MD5_Digest); | |
| 20 | + void MD5_init() final; | |
| 21 | + void MD5_update(unsigned char const* data, size_t len) final; | |
| 22 | + void MD5_finalize() final; | |
| 23 | + void MD5_digest(MD5_Digest) final; | |
| 24 | 24 | |
| 25 | - virtual void RC4_init(unsigned char const* key_data, int key_len = -1); | |
| 26 | - virtual void RC4_process(unsigned char const* in_data, size_t len, unsigned char* out_data = 0); | |
| 27 | - virtual void RC4_finalize(); | |
| 25 | + void RC4_init(unsigned char const* key_data, int key_len = -1) final; | |
| 26 | + void RC4_process(unsigned char const* in_data, size_t len, unsigned char* out_data = 0) final; | |
| 27 | + void RC4_finalize() final; | |
| 28 | 28 | |
| 29 | - virtual void SHA2_init(int bits); | |
| 30 | - virtual void SHA2_update(unsigned char const* data, size_t len); | |
| 31 | - virtual void SHA2_finalize(); | |
| 32 | - virtual std::string SHA2_digest(); | |
| 29 | + void SHA2_init(int bits) final; | |
| 30 | + void SHA2_update(unsigned char const* data, size_t len) final; | |
| 31 | + void SHA2_finalize() final; | |
| 32 | + std::string SHA2_digest() final; | |
| 33 | 33 | |
| 34 | - virtual void rijndael_init( | |
| 34 | + void rijndael_init( | |
| 35 | 35 | bool encrypt, |
| 36 | 36 | unsigned char const* key_data, |
| 37 | 37 | size_t key_len, |
| 38 | 38 | bool cbc_mode, |
| 39 | - unsigned char* cbc_block); | |
| 40 | - virtual void rijndael_process(unsigned char* in_data, unsigned char* out_data); | |
| 41 | - virtual void rijndael_finalize(); | |
| 39 | + unsigned char* cbc_block) final; | |
| 40 | + void rijndael_process(unsigned char* in_data, unsigned char* out_data) final; | |
| 41 | + void rijndael_finalize() final; | |
| 42 | 42 | |
| 43 | 43 | private: |
| 44 | 44 | std::shared_ptr<MD5_native> md5; | ... | ... |
libqpdf/qpdf/ResourceFinder.hh
| ... | ... | @@ -3,20 +3,20 @@ |
| 3 | 3 | |
| 4 | 4 | #include <qpdf/QPDFObjectHandle.hh> |
| 5 | 5 | |
| 6 | -class ResourceFinder: public QPDFObjectHandle::ParserCallbacks | |
| 6 | +class ResourceFinder final: public QPDFObjectHandle::ParserCallbacks | |
| 7 | 7 | { |
| 8 | 8 | public: |
| 9 | - ResourceFinder(); | |
| 10 | - ~ResourceFinder() override = default; | |
| 11 | - void handleObject(QPDFObjectHandle, size_t, size_t) override; | |
| 12 | - void handleEOF() override; | |
| 9 | + ResourceFinder() = default; | |
| 10 | + ~ResourceFinder() final = default; | |
| 11 | + void handleObject(QPDFObjectHandle, size_t, size_t) final; | |
| 12 | + void handleEOF() final; | |
| 13 | 13 | std::set<std::string> const& getNames() const; |
| 14 | 14 | std::map<std::string, std::map<std::string, std::set<size_t>>> const& |
| 15 | 15 | getNamesByResourceType() const; |
| 16 | 16 | |
| 17 | 17 | private: |
| 18 | 18 | std::string last_name; |
| 19 | - size_t last_name_offset; | |
| 19 | + size_t last_name_offset{0}; | |
| 20 | 20 | std::set<std::string> names; |
| 21 | 21 | std::map<std::string, std::map<std::string, std::set<size_t>>> names_by_resource_type; |
| 22 | 22 | }; | ... | ... |