refs #290 using a CRange of iterator adaptors in implementating the tertiary predicate-based methods of the derived containers,

but preserving the return-by-copy for API stability
This commit is contained in:
Mathew Sutcliffe
2014-07-04 23:32:38 +01:00
parent 98a6854f8c
commit a4b317b100
17 changed files with 71 additions and 102 deletions

View File

@@ -47,14 +47,20 @@ namespace BlackMisc
return this->findBy(&CAircraft::getCallsign, callsign);
}
/*
* Find by callsigns
*/
CAircraftList CAircraftList::findByCallsigns(const CCallsignList &callsigns) const
{
return this->findBy(Predicates::MemberIsAnyOf(&CAircraft::getCallsign, callsigns));
}
/*
* Find by callsign
*/
CAircraft CAircraftList::findFirstByCallsign(const CCallsign &callsign, const CAircraft &ifNotFound) const
{
CAircraftList aircrafts = this->findByCallsign(callsign);
if (aircrafts.isEmpty()) return ifNotFound;
return aircrafts.front();
return this->findByCallsign(callsign).frontOrDefault(ifNotFound);
}
/*
@@ -62,13 +68,7 @@ namespace BlackMisc
*/
CUserList CAircraftList::getPilots() const
{
CUserList users;
for (auto i = this->begin(); i != this->end(); ++i)
{
CAircraft aircraft = *i;
if (aircraft.getPilot().isValid()) users.push_back(aircraft.getPilot());
}
return users;
return this->findBy(Predicates::MemberValid(&CAircraft::getPilot)).transform(Predicates::MemberTransform(&CAircraft::getPilot));
}
/*