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 | 346 | if (sch_dict && (! pattern_key.empty())) |
| 347 | 347 | { |
| 348 | 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 | 351 | std::string const& key = iter.first; |
| 352 | 352 | checkSchemaInternal( | ... | ... |
libqpdf/QPDFCryptoProvider.cc
| ... | ... | @@ -110,10 +110,9 @@ QPDFCryptoProvider::getRegisteredImpls() |
| 110 | 110 | { |
| 111 | 111 | std::set<std::string> result; |
| 112 | 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 | 117 | return result; |
| 119 | 118 | } | ... | ... |
libqpdf/QPDF_Array.cc
| ... | ... | @@ -146,9 +146,8 @@ QPDF_Array::getElementsForShallowCopy() const |
| 146 | 146 | void |
| 147 | 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 | 30 | throw std::logic_error( |
| 31 | 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 | 34 | if (iter == this->elements.end()) |
| 35 | 35 | { |
| 36 | 36 | return QPDFObjectHandle::newNull(); |
| ... | ... | @@ -57,10 +57,9 @@ SparseOHArray::remove_last() |
| 57 | 57 | void |
| 58 | 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 | 88 | throw std::logic_error("bounds error erasing item from SparseOHArray"); |
| 90 | 89 | } |
| 91 | 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 | 102 | this->elements = dest; |
| ... | ... | @@ -120,16 +118,15 @@ SparseOHArray::insert(size_t idx, QPDFObjectHandle oh) |
| 120 | 118 | else |
| 121 | 119 | { |
| 122 | 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 | 127 | else |
| 131 | 128 | { |
| 132 | - dest[(*iter).first + 1] = (*iter).second; | |
| 129 | + dest[iter.first + 1] = iter.second; | |
| 133 | 130 | } |
| 134 | 131 | } |
| 135 | 132 | this->elements = dest; | ... | ... |
qpdf/fix-qdf.cc
| ... | ... | @@ -387,13 +387,12 @@ QdfFixer::writeOstream() |
| 387 | 387 | auto onum = ostream_id; |
| 388 | 388 | std::string offsets; |
| 389 | 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 | 393 | ++onum; |
| 395 | 394 | offsets += QUtil::int_to_string(onum) + " " + |
| 396 | - QUtil::int_to_string(*iter) + "\n"; | |
| 395 | + QUtil::int_to_string(iter) + "\n"; | |
| 397 | 396 | } |
| 398 | 397 | auto offset_adjust = QIntC::to_offset(offsets.size()); |
| 399 | 398 | first += offset_adjust; | ... | ... |
qpdf/qpdf.cc
| ... | ... | @@ -1694,11 +1694,11 @@ ArgParser::argShowCrypto() |
| 1694 | 1694 | auto crypto = QPDFCryptoProvider::getRegisteredImpls(); |
| 1695 | 1695 | std::string default_crypto = QPDFCryptoProvider::getDefaultProvider(); |
| 1696 | 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 | 3646 | get_wanted_json_objects(Options& o) |
| 3647 | 3647 | { |
| 3648 | 3648 | std::set<QPDFObjGen> wanted_og; |
| 3649 | - for (auto iter: o.json_objects) | |
| 3649 | + for (auto const& iter: o.json_objects) | |
| 3650 | 3650 | { |
| 3651 | 3651 | bool trailer; |
| 3652 | 3652 | int obj = 0; | ... | ... |