diff options
author | David Kalnischkies <david@kalnischkies.de> | 2015-08-29 12:28:24 +0200 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2015-08-29 12:33:30 +0200 |
commit | 8dd562a894c2472e3705fe13c212f665b55744a9 (patch) | |
tree | a042b35a689ba64e0a76207115fb937cefa8f0c2 /apt-pkg/deb/debmetaindex.cc | |
parent | d7a51997c30b2098bb60b3397095ec58ec825303 (diff) |
use c++11 algorithms to avoid strange compiler warnings
Nobody knows what makes the 'unable to optimize loop' warning to appear
in the sourceslist minus-options parsing, especially if we use a foreach
loop, but we can replace it with some nice c++11 algorithm+lambda usage,
which also helps in making even clearer what happens here.
And as this would be a lonely change, lets do it for a few more loops as
well where I might or might not have seen the warning at some point in
time, too.
Git-Dch: Ignore
Diffstat (limited to 'apt-pkg/deb/debmetaindex.cc')
-rw-r--r-- | apt-pkg/deb/debmetaindex.cc | 63 |
1 files changed, 29 insertions, 34 deletions
diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index 00dc1eeec..a26b94d82 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -446,10 +446,8 @@ bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll)/*{{{*/ #undef APT_TARGET // special case for --print-uris if (GetAll) - { - for (std::vector<IndexTarget>::const_iterator Target = targets.begin(); Target != targets.end(); ++Target) - new pkgAcqIndex(Owner, TransactionManager, *Target); - } + for (auto const &Target: targets) + new pkgAcqIndex(Owner, TransactionManager, Target); return true; } @@ -537,17 +535,16 @@ std::vector <pkgIndexFile *> *debReleaseIndex::GetIndexFiles() /*{{{*/ return Indexes; Indexes = new std::vector<pkgIndexFile*>(); - std::vector<IndexTarget> const Targets = GetIndexTargets(); bool const istrusted = IsTrusted(); - for (std::vector<IndexTarget>::const_iterator T = Targets.begin(); T != Targets.end(); ++T) + for (auto const &T: GetIndexTargets()) { - std::string const TargetName = T->Option(IndexTarget::CREATED_BY); + std::string const TargetName = T.Option(IndexTarget::CREATED_BY); if (TargetName == "Packages") - Indexes->push_back(new debPackagesIndex(*T, istrusted)); + Indexes->push_back(new debPackagesIndex(T, istrusted)); else if (TargetName == "Sources") - Indexes->push_back(new debSourcesIndex(*T, istrusted)); + Indexes->push_back(new debSourcesIndex(T, istrusted)); else if (TargetName == "Translations") - Indexes->push_back(new debTranslationsIndex(*T)); + Indexes->push_back(new debTranslationsIndex(T)); } return Indexes; } @@ -673,20 +670,17 @@ static std::vector<std::string> parsePlusMinusOptions(std::string const &Name, / if ((val = Options.find(Name + "+")) != Options.end()) { - std::vector<std::string> const plusArch = VectorizeString(val->second, ','); - for (std::vector<std::string>::const_iterator plus = plusArch.begin(); plus != plusArch.end(); ++plus) - if (std::find(Values.begin(), Values.end(), *plus) == Values.end()) - Values.push_back(*plus); + std::vector<std::string> const plus = VectorizeString(val->second, ','); + std::copy_if(plus.begin(), plus.end(), std::back_inserter(Values), [&Values](std::string const &v) { + return std::find(Values.begin(), Values.end(), v) == Values.end(); + }); } if ((val = Options.find(Name + "-")) != Options.end()) { - std::vector<std::string> const minusArch = VectorizeString(val->second, ','); - for (std::vector<std::string>::const_iterator minus = minusArch.begin(); minus != minusArch.end(); ++minus) - { - std::vector<std::string>::iterator kill = std::find(Values.begin(), Values.end(), *minus); - if (kill != Values.end()) - Values.erase(kill); - } + std::vector<std::string> const minus = VectorizeString(val->second, ','); + Values.erase(std::remove_if(Values.begin(), Values.end(), [&minus](std::string const &v) { + return std::find(minus.begin(), minus.end(), v) != minus.end(); + }), Values.end()); } return Values; } @@ -743,25 +737,26 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type /*{{{*/ std::vector<std::string> const alltargets = _config->FindVector(std::string("Acquire::IndexTargets::") + Name, "", true); std::vector<std::string> mytargets = parsePlusMinusOptions("target", Options, alltargets); - if (mytargets.empty() == false) - for (auto const &target : alltargets) - { - std::map<std::string, std::string>::const_iterator const opt = Options.find(target); - if (opt == Options.end()) - continue; - auto const tarItr = std::find(mytargets.begin(), mytargets.end(), target); - bool const optValue = StringToBool(opt->second); - if (optValue == true && tarItr == mytargets.end()) - mytargets.push_back(target); - else if (optValue == false && tarItr != mytargets.end()) - mytargets.erase(std::remove(mytargets.begin(), mytargets.end(), target), mytargets.end()); - } + for (auto const &target : alltargets) + { + std::map<std::string, std::string>::const_iterator const opt = Options.find(target); + if (opt == Options.end()) + continue; + auto const tarItr = std::find(mytargets.begin(), mytargets.end(), target); + bool const optValue = StringToBool(opt->second); + if (optValue == true && tarItr == mytargets.end()) + mytargets.push_back(target); + else if (optValue == false && tarItr != mytargets.end()) + mytargets.erase(std::remove(mytargets.begin(), mytargets.end(), target), mytargets.end()); + } + bool UsePDiffs = _config->FindB("Acquire::PDiffs", true); { std::map<std::string, std::string>::const_iterator const opt = Options.find("pdiffs"); if (opt != Options.end()) UsePDiffs = StringToBool(opt->second); } + Deb->AddComponent( IsSrc, Section, |