Commit 1a7d3700a665a5ae29c8bab67ddc7fee7040b731
1 parent
b89b1d77
Fix unnecessary copies in auto iter (fixes #426)
Also switch to colon-style iteration in some cases. Thanks to Dean Scarff for drawing this to my attention after detecting some unnecessary copies with https://clang.llvm.org/extra/clang-tidy/checks/performance-for-range-copy.html
Showing
6 changed files
with
24 additions
and
30 deletions
libqpdf/JSON.cc
| @@ -346,7 +346,7 @@ JSON::checkSchemaInternal(JSON_value* this_v, JSON_value* sch_v, | @@ -346,7 +346,7 @@ JSON::checkSchemaInternal(JSON_value* this_v, JSON_value* sch_v, | ||
| 346 | if (sch_dict && (! pattern_key.empty())) | 346 | if (sch_dict && (! pattern_key.empty())) |
| 347 | { | 347 | { |
| 348 | auto pattern_schema = sch_dict->members[pattern_key].getPointer(); | 348 | auto pattern_schema = sch_dict->members[pattern_key].getPointer(); |
| 349 | - for (auto iter: this_dict->members) | 349 | + for (auto const& iter: this_dict->members) |
| 350 | { | 350 | { |
| 351 | std::string const& key = iter.first; | 351 | std::string const& key = iter.first; |
| 352 | checkSchemaInternal( | 352 | checkSchemaInternal( |
libqpdf/QPDFCryptoProvider.cc
| @@ -110,10 +110,9 @@ QPDFCryptoProvider::getRegisteredImpls() | @@ -110,10 +110,9 @@ QPDFCryptoProvider::getRegisteredImpls() | ||
| 110 | { | 110 | { |
| 111 | std::set<std::string> result; | 111 | std::set<std::string> result; |
| 112 | QPDFCryptoProvider& p = getInstance(); | 112 | QPDFCryptoProvider& p = getInstance(); |
| 113 | - for (auto iter = p.m->providers.begin(); iter != p.m->providers.end(); | ||
| 114 | - ++iter) | 113 | + for (auto const& iter: p.m->providers) |
| 115 | { | 114 | { |
| 116 | - result.insert((*iter).first); | 115 | + result.insert(iter.first); |
| 117 | } | 116 | } |
| 118 | return result; | 117 | return result; |
| 119 | } | 118 | } |
libqpdf/QPDF_Array.cc
| @@ -146,9 +146,8 @@ QPDF_Array::getElementsForShallowCopy() const | @@ -146,9 +146,8 @@ QPDF_Array::getElementsForShallowCopy() const | ||
| 146 | void | 146 | void |
| 147 | QPDF_Array::addExplicitElementsToList(std::list<QPDFObjectHandle>& l) const | 147 | QPDF_Array::addExplicitElementsToList(std::list<QPDFObjectHandle>& l) const |
| 148 | { | 148 | { |
| 149 | - for (auto iter = this->elements.begin(); | ||
| 150 | - iter != this->elements.end(); ++iter) | 149 | + for (auto const& iter: this->elements) |
| 151 | { | 150 | { |
| 152 | - l.push_back((*iter).second); | 151 | + l.push_back(iter.second); |
| 153 | } | 152 | } |
| 154 | } | 153 | } |
libqpdf/SparseOHArray.cc
| @@ -30,7 +30,7 @@ SparseOHArray::at(size_t idx) const | @@ -30,7 +30,7 @@ SparseOHArray::at(size_t idx) const | ||
| 30 | throw std::logic_error( | 30 | throw std::logic_error( |
| 31 | "INTERNAL ERROR: bounds error accessing SparseOHArray element"); | 31 | "INTERNAL ERROR: bounds error accessing SparseOHArray element"); |
| 32 | } | 32 | } |
| 33 | - auto iter = this->elements.find(idx); | 33 | + auto const& iter = this->elements.find(idx); |
| 34 | if (iter == this->elements.end()) | 34 | if (iter == this->elements.end()) |
| 35 | { | 35 | { |
| 36 | return QPDFObjectHandle::newNull(); | 36 | return QPDFObjectHandle::newNull(); |
| @@ -57,10 +57,9 @@ SparseOHArray::remove_last() | @@ -57,10 +57,9 @@ SparseOHArray::remove_last() | ||
| 57 | void | 57 | void |
| 58 | SparseOHArray::releaseResolved() | 58 | SparseOHArray::releaseResolved() |
| 59 | { | 59 | { |
| 60 | - for (auto iter = this->elements.begin(); | ||
| 61 | - iter != this->elements.end(); ++iter) | 60 | + for (auto iter: this->elements) |
| 62 | { | 61 | { |
| 63 | - QPDFObjectHandle::ReleaseResolver::releaseResolved((*iter).second); | 62 | + QPDFObjectHandle::ReleaseResolver::releaseResolved(iter.second); |
| 64 | } | 63 | } |
| 65 | } | 64 | } |
| 66 | 65 | ||
| @@ -89,16 +88,15 @@ SparseOHArray::erase(size_t idx) | @@ -89,16 +88,15 @@ SparseOHArray::erase(size_t idx) | ||
| 89 | throw std::logic_error("bounds error erasing item from SparseOHArray"); | 88 | throw std::logic_error("bounds error erasing item from SparseOHArray"); |
| 90 | } | 89 | } |
| 91 | decltype(this->elements) dest; | 90 | decltype(this->elements) dest; |
| 92 | - for (auto iter = this->elements.begin(); | ||
| 93 | - iter != this->elements.end(); ++iter) | 91 | + for (auto const& iter: this->elements) |
| 94 | { | 92 | { |
| 95 | - if ((*iter).first < idx) | 93 | + if (iter.first < idx) |
| 96 | { | 94 | { |
| 97 | - dest.insert(*iter); | 95 | + dest.insert(iter); |
| 98 | } | 96 | } |
| 99 | - else if ((*iter).first > idx) | 97 | + else if (iter.first > idx) |
| 100 | { | 98 | { |
| 101 | - dest[(*iter).first - 1] = (*iter).second; | 99 | + dest[iter.first - 1] = iter.second; |
| 102 | } | 100 | } |
| 103 | } | 101 | } |
| 104 | this->elements = dest; | 102 | this->elements = dest; |
| @@ -120,16 +118,15 @@ SparseOHArray::insert(size_t idx, QPDFObjectHandle oh) | @@ -120,16 +118,15 @@ SparseOHArray::insert(size_t idx, QPDFObjectHandle oh) | ||
| 120 | else | 118 | else |
| 121 | { | 119 | { |
| 122 | decltype(this->elements) dest; | 120 | decltype(this->elements) dest; |
| 123 | - for (auto iter = this->elements.begin(); | ||
| 124 | - iter != this->elements.end(); ++iter) | 121 | + for (auto const& iter: this->elements) |
| 125 | { | 122 | { |
| 126 | - if ((*iter).first < idx) | 123 | + if (iter.first < idx) |
| 127 | { | 124 | { |
| 128 | - dest.insert(*iter); | 125 | + dest.insert(iter); |
| 129 | } | 126 | } |
| 130 | else | 127 | else |
| 131 | { | 128 | { |
| 132 | - dest[(*iter).first + 1] = (*iter).second; | 129 | + dest[iter.first + 1] = iter.second; |
| 133 | } | 130 | } |
| 134 | } | 131 | } |
| 135 | this->elements = dest; | 132 | this->elements = dest; |
qpdf/fix-qdf.cc
| @@ -387,13 +387,12 @@ QdfFixer::writeOstream() | @@ -387,13 +387,12 @@ QdfFixer::writeOstream() | ||
| 387 | auto onum = ostream_id; | 387 | auto onum = ostream_id; |
| 388 | std::string offsets; | 388 | std::string offsets; |
| 389 | auto n = ostream_offsets.size(); | 389 | auto n = ostream_offsets.size(); |
| 390 | - for (auto iter = ostream_offsets.begin(); | ||
| 391 | - iter != ostream_offsets.end(); ++iter) | 390 | + for (auto iter: ostream_offsets) |
| 392 | { | 391 | { |
| 393 | - (*iter) -= QIntC::to_offset(first); | 392 | + iter -= QIntC::to_offset(first); |
| 394 | ++onum; | 393 | ++onum; |
| 395 | offsets += QUtil::int_to_string(onum) + " " + | 394 | offsets += QUtil::int_to_string(onum) + " " + |
| 396 | - QUtil::int_to_string(*iter) + "\n"; | 395 | + QUtil::int_to_string(iter) + "\n"; |
| 397 | } | 396 | } |
| 398 | auto offset_adjust = QIntC::to_offset(offsets.size()); | 397 | auto offset_adjust = QIntC::to_offset(offsets.size()); |
| 399 | first += offset_adjust; | 398 | first += offset_adjust; |
qpdf/qpdf.cc
| @@ -1694,11 +1694,11 @@ ArgParser::argShowCrypto() | @@ -1694,11 +1694,11 @@ ArgParser::argShowCrypto() | ||
| 1694 | auto crypto = QPDFCryptoProvider::getRegisteredImpls(); | 1694 | auto crypto = QPDFCryptoProvider::getRegisteredImpls(); |
| 1695 | std::string default_crypto = QPDFCryptoProvider::getDefaultProvider(); | 1695 | std::string default_crypto = QPDFCryptoProvider::getDefaultProvider(); |
| 1696 | std::cout << default_crypto << std::endl; | 1696 | std::cout << default_crypto << std::endl; |
| 1697 | - for (auto iter = crypto.begin(); iter != crypto.end(); ++iter) | 1697 | + for (auto const& iter: crypto) |
| 1698 | { | 1698 | { |
| 1699 | - if (*iter != default_crypto) | 1699 | + if (iter != default_crypto) |
| 1700 | { | 1700 | { |
| 1701 | - std::cout << *iter << std::endl; | 1701 | + std::cout << iter << std::endl; |
| 1702 | } | 1702 | } |
| 1703 | } | 1703 | } |
| 1704 | } | 1704 | } |
| @@ -3646,7 +3646,7 @@ static std::set<QPDFObjGen> | @@ -3646,7 +3646,7 @@ static std::set<QPDFObjGen> | ||
| 3646 | get_wanted_json_objects(Options& o) | 3646 | get_wanted_json_objects(Options& o) |
| 3647 | { | 3647 | { |
| 3648 | std::set<QPDFObjGen> wanted_og; | 3648 | std::set<QPDFObjGen> wanted_og; |
| 3649 | - for (auto iter: o.json_objects) | 3649 | + for (auto const& iter: o.json_objects) |
| 3650 | { | 3650 | { |
| 3651 | bool trailer; | 3651 | bool trailer; |
| 3652 | int obj = 0; | 3652 | int obj = 0; |