CIdentifierList utility function

getMachinesUnique() returns a list of identifiers reduced to maximum
one per machine. If there is more than one per machine, it is undefined
which one will be returned.

refs #881
This commit is contained in:
Roland Winklmeier
2017-03-05 14:03:22 +01:00
committed by Mathew Sutcliffe
parent 54b76d91ad
commit 2ab6e7f41e
2 changed files with 18 additions and 0 deletions

View File

@@ -26,6 +26,20 @@ namespace BlackMisc
return containsBy([&other](const CIdentifier & id) { return ! other.contains(id); });
}
CIdentifierList CIdentifierList::getMachinesUnique() const
{
CIdentifierList il;
for (const CIdentifier &identifier : *this)
{
bool contained = il.containsBy([ = ] (const CIdentifier &ident)
{
return identifier.isFromSameMachine(ident);
});
if (!contained) { il.push_back(identifier); }
}
return il;
}
QStringList CIdentifierList::getMachineNames(bool unique, bool sort) const
{
QStringList codes = this->transform(Predicates::MemberTransform(&CIdentifier::getMachineName));

View File

@@ -43,6 +43,10 @@ namespace BlackMisc
//! This list contains an identifier which is not contained in other.
bool containsAnyNotIn(const CIdentifierList &other) const;
//! Get a list of identifiers reduced to maximum one per machine.
//! If there is more than one per machine, it is undefined which one will be added.
CIdentifierList getMachinesUnique() const;
//! Get machine names
QStringList getMachineNames(bool unique = true, bool sort = true) const;