14 namespace swift::misc::aviation
42 if (current == 100.0) {
return code; }
43 if (best < current) { found = code; }
60 if (icaoOrIata.
isEmpty()) {
return {}; }
66 if (icaoIataOrFamily.
isEmpty()) {
return {}; }
74 if (ends.
isEmpty()) {
return {}; }
82 return icaosDesignator.
isEmpty() ? icaosFamily : icaosDesignator;
87 if (iata.
isEmpty()) {
return {}; }
93 if (family.
isEmpty()) {
return {}; }
99 if (manufacturer.
isEmpty()) {
return {}; }
107 if (description.
isEmpty()) {
return {}; }
143 if (codes.
isEmpty()) {
return {}; }
144 if (codes.
size() < 2) {
return codes.
front(); }
146 return codes.
front();
151 if (designator.
isEmpty()) {
return false; }
185 c.
append(withCategory ? icao.getCombinedIcaoCategoryStringWithKey() : icao.getCombinedIcaoStringWithKey());
200 c.
append(icao.getCombinedIataStringWithKey());
270 if (counts.
isEmpty())
return { {}, 0 };
272 [](
const auto &a,
const auto &b) { return a.second < b.second; });
273 return { pair.first, pair.second };
278 bool ignoreIncompleteAndDuplicates,
286 if (!categories.
isEmpty() && catId >= 0)
294 if (ignoreIncompleteAndDuplicates) {
continue; }
303 if (ignoreIncompleteAndDuplicates) {
continue; }
319 const int k = icaoPattern.
getDbKey();
326 if (designator.
isEmpty()) {
return {}; }
350 if (codes.
isEmpty()) {
return icaoPattern; }
351 if (codes.
size() == 1) {
return codes.
front(); }
360 if (codes.
size() == 1) {
return codes.
front(); }
370 if (codes.
size() == 1) {
return codes.
front(); }
382 if (cm.
size() == 1) {
return cm.
front(); }
396 if (code.getDesignator() != designator || code.getManufacturer() != manufacturer)
398 designator = code.getDesignator();
399 manufacturer = code.getManufacturer();
bool contains(const T &object) const
Return true if there is an element equal to given object. Uses the most efficient implementation avai...
size_type size() const
Returns number of elements in the sequence.
void sortBy(K1 key1, Keys... keys)
In-place sort by some particular key(s).
const_reference frontOrDefault() const
Access the first element, or a default-initialized value if the sequence is empty.
CSequence findBy(Predicate p) const
Return a copy containing only those elements for which a given predicate returns true.
int removeIf(Predicate p)
Remove elements for which a given predicate returns true.
void push_back(const T &value)
Appends an element at the end of the sequence.
reference front()
Access the first element.
bool isEmpty() const
Synonym for empty.
void sort(Predicate p)
In-place sort by a given comparator predicate.
Build a QSet more efficiently when calling insert() in a for loop.
void insert(const T &value)
Add an element to the set. Runs in amortized constant time.
Value object for aircraft categories.
bool isNull() const
Null category?
Value object encapsulating a list of ICAO codes.
Value object for ICAO classification.
bool hasModelDescription() const
Has model description?
bool hasFamily() const
Has family?
bool isIataSameAsDesignator() const
IATA code same as designator?
bool hasKnownDesignator() const
Has designator and designator is not "ZZZZ".
const QString & getFamily() const
Family (e.g. A350)
bool hasSpecialDesignator() const
Special designator.
bool matchesDesignatorOrIata(const QString &icaoOrIata) const
Matches ICAO or IATA code.
bool matchesDesignator(const QString &designator, int fuzzyMatch=-1, int *result=nullptr) const
Matches designator string?
bool matchesDesignatorIataOrFamily(const QString &icaoIataOrFamily) const
Matches ICAO, IATA, family?
bool hasIataCode() const
Has IATA code?
const QString & getDesignator() const
Get ICAO designator, e.g. "B737".
bool hasManufacturer() const
Manufacturer.
bool matchesIataCode(const QString &iata, int fuzzyMatch=-1, int *result=nullptr) const
Matches IATA string?
QString getDesignatorDbKey() const
Designator and DB key.
const QString & getModelDescription() const
Get IACO model description, e.g. "A-330-200".
const QString & getIataCode() const
IATA code.
bool hasValidDesignator() const
Valid aircraft designator?
bool isMilitary() const
Military?
static constexpr int DesignatorMinLength
designator length (min)
bool matchesAnyDescription(const QString &candidate) const
Matches any of the (unempty) descriptions.
int getRank() const
Ranking.
bool isDbDuplicate() const
Is DB duplicate? This means a redundant ICAO DB entry.
static CAircraftIcaoCode fromDatabaseJson(const QJsonObject &json, const QString &prefix=QString())
From our database JSON format.
bool isFamilySameAsDesignator() const
Family same as designator?
const CAircraftCategory & getCategory() const
Get category.
bool matchesFamily(const QString &family, int fuzzyMatch=-1, int *result=nullptr) const
Matches family?
void setCategory(const CAircraftCategory &category)
Set category.
static bool isValidDesignator(const QString &designator)
Valid designator?
bool hasCompleteData() const
All data set?
bool hasValidCombinedType() const
Combined type available?
const QString & getManufacturer() const
Get manufacturer, e.g. "Airbus".
Value object encapsulating a list of ICAO codes.
QSet< QString > allFamilies() const
All families, no duplicates.
CAircraftIcaoCodeList findByManufacturer(const QString &manufacturer) const
Find by manufacturer.
QSet< QString > allManufacturers(bool onlyKnownDesignators=true) const
All manufacturers.
void sortByRank()
Sort by rank.
static CAircraftIcaoCodeList fromDatabaseJson(const QJsonArray &array, const CAircraftCategoryList &categories, bool ignoreIncompleteAndDuplicates=true, CAircraftIcaoCodeList *inconsistent=nullptr)
From our database JSON format.
CAircraftIcaoCodeList findByInvalidDesignator() const
Ones with an invalid designator.
CAircraftIcaoCodeList groupByDesignatorAndManufacturer() const
Group by designator and manufacturer.
QStringList toCompleterStrings(bool withIataCodes=false, bool withFamily=false, bool withCategory=true, bool sort=true) const
For selection completion.
QSet< QString > allDesignatorsAndKey(bool noUnspecified=true) const
All ICAO codes and DB key, no duplicates.
CAircraftIcaoCodeList findWithFamily(bool removeWhenSameAsDesignator) const
Those with family.
CAircraftIcaoCodeList findWithIataCode(bool removeWhenSameAsDesignator) const
Those with IATA code.
CAircraftIcaoCodeList findByDescription(const QString &description) const
Find by model description.
CAircraftIcaoCodeList findByDesignator(const QString &designator, int fuzzySearch=-1) const
Find by designator.
CAircraftIcaoCodeList findByFamily(const QString &family, int fuzzySearch=-1) const
Find by family.
CAircraftIcaoCodeList findByMilitaryFlag(bool military) const
By military flag.
CAircraftIcaoCode findFirstByDesignatorAndRank(const QString &designator) const
Find by designator, then best match by rank.
CAircraftIcaoCodeList findMatchingByAnyDescription(const QString &description) const
Find matching by any model description.
void sortByDesignatorManufacturerAndRank()
Sort by designator first, then by manufacturer and rank.
void removeDuplicates()
Remove duplicates as marked by CAircraftIcaoCode::isDbDuplicate.
void sortByDesignatorAndRank()
Sort by designator first, then by rank.
QSet< QString > allDesignators(bool noUnspecified=true) const
All ICAO codes, no duplicates.
bool containsDesignator(const QString &designator) const
Contains designator?
CAircraftIcaoCode findBestFuzzyMatchOrDefault(const QString &designator, int cutoff=50) const
Find by designator.
CAircraftIcaoCodeList()=default
Default constructor.
void removeInvalidCombinedCodes()
Remove invalid combined codes.
CAircraftIcaoCode smartAircraftIcaoSelector(const CAircraftIcaoCode &icaoPattern) const
Best selection by given pattern, also searches IATA and family information.
CAircraftIcaoCodeList findByDesignatorOrIataCode(const QString &icaoOrIata) const
Find by ICAO/IATA code.
CAircraftIcaoCodeList findEndingWith(const QString &icaoEnding) const
Find code ending with string, e.g. "738" finds "B738".
CAircraftIcaoCodeList findByDesignatorIataOrFamily(const QString &icaoIataOrFamily) const
Find by ICAO/IATA code or family.
QPair< QString, int > maxCountManufacturer() const
Uses countManufacturers to find "most important" manufacturer.
CAircraftIcaoCodeList findByIataCode(const QString &iata, int fuzzySearch=-1) const
Find by IATA code.
CAircraftIcaoCodeList findByValidDesignator() const
Ones with a valid designator.
QMap< QString, int > countManufacturers() const
Count by manufacturer.
OBJ findByKey(KEYTYPE key, const OBJ ¬Found=OBJ()) const
Object with key, notFound otherwise.
int getDbKey() const
Get DB key.
bool hasValidDbKey() const
Has valid DB key.
void append(QList< T > &&value)
bool isEmpty() const const
QMap< Key, T >::key_value_iterator keyValueBegin()
QMap< Key, T >::key_value_iterator keyValueEnd()
bool endsWith(QChar c, Qt::CaseSensitivity cs) const const
bool isEmpty() const const
QString left(qsizetype n) &&
qsizetype length() const const
QString toUpper() const const
QString trimmed() const const
#define SWIFT_DEFINE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template definition of mixins for a CSequence subclass.