diff --git a/src/blackmisc/avaircraftlist.cpp b/src/blackmisc/avaircraftlist.cpp index 31c8ea611..06ce4886f 100644 --- a/src/blackmisc/avaircraftlist.cpp +++ b/src/blackmisc/avaircraftlist.cpp @@ -10,7 +10,9 @@ #include "avaircraftlist.h" #include "nwuser.h" #include "predicates.h" +#include "propertyindexallclasses.h" +using namespace BlackMisc; using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Network; @@ -30,6 +32,23 @@ namespace BlackMisc CSequence(other) { } + /* + * Contains callsign + */ + bool CAircraftList::containsCallsign(const CCallsign &callsign) const + { + if (callsign.isEmpty()) { return false; } + return this->contains(&CAircraft::getCallsign, callsign); + } + + /* + * Change for callsign + */ + int CAircraftList::applyIfCallsign(const CCallsign &callsign, const CPropertyIndexVariantMap &variantMap) + { + return this->applyIf(&CAircraft::getCallsign, callsign, variantMap, false); + } + /* * Register metadata */ diff --git a/src/blackmisc/avaircraftlist.h b/src/blackmisc/avaircraftlist.h index 5342ce663..2b3678f98 100644 --- a/src/blackmisc/avaircraftlist.h +++ b/src/blackmisc/avaircraftlist.h @@ -17,6 +17,7 @@ #include "nwuserlist.h" #include "collection.h" #include "sequence.h" +#include "propertyindexvariantmap.h" #include #include #include @@ -25,7 +26,7 @@ namespace BlackMisc { namespace Aviation { - //! Value object encapsulating a list of aircrafts. + //! Value object encapsulating a list of aircraft. class CAircraftList : public CSequence { public: @@ -35,6 +36,12 @@ namespace BlackMisc //! Construct from a base class object. CAircraftList(const CSequence &other); + //! Contains callsign? + bool containsCallsign(const BlackMisc::Aviation::CCallsign &callsign) const; + + //! Apply for given callsign + int applyIfCallsign(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::CPropertyIndexVariantMap &variantMap); + //! Find 0..n stations by callsign CAircraftList findByCallsign(const CCallsign &callsign) const;