From 8dd562a894c2472e3705fe13c212f665b55744a9 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 29 Aug 2015 12:28:24 +0200 Subject: 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 --- apt-pkg/deb/debmetaindex.cc | 63 +++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 34 deletions(-) (limited to 'apt-pkg/deb/debmetaindex.cc') 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::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 *debReleaseIndex::GetIndexFiles() /*{{{*/ return Indexes; Indexes = new std::vector(); - std::vector const Targets = GetIndexTargets(); bool const istrusted = IsTrusted(); - for (std::vector::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 parsePlusMinusOptions(std::string const &Name, / if ((val = Options.find(Name + "+")) != Options.end()) { - std::vector const plusArch = VectorizeString(val->second, ','); - for (std::vector::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 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 const minusArch = VectorizeString(val->second, ','); - for (std::vector::const_iterator minus = minusArch.begin(); minus != minusArch.end(); ++minus) - { - std::vector::iterator kill = std::find(Values.begin(), Values.end(), *minus); - if (kill != Values.end()) - Values.erase(kill); - } + std::vector 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 const alltargets = _config->FindVector(std::string("Acquire::IndexTargets::") + Name, "", true); std::vector mytargets = parsePlusMinusOptions("target", Options, alltargets); - if (mytargets.empty() == false) - for (auto const &target : alltargets) - { - std::map::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::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::const_iterator const opt = Options.find("pdiffs"); if (opt != Options.end()) UsePDiffs = StringToBool(opt->second); } + Deb->AddComponent( IsSrc, Section, -- cgit v1.2.3