mirror of https://github.com/qpdf/qpdf.git
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
This commit is contained in:
parent
b89b1d772d
commit
1a7d3700a6
|
@ -346,7 +346,7 @@ JSON::checkSchemaInternal(JSON_value* this_v, JSON_value* sch_v,
|
||||||
if (sch_dict && (! pattern_key.empty()))
|
if (sch_dict && (! pattern_key.empty()))
|
||||||
{
|
{
|
||||||
auto pattern_schema = sch_dict->members[pattern_key].getPointer();
|
auto pattern_schema = sch_dict->members[pattern_key].getPointer();
|
||||||
for (auto iter: this_dict->members)
|
for (auto const& iter: this_dict->members)
|
||||||
{
|
{
|
||||||
std::string const& key = iter.first;
|
std::string const& key = iter.first;
|
||||||
checkSchemaInternal(
|
checkSchemaInternal(
|
||||||
|
|
|
@ -110,10 +110,9 @@ QPDFCryptoProvider::getRegisteredImpls()
|
||||||
{
|
{
|
||||||
std::set<std::string> result;
|
std::set<std::string> result;
|
||||||
QPDFCryptoProvider& p = getInstance();
|
QPDFCryptoProvider& p = getInstance();
|
||||||
for (auto iter = p.m->providers.begin(); iter != p.m->providers.end();
|
for (auto const& iter: p.m->providers)
|
||||||
++iter)
|
|
||||||
{
|
{
|
||||||
result.insert((*iter).first);
|
result.insert(iter.first);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,9 +146,8 @@ QPDF_Array::getElementsForShallowCopy() const
|
||||||
void
|
void
|
||||||
QPDF_Array::addExplicitElementsToList(std::list<QPDFObjectHandle>& l) const
|
QPDF_Array::addExplicitElementsToList(std::list<QPDFObjectHandle>& l) const
|
||||||
{
|
{
|
||||||
for (auto iter = this->elements.begin();
|
for (auto const& iter: this->elements)
|
||||||
iter != this->elements.end(); ++iter)
|
|
||||||
{
|
{
|
||||||
l.push_back((*iter).second);
|
l.push_back(iter.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ SparseOHArray::at(size_t idx) const
|
||||||
throw std::logic_error(
|
throw std::logic_error(
|
||||||
"INTERNAL ERROR: bounds error accessing SparseOHArray element");
|
"INTERNAL ERROR: bounds error accessing SparseOHArray element");
|
||||||
}
|
}
|
||||||
auto iter = this->elements.find(idx);
|
auto const& iter = this->elements.find(idx);
|
||||||
if (iter == this->elements.end())
|
if (iter == this->elements.end())
|
||||||
{
|
{
|
||||||
return QPDFObjectHandle::newNull();
|
return QPDFObjectHandle::newNull();
|
||||||
|
@ -57,10 +57,9 @@ SparseOHArray::remove_last()
|
||||||
void
|
void
|
||||||
SparseOHArray::releaseResolved()
|
SparseOHArray::releaseResolved()
|
||||||
{
|
{
|
||||||
for (auto iter = this->elements.begin();
|
for (auto iter: this->elements)
|
||||||
iter != this->elements.end(); ++iter)
|
|
||||||
{
|
{
|
||||||
QPDFObjectHandle::ReleaseResolver::releaseResolved((*iter).second);
|
QPDFObjectHandle::ReleaseResolver::releaseResolved(iter.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,16 +88,15 @@ SparseOHArray::erase(size_t idx)
|
||||||
throw std::logic_error("bounds error erasing item from SparseOHArray");
|
throw std::logic_error("bounds error erasing item from SparseOHArray");
|
||||||
}
|
}
|
||||||
decltype(this->elements) dest;
|
decltype(this->elements) dest;
|
||||||
for (auto iter = this->elements.begin();
|
for (auto const& iter: this->elements)
|
||||||
iter != this->elements.end(); ++iter)
|
|
||||||
{
|
{
|
||||||
if ((*iter).first < idx)
|
if (iter.first < idx)
|
||||||
{
|
{
|
||||||
dest.insert(*iter);
|
dest.insert(iter);
|
||||||
}
|
}
|
||||||
else if ((*iter).first > idx)
|
else if (iter.first > idx)
|
||||||
{
|
{
|
||||||
dest[(*iter).first - 1] = (*iter).second;
|
dest[iter.first - 1] = iter.second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->elements = dest;
|
this->elements = dest;
|
||||||
|
@ -120,16 +118,15 @@ SparseOHArray::insert(size_t idx, QPDFObjectHandle oh)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
decltype(this->elements) dest;
|
decltype(this->elements) dest;
|
||||||
for (auto iter = this->elements.begin();
|
for (auto const& iter: this->elements)
|
||||||
iter != this->elements.end(); ++iter)
|
|
||||||
{
|
{
|
||||||
if ((*iter).first < idx)
|
if (iter.first < idx)
|
||||||
{
|
{
|
||||||
dest.insert(*iter);
|
dest.insert(iter);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dest[(*iter).first + 1] = (*iter).second;
|
dest[iter.first + 1] = iter.second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->elements = dest;
|
this->elements = dest;
|
||||||
|
|
|
@ -387,13 +387,12 @@ QdfFixer::writeOstream()
|
||||||
auto onum = ostream_id;
|
auto onum = ostream_id;
|
||||||
std::string offsets;
|
std::string offsets;
|
||||||
auto n = ostream_offsets.size();
|
auto n = ostream_offsets.size();
|
||||||
for (auto iter = ostream_offsets.begin();
|
for (auto iter: ostream_offsets)
|
||||||
iter != ostream_offsets.end(); ++iter)
|
|
||||||
{
|
{
|
||||||
(*iter) -= QIntC::to_offset(first);
|
iter -= QIntC::to_offset(first);
|
||||||
++onum;
|
++onum;
|
||||||
offsets += QUtil::int_to_string(onum) + " " +
|
offsets += QUtil::int_to_string(onum) + " " +
|
||||||
QUtil::int_to_string(*iter) + "\n";
|
QUtil::int_to_string(iter) + "\n";
|
||||||
}
|
}
|
||||||
auto offset_adjust = QIntC::to_offset(offsets.size());
|
auto offset_adjust = QIntC::to_offset(offsets.size());
|
||||||
first += offset_adjust;
|
first += offset_adjust;
|
||||||
|
|
|
@ -1694,11 +1694,11 @@ ArgParser::argShowCrypto()
|
||||||
auto crypto = QPDFCryptoProvider::getRegisteredImpls();
|
auto crypto = QPDFCryptoProvider::getRegisteredImpls();
|
||||||
std::string default_crypto = QPDFCryptoProvider::getDefaultProvider();
|
std::string default_crypto = QPDFCryptoProvider::getDefaultProvider();
|
||||||
std::cout << default_crypto << std::endl;
|
std::cout << default_crypto << std::endl;
|
||||||
for (auto iter = crypto.begin(); iter != crypto.end(); ++iter)
|
for (auto const& iter: crypto)
|
||||||
{
|
{
|
||||||
if (*iter != default_crypto)
|
if (iter != default_crypto)
|
||||||
{
|
{
|
||||||
std::cout << *iter << std::endl;
|
std::cout << iter << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3646,7 +3646,7 @@ static std::set<QPDFObjGen>
|
||||||
get_wanted_json_objects(Options& o)
|
get_wanted_json_objects(Options& o)
|
||||||
{
|
{
|
||||||
std::set<QPDFObjGen> wanted_og;
|
std::set<QPDFObjGen> wanted_og;
|
||||||
for (auto iter: o.json_objects)
|
for (auto const& iter: o.json_objects)
|
||||||
{
|
{
|
||||||
bool trailer;
|
bool trailer;
|
||||||
int obj = 0;
|
int obj = 0;
|
||||||
|
|
Loading…
Reference in New Issue