summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-08-29 12:28:24 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2015-08-29 12:33:30 +0200
commit8dd562a894c2472e3705fe13c212f665b55744a9 (patch)
treea042b35a689ba64e0a76207115fb937cefa8f0c2
parentd7a51997c30b2098bb60b3397095ec58ec825303 (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
-rw-r--r--apt-pkg/aptconfiguration.cc16
-rw-r--r--apt-pkg/cacheset.cc16
-rw-r--r--apt-pkg/deb/debmetaindex.cc63
-rw-r--r--apt-pkg/sourcelist.cc51
4 files changed, 61 insertions, 85 deletions
diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc
index f5bc18394..ed68244c6 100644
--- a/apt-pkg/aptconfiguration.cc
+++ b/apt-pkg/aptconfiguration.cc
@@ -94,11 +94,9 @@ const Configuration::getCompressionTypes(bool const &Cached) {
continue;
// ignore types we have no app ready to use
std::string const app = _config->Find(method);
- std::vector<APT::Configuration::Compressor>::const_iterator c = compressors.begin();
- for (; c != compressors.end(); ++c)
- if (c->Name == app)
- break;
- if (c == compressors.end())
+ if (std::find_if(compressors.begin(), compressors.end(), [&app](APT::Configuration::Compressor const &c) {
+ return c.Name == app;
+ }) == compressors.end())
continue;
types.push_back(*o);
}
@@ -115,11 +113,9 @@ const Configuration::getCompressionTypes(bool const &Cached) {
if (std::find(types.begin(),types.end(),Types->Tag) != types.end())
continue;
// ignore types we have no app ready to use
- std::vector<APT::Configuration::Compressor>::const_iterator c = compressors.begin();
- for (; c != compressors.end(); ++c)
- if (c->Name == Types->Value)
- break;
- if (c == compressors.end())
+ if (std::find_if(compressors.begin(), compressors.end(), [&Types](APT::Configuration::Compressor const &c) {
+ return c.Name == Types->Value;
+ }) == compressors.end())
continue;
types.push_back(Types->Tag);
}
diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc
index 6a625184e..6b31a4fff 100644
--- a/apt-pkg/cacheset.cc
+++ b/apt-pkg/cacheset.cc
@@ -153,12 +153,8 @@ bool CacheSetHelper::PackageFromRegEx(PackageContainerInterface * const pci, pkg
continue;
pkgCache::PkgIterator Pkg = Grp.FindPkg(arch);
if (Pkg.end() == true) {
- if (archfound == std::string::npos) {
- std::vector<std::string> archs = APT::Configuration::getArchitectures();
- for (std::vector<std::string>::const_iterator a = archs.begin();
- a != archs.end() && Pkg.end() != true; ++a)
- Pkg = Grp.FindPkg(*a);
- }
+ if (archfound == std::string::npos)
+ Pkg = Grp.FindPreferredPkg(true);
if (Pkg.end() == true)
continue;
}
@@ -213,12 +209,8 @@ bool CacheSetHelper::PackageFromFnmatch(PackageContainerInterface * const pci,
continue;
pkgCache::PkgIterator Pkg = Grp.FindPkg(arch);
if (Pkg.end() == true) {
- if (archfound == std::string::npos) {
- std::vector<std::string> archs = APT::Configuration::getArchitectures();
- for (std::vector<std::string>::const_iterator a = archs.begin();
- a != archs.end() && Pkg.end() != true; ++a)
- Pkg = Grp.FindPkg(*a);
- }
+ if (archfound == std::string::npos)
+ Pkg = Grp.FindPreferredPkg(true);
if (Pkg.end() == true)
continue;
}
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,
diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc
index c0b416820..b083da936 100644
--- a/apt-pkg/sourcelist.cc
+++ b/apt-pkg/sourcelist.cc
@@ -322,7 +322,7 @@ void pkgSourceList::Reset()
{
for (const_iterator I = SrcList.begin(); I != SrcList.end(); ++I)
delete *I;
- SrcList.erase(SrcList.begin(),SrcList.end());
+ SrcList.clear();
}
/*}}}*/
// SourceList::Read - Parse the sourcelist file /*{{{*/
@@ -441,34 +441,26 @@ bool pkgSourceList::ParseFileDeb822(string const &File)
}
/*}}}*/
// SourceList::FindIndex - Get the index associated with a file /*{{{*/
-// ---------------------------------------------------------------------
-/* */
+static bool FindInIndexFileContainer(std::vector<pkgIndexFile *> const &Cont, pkgCache::PkgFileIterator const &File, pkgIndexFile *&Found)
+{
+ auto const J = std::find_if(Cont.begin(), Cont.end(), [&File](pkgIndexFile const * const J) {
+ return J->FindInCache(*File.Cache()) == File;
+ });
+ if (J != Cont.end())
+ {
+ Found = (*J);
+ return true;
+ }
+ return false;
+}
bool pkgSourceList::FindIndex(pkgCache::PkgFileIterator File,
pkgIndexFile *&Found) const
{
for (const_iterator I = SrcList.begin(); I != SrcList.end(); ++I)
- {
- vector<pkgIndexFile *> *Indexes = (*I)->GetIndexFiles();
- for (vector<pkgIndexFile *>::const_iterator J = Indexes->begin();
- J != Indexes->end(); ++J)
- {
- if ((*J)->FindInCache(*File.Cache()) == File)
- {
- Found = (*J);
- return true;
- }
- }
- }
- for (vector<pkgIndexFile *>::const_iterator J = VolatileFiles.begin();
- J != VolatileFiles.end(); ++J)
- {
- if ((*J)->FindInCache(*File.Cache()) == File)
- {
- Found = (*J);
+ if (FindInIndexFileContainer(*(*I)->GetIndexFiles(), File, Found))
return true;
- }
- }
- return false;
+
+ return FindInIndexFileContainer(VolatileFiles, File, Found);
}
/*}}}*/
// SourceList::GetIndexes - Load the index files into the downloader /*{{{*/
@@ -517,11 +509,12 @@ time_t pkgSourceList::GetLastModifiedTime()
List = GetListOfFilesInDir(Parts, "list", true);
// calculate the time
- time_t mtime_sources = GetModificationTime(Main);
- for (vector<string>::const_iterator I = List.begin(); I != List.end(); ++I)
- mtime_sources = std::max(mtime_sources, GetModificationTime(*I));
-
- return mtime_sources;
+ std::vector<time_t> modtimes;
+ modtimes.reserve(1 + List.size());
+ modtimes.push_back(GetModificationTime(Main));
+ std::transform(List.begin(), List.end(), std::back_inserter(modtimes), GetModificationTime);
+ auto const maxmtime = std::max_element(modtimes.begin(), modtimes.end());
+ return *maxmtime;
}
/*}}}*/
std::vector<pkgIndexFile*> pkgSourceList::GetVolatileFiles() const /*{{{*/