Algorithms: Introduce helper Utils::equal

Takes a member (function) pointer and a value and returns a functor,
that takes a instance of the mfp's class and returns whether it's equal
to value. Sounds complicated, but is a common pattern that is easy to
understand.

Change-Id: Iaaeb90488d34ddfd6940dadd4c66705381198fee
Reviewed-by: Nikita Baryshnikov <nib952051@gmail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Daniel Teske
2014-07-10 12:57:06 +02:00
parent eccf1dc1e3
commit 16ac3928a0
13 changed files with 34 additions and 46 deletions

View File

@@ -227,16 +227,12 @@ void Project::setActiveTarget(Target *target)
Target *Project::target(Core::Id id) const
{
return Utils::findOrDefault(d->m_targets, [&id](Target *target) {
return target->id() == id;
});
return Utils::findOrDefault(d->m_targets, Utils::equal(&Target::id, id));
}
Target *Project::target(Kit *k) const
{
return Utils::findOrDefault(d->m_targets, [&k](Target *target) {
return target->kit() == k;
});
return Utils::findOrDefault(d->m_targets, Utils::equal(&Target::kit, k));
}
bool Project::supportsKit(Kit *k, QString *errorMessage) const
@@ -499,9 +495,7 @@ void Project::setup(QList<const BuildInfo *> infoList)
continue;
Target *t = target(k);
if (!t) {
t = Utils::findOrDefault(toRegister, [&k](Target *i){
return i->kit() == k;
});
t = Utils::findOrDefault(toRegister, Utils::equal(&Target::kit, k));
}
if (!t) {
t = new Target(this, k);