Issue #114 Use CSetBuilder and CMapBuilder

This commit is contained in:
Mat Sutcliffe
2021-08-26 23:13:23 +01:00
parent f0db8b567f
commit 2aeacf49a7
14 changed files with 63 additions and 50 deletions

View File

@@ -8,6 +8,7 @@
#include "blackmisc/aviation/aircraftcategorylist.h" #include "blackmisc/aviation/aircraftcategorylist.h"
#include "blackmisc/range.h" #include "blackmisc/range.h"
#include "blackmisc/setbuilder.h"
#include <QJsonObject> #include <QJsonObject>
#include <QJsonValue> #include <QJsonValue>
@@ -49,7 +50,7 @@ namespace BlackMisc
QSet<QString> CAircraftCategoryList::getLevelStrings() const QSet<QString> CAircraftCategoryList::getLevelStrings() const
{ {
QSet<QString> levels; CSetBuilder<QString> levels;
for (const CAircraftCategory &category : *this) for (const CAircraftCategory &category : *this)
{ {
levels.insert(category.getLevelString()); levels.insert(category.getLevelString());
@@ -66,27 +67,25 @@ namespace BlackMisc
QList<int> CAircraftCategoryList::getFirstLevels() const QList<int> CAircraftCategoryList::getFirstLevels() const
{ {
QSet<int> levels; CSetBuilder<int> levels;
for (const CAircraftCategory &category : *this) for (const CAircraftCategory &category : *this)
{ {
levels.insert(category.getFirstLevel()); levels.insert(category.getFirstLevel());
} }
levels.remove(0); QList<int> ll = levels;
QList<int> ll = levels.values(); ll.removeOne(0);
std::sort(ll.begin(), ll.end());
return ll; return ll;
} }
QList<int> CAircraftCategoryList::getSecondLevels() const QList<int> CAircraftCategoryList::getSecondLevels() const
{ {
QSet<int> levels; CSetBuilder<int> levels;
for (const CAircraftCategory &category : *this) for (const CAircraftCategory &category : *this)
{ {
levels.insert(category.getSecondLevel()); levels.insert(category.getSecondLevel());
} }
levels.remove(0); QList<int> ll = levels;
QList<int> ll = levels.values(); ll.removeOne(0);
std::sort(ll.begin(), ll.end());
return ll; return ll;
} }

View File

@@ -9,6 +9,7 @@
#include "aircrafticaocodelist.h" #include "aircrafticaocodelist.h"
#include "aircraftcategorylist.h" #include "aircraftcategorylist.h"
#include "blackmisc/range.h" #include "blackmisc/range.h"
#include "blackmisc/setbuilder.h"
#include <QJsonObject> #include <QJsonObject>
#include <QJsonValue> #include <QJsonValue>
@@ -256,7 +257,7 @@ namespace BlackMisc
QSet<QString> CAircraftIcaoCodeList::allDesignators(bool noUnspecified) const QSet<QString> CAircraftIcaoCodeList::allDesignators(bool noUnspecified) const
{ {
QSet<QString> c; CSetBuilder<QString> c;
for (const CAircraftIcaoCode &icao : *this) for (const CAircraftIcaoCode &icao : *this)
{ {
if (noUnspecified && !icao.hasKnownDesignator()) { continue; } if (noUnspecified && !icao.hasKnownDesignator()) { continue; }
@@ -268,7 +269,7 @@ namespace BlackMisc
QSet<QString> CAircraftIcaoCodeList::allDesignatorsAndKey(bool noUnspecified) const QSet<QString> CAircraftIcaoCodeList::allDesignatorsAndKey(bool noUnspecified) const
{ {
QSet<QString> c; CSetBuilder<QString> c;
for (const CAircraftIcaoCode &icao : *this) for (const CAircraftIcaoCode &icao : *this)
{ {
if (noUnspecified && !icao.hasKnownDesignator()) { continue; } if (noUnspecified && !icao.hasKnownDesignator()) { continue; }
@@ -280,7 +281,7 @@ namespace BlackMisc
QSet<QString> CAircraftIcaoCodeList::allFamilies() const QSet<QString> CAircraftIcaoCodeList::allFamilies() const
{ {
QSet<QString> c; CSetBuilder<QString> c;
for (const CAircraftIcaoCode &icao : *this) for (const CAircraftIcaoCode &icao : *this)
{ {
if (!icao.hasFamily()) { continue; } if (!icao.hasFamily()) { continue; }
@@ -292,7 +293,7 @@ namespace BlackMisc
QSet<QString> CAircraftIcaoCodeList::allManufacturers(bool onlyKnownDesignators) const QSet<QString> CAircraftIcaoCodeList::allManufacturers(bool onlyKnownDesignators) const
{ {
QSet<QString> c; CSetBuilder<QString> c;
for (const CAircraftIcaoCode &icao : *this) for (const CAircraftIcaoCode &icao : *this)
{ {
if (onlyKnownDesignators && !icao.hasKnownDesignator()) { continue; } if (onlyKnownDesignators && !icao.hasKnownDesignator()) { continue; }

View File

@@ -18,6 +18,7 @@
#include "blackmisc/swiftdirectories.h" #include "blackmisc/swiftdirectories.h"
#include "blackmisc/directoryutils.h" #include "blackmisc/directoryutils.h"
#include "blackmisc/verify.h" #include "blackmisc/verify.h"
#include "blackmisc/setbuilder.h"
#include <QJsonValue> #include <QJsonValue>
#include <QRegularExpression> #include <QRegularExpression>
@@ -503,7 +504,7 @@ namespace BlackMisc
QDir dir(CSwiftDirectories::imagesAirlinesDirectory()); QDir dir(CSwiftDirectories::imagesAirlinesDirectory());
Q_ASSERT_X(dir.exists(), Q_FUNC_INFO, "image directory missing"); Q_ASSERT_X(dir.exists(), Q_FUNC_INFO, "image directory missing");
QSet<int> ids; CSetBuilder<int> ids;
dir.setFilter(QDir::Files | QDir::NoSymLinks); dir.setFilter(QDir::Files | QDir::NoSymLinks);
dir.setSorting(QDir::Name); dir.setSorting(QDir::Name);
for (const QFileInfo &fileInfo : dir.entryInfoList()) for (const QFileInfo &fileInfo : dir.entryInfoList())

View File

@@ -10,6 +10,7 @@
#include "blackmisc/logcategories.h" #include "blackmisc/logcategories.h"
#include "blackmisc/country.h" #include "blackmisc/country.h"
#include "blackmisc/range.h" #include "blackmisc/range.h"
#include "blackmisc/setbuilder.h"
#include <QJsonObject> #include <QJsonObject>
#include <QJsonValue> #include <QJsonValue>
@@ -359,7 +360,7 @@ namespace BlackMisc
QSet<QString> CAirlineIcaoCodeList::allDesignators() const QSet<QString> CAirlineIcaoCodeList::allDesignators() const
{ {
QSet<QString> designators; CSetBuilder<QString> designators;
for (const CAirlineIcaoCode &icao : *this) for (const CAirlineIcaoCode &icao : *this)
{ {
if (!icao.hasValidDesignator()) { continue; } if (!icao.hasValidDesignator()) { continue; }
@@ -370,7 +371,7 @@ namespace BlackMisc
QSet<QString> CAirlineIcaoCodeList::allVDesignators() const QSet<QString> CAirlineIcaoCodeList::allVDesignators() const
{ {
QSet<QString> designators; CSetBuilder<QString> designators;
for (const CAirlineIcaoCode &icao : *this) for (const CAirlineIcaoCode &icao : *this)
{ {
if (!icao.hasValidDesignator()) { continue; } if (!icao.hasValidDesignator()) { continue; }

View File

@@ -9,6 +9,7 @@
#include "blackmisc/aviation/airportlist.h" #include "blackmisc/aviation/airportlist.h"
#include "blackmisc/mixin/mixincompare.h" #include "blackmisc/mixin/mixincompare.h"
#include "blackmisc/range.h" #include "blackmisc/range.h"
#include "blackmisc/setbuilder.h"
#include <QString> #include <QString>
#include <tuple> #include <tuple>
@@ -101,18 +102,16 @@ namespace BlackMisc
return names; return names;
} }
QStringList CAirportList::allLocations(bool sorted) const QStringList CAirportList::allLocations() const
{ {
QSet<QString> locations; CSetBuilder<QString> locations;
for (const CAirport &airport : *this) for (const CAirport &airport : *this)
{ {
if (airport.getLocation().isEmpty()) { continue; } if (airport.getLocation().isEmpty()) { continue; }
locations.insert(airport.getLocation()); locations.insert(airport.getLocation());
} }
QStringList locs = locations.values(); return locations;
if (sorted) { locs.sort(); }
return locs;
} }
QStringList CAirportList::allLocationsPlusOptionalDescription(bool sorted) const QStringList CAirportList::allLocationsPlusOptionalDescription(bool sorted) const

View File

@@ -68,7 +68,7 @@ namespace BlackMisc
//! All locations //! All locations
//! \remark less locations than airports, since a location (e.g. New Yorrk) homes multiple airports //! \remark less locations than airports, since a location (e.g. New Yorrk) homes multiple airports
QStringList allLocations(bool sorted) const; QStringList allLocations() const;
//! All locations plus optional description //! All locations plus optional description
QStringList allLocationsPlusOptionalDescription(bool sorted) const; QStringList allLocationsPlusOptionalDescription(bool sorted) const;

View File

@@ -14,6 +14,8 @@
#include "blackmisc/timestampobjectlist.h" #include "blackmisc/timestampobjectlist.h"
#include "blackmisc/jsonexception.h" #include "blackmisc/jsonexception.h"
#include "blackmisc/db/datastore.h" #include "blackmisc/db/datastore.h"
#include "blackmisc/setbuilder.h"
#include "blackmisc/mapbuilder.h"
#include <QJsonArray> #include <QJsonArray>
#include <QSet> #include <QSet>
#include <QMap> #include <QMap>
@@ -101,7 +103,7 @@ namespace BlackMisc
//! All keys as set //! All keys as set
QSet<KEYTYPE> toDbKeySet() const QSet<KEYTYPE> toDbKeySet() const
{ {
QSet<KEYTYPE> keys; CSetBuilder<KEYTYPE> keys;
for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container()) for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container())
{ {
if (!obj.hasValidDbKey()) { continue; } if (!obj.hasValidDbKey()) { continue; }
@@ -113,7 +115,7 @@ namespace BlackMisc
//! As map with DB key/object //! As map with DB key/object
QMap<KEYTYPE, OBJ> toDbKeyValueMap() const QMap<KEYTYPE, OBJ> toDbKeyValueMap() const
{ {
QMap<KEYTYPE, OBJ> map; CMapBuilder<KEYTYPE, OBJ> map;
for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container()) for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container())
{ {
if (!obj.hasValidDbKey()) { continue; } if (!obj.hasValidDbKey()) { continue; }
@@ -125,7 +127,7 @@ namespace BlackMisc
//! All keys as string set (also integer keys will be converted to string) //! All keys as string set (also integer keys will be converted to string)
QSet<QString> toDbKeyStringSet() const QSet<QString> toDbKeyStringSet() const
{ {
QSet<QString> keys; CSetBuilder<QString> keys;
for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container()) for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container())
{ {
if (!obj.hasValidDbKey()) { continue; } if (!obj.hasValidDbKey()) { continue; }

View File

@@ -13,6 +13,7 @@
#include "blackmisc/stringutils.h" #include "blackmisc/stringutils.h"
#include "blackmisc/network/ping.h" #include "blackmisc/network/ping.h"
#include "blackmisc/range.h" #include "blackmisc/range.h"
#include "blackmisc/setbuilder.h"
#include "blackconfig/buildconfig.h" #include "blackconfig/buildconfig.h"
#include <QCoreApplication> #include <QCoreApplication>
#include <QDir> #include <QDir>
@@ -182,7 +183,7 @@ namespace BlackMisc
QSet<QString> CDirectoryUtils::fileNamesToQSet(const QFileInfoList &fileInfoList) QSet<QString> CDirectoryUtils::fileNamesToQSet(const QFileInfoList &fileInfoList)
{ {
QSet<QString> sl; CSetBuilder<QString> sl;
for (const QFileInfo &info : fileInfoList) for (const QFileInfo &info : fileInfoList)
{ {
sl.insert(info.fileName()); sl.insert(info.fileName());
@@ -192,7 +193,7 @@ namespace BlackMisc
QSet<QString> CDirectoryUtils::canonicalFileNamesToQSet(const QFileInfoList &fileInfoList) QSet<QString> CDirectoryUtils::canonicalFileNamesToQSet(const QFileInfoList &fileInfoList)
{ {
QSet<QString> sl; CSetBuilder<QString> sl;
for (const QFileInfo &info : fileInfoList) for (const QFileInfo &info : fileInfoList)
{ {
sl.insert(info.canonicalFilePath()); sl.insert(info.canonicalFilePath());
@@ -202,8 +203,8 @@ namespace BlackMisc
const QSet<QString> CDirectoryUtils::filesToCanonicalNames(const QSet<QString> &fileNames, const QSet<QString> &canonicalFileNames) const QSet<QString> CDirectoryUtils::filesToCanonicalNames(const QSet<QString> &fileNames, const QSet<QString> &canonicalFileNames)
{ {
QSet<QString> found; CSetBuilder<QString> found;
if (fileNames.isEmpty()) return found; if (fileNames.isEmpty()) return {};
for (const QString &canonical : canonicalFileNames) for (const QString &canonical : canonicalFileNames)
{ {
if (canonical.endsWith('/')) continue; if (canonical.endsWith('/')) continue;

View File

@@ -8,6 +8,7 @@
#include "blackmisc/fileutils.h" #include "blackmisc/fileutils.h"
#include "blackmisc/stringutils.h" #include "blackmisc/stringutils.h"
#include "blackmisc/setbuilder.h"
#include "blackconfig/buildconfig.h" #include "blackconfig/buildconfig.h"
#include <QCoreApplication> #include <QCoreApplication>
@@ -497,7 +498,7 @@ namespace BlackMisc
const Qt::CaseSensitivity cs = osFileNameCaseSensitivity(); const Qt::CaseSensitivity cs = osFileNameCaseSensitivity();
const bool isCs = isFileNameCaseSensitive(); const bool isCs = isFileNameCaseSensitive();
QSet<QString> machines; CSetBuilder<QString> machines;
QString lastMachine; QString lastMachine;
for (const QString &p : paths) for (const QString &p : paths)

View File

@@ -8,6 +8,7 @@
#include "blackmisc/network/entityflags.h" #include "blackmisc/network/entityflags.h"
#include "blackmisc/verify.h" #include "blackmisc/verify.h"
#include "blackmisc/setbuilder.h"
#include <QStringList> #include <QStringList>
#include <QtGlobal> #include <QtGlobal>
@@ -207,7 +208,7 @@ namespace BlackMisc
CEntityFlags::EntitySet CEntityFlags::asSingleEntities(Entity entities) CEntityFlags::EntitySet CEntityFlags::asSingleEntities(Entity entities)
{ {
QSet<CEntityFlags::Entity> s; CSetBuilder<CEntityFlags::Entity> s;
CEntityFlags::Entity currentEntity = iterateDbEntities(entities); CEntityFlags::Entity currentEntity = iterateDbEntities(entities);
while (currentEntity != NoEntity) while (currentEntity != NoEntity)
{ {

View File

@@ -18,6 +18,7 @@
#include "blackmisc/directoryutils.h" #include "blackmisc/directoryutils.h"
#include "blackmisc/statusmessage.h" #include "blackmisc/statusmessage.h"
#include "blackmisc/stringutils.h" #include "blackmisc/stringutils.h"
#include "blackmisc/setbuilder.h"
#include "blackconfig/buildconfig.h" #include "blackconfig/buildconfig.h"
#include <QStringBuilder> #include <QStringBuilder>
@@ -1057,7 +1058,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getModelStringSet() const QSet<QString> CAircraftModelList::getModelStringSet() const
{ {
QSet<QString> ms; CSetBuilder<QString> ms;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
if (!model.hasModelString()) { continue; } if (!model.hasModelString()) { continue; }
@@ -1233,7 +1234,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getAircraftDesignators() const QSet<QString> CAircraftModelList::getAircraftDesignators() const
{ {
QSet<QString> designators; CSetBuilder<QString> designators;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
if (!model.hasAircraftDesignator()) { continue; } if (!model.hasAircraftDesignator()) { continue; }
@@ -1244,8 +1245,8 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getAircraftDesignatorsForAirline(const CAirlineIcaoCode &airlineCode) const QSet<QString> CAircraftModelList::getAircraftDesignatorsForAirline(const CAirlineIcaoCode &airlineCode) const
{ {
QSet<QString> designators; CSetBuilder<QString> designators;
if (!airlineCode.hasValidDesignator()) { return designators; } if (!airlineCode.hasValidDesignator()) { return {}; }
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
if (model.getAirlineIcaoCode() != airlineCode) { continue; } if (model.getAirlineIcaoCode() != airlineCode) { continue; }
@@ -1286,7 +1287,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getAirlineDesignators() const QSet<QString> CAircraftModelList::getAirlineDesignators() const
{ {
QSet<QString> designators; CSetBuilder<QString> designators;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
if (!model.hasAirlineDesignator()) { continue; } if (!model.hasAirlineDesignator()) { continue; }
@@ -1297,7 +1298,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getAirlineVDesignators() const QSet<QString> CAircraftModelList::getAirlineVDesignators() const
{ {
QSet<QString> designators; CSetBuilder<QString> designators;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
if (!model.hasAirlineDesignator()) { continue; } if (!model.hasAirlineDesignator()) { continue; }
@@ -1332,7 +1333,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getCombinedTypes() const QSet<QString> CAircraftModelList::getCombinedTypes() const
{ {
QSet<QString> combinedCodes; CSetBuilder<QString> combinedCodes;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
const QString ct = model.getAircraftIcaoCode().getCombinedType(); const QString ct = model.getAircraftIcaoCode().getCombinedType();
@@ -1345,7 +1346,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getAllFileNames() const QSet<QString> CAircraftModelList::getAllFileNames() const
{ {
const bool cs = CFileUtils::isFileNameCaseSensitive(); const bool cs = CFileUtils::isFileNameCaseSensitive();
QSet<QString> files; CSetBuilder<QString> files;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
if (!model.hasFileName()) { continue; } if (!model.hasFileName()) { continue; }
@@ -1357,7 +1358,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getAllUNCFileNames() const QSet<QString> CAircraftModelList::getAllUNCFileNames() const
{ {
const bool cs = CFileUtils::isFileNameCaseSensitive(); const bool cs = CFileUtils::isFileNameCaseSensitive();
QSet<QString> files; CSetBuilder<QString> files;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
if (!model.hasFileName()) { continue; } if (!model.hasFileName()) { continue; }
@@ -1378,7 +1379,7 @@ namespace BlackMisc
QSet<QString> CAircraftModelList::getAicraftAndAirlineDesignators(bool withDbId) const QSet<QString> CAircraftModelList::getAicraftAndAirlineDesignators(bool withDbId) const
{ {
QSet<QString> str; CSetBuilder<QString> str;
for (const CAircraftModel &model : *this) for (const CAircraftModel &model : *this)
{ {
const QString s = (model.hasAircraftDesignator() ? const QString s = (model.hasAircraftDesignator() ?

View File

@@ -11,6 +11,7 @@
#include "blackmisc/fileutils.h" #include "blackmisc/fileutils.h"
#include "blackmisc/json.h" #include "blackmisc/json.h"
#include "blackmisc/logcategories.h" #include "blackmisc/logcategories.h"
#include "blackmisc/setbuilder.h"
#include <QStringList> #include <QStringList>
#include <QStringBuilder> #include <QStringBuilder>
@@ -148,7 +149,7 @@ namespace BlackMisc
CStatusMessageList msgs; CStatusMessageList msgs;
msgs.push_back(CStatusMessage(cats).validationInfo(u"DB models: %1") << dbModels.size()); msgs.push_back(CStatusMessage(cats).validationInfo(u"DB models: %1") << dbModels.size());
QSet<QString> unchangedCG; CSetBuilder<QString> unchangedCG;
for (const QString &modelString : m_modelStringVsCG.keys()) for (const QString &modelString : m_modelStringVsCG.keys())
{ {
const CAircraftModel dbModel = dbModels.findFirstByModelStringOrDefault(modelString); const CAircraftModel dbModel = dbModels.findFirstByModelStringOrDefault(modelString);
@@ -161,7 +162,7 @@ namespace BlackMisc
} }
} }
QSet<QString> unchangedSim; CSetBuilder<QString> unchangedSim;
for (const QString &modelString : m_modelStringVsSimulatorInfo.keys()) for (const QString &modelString : m_modelStringVsSimulatorInfo.keys())
{ {
const CAircraftModel dbModel = dbModels.findFirstByModelStringOrDefault(modelString); const CAircraftModel dbModel = dbModels.findFirstByModelStringOrDefault(modelString);
@@ -177,14 +178,16 @@ namespace BlackMisc
// remove // remove
if (!unchangedCG.isEmpty()) if (!unchangedCG.isEmpty())
{ {
msgs.push_back(CStatusMessage(cats).validationInfo(u"Removing unchanged CGs: %1") << unchangedCG.size()); QList<QString> unchangedCGList = std::move(unchangedCG);
for (const QString &m : unchangedCG) { m_modelStringVsCG.remove(m); } msgs.push_back(CStatusMessage(cats).validationInfo(u"Removing unchanged CGs: %1") << unchangedCGList.size());
for (const QString &m : unchangedCGList) { m_modelStringVsCG.remove(m); }
} }
if (!unchangedSim.isEmpty()) if (!unchangedSim.isEmpty())
{ {
msgs.push_back(CStatusMessage(cats).validationInfo(u"Removing unchanged simulators: %1") << unchangedSim.size()); QList<QString> unchangedSimList = std::move(unchangedSim);
for (const QString &m : unchangedSim) { m_modelStringVsSimulatorInfo.remove(m); } msgs.push_back(CStatusMessage(cats).validationInfo(u"Removing unchanged simulators: %1") << unchangedSimList.size());
for (const QString &m : unchangedSimList) { m_modelStringVsSimulatorInfo.remove(m); }
} }
msgs.push_back(CStatusMessage(this).validationInfo(this->getSummary())); msgs.push_back(CStatusMessage(this).validationInfo(this->getSummary()));

View File

@@ -12,6 +12,7 @@
#include "stringutils.h" #include "stringutils.h"
#include "blackmisc/predicates.h" #include "blackmisc/predicates.h"
#include "blackmisc/range.h" #include "blackmisc/range.h"
#include "blackmisc/setbuilder.h"
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackMisc::Simulation; using namespace BlackMisc::Simulation;
@@ -57,7 +58,7 @@ namespace BlackMisc
QSet<QString> CAircraftCfgEntriesList::getTitleSetUpperCase() const QSet<QString> CAircraftCfgEntriesList::getTitleSetUpperCase() const
{ {
QSet<QString> titlesUc; CSetBuilder<QString> titlesUc;
for (const CAircraftCfgEntries &entries : *this) for (const CAircraftCfgEntries &entries : *this)
{ {
titlesUc.insert(entries.getTitle().toUpper()); titlesUc.insert(entries.getTitle().toUpper());

View File

@@ -52,6 +52,7 @@
#include "blackmisc/dbusserver.h" #include "blackmisc/dbusserver.h"
#include "blackmisc/iterator.h" #include "blackmisc/iterator.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
#include "blackmisc/setbuilder.h"
#include "blackconfig/buildconfig.h" #include "blackconfig/buildconfig.h"
#include "dbus/dbus.h" #include "dbus/dbus.h"
@@ -742,14 +743,15 @@ namespace BlackSimPlugin
// comment KB 2019-06 // comment KB 2019-06
// a package is one xsb_aircraft.txt file BB has 9, X-CSL has 76 // a package is one xsb_aircraft.txt file BB has 9, X-CSL has 76
QSet<QString> superpackages; CSetBuilder<QString> superpackages;
for (const Prefix &package : std::as_const(packages)) for (const Prefix &package : std::as_const(packages))
{ {
superpackages.insert(package.parent()); superpackages.insert(package.parent());
} }
QStringList superpackagesList = superpackages;
const QDir simDir = getSimulatorSettings().getSimulatorDirectoryOrDefault(); const QDir simDir = getSimulatorSettings().getSimulatorDirectoryOrDefault();
for (const QString &package : std::as_const(superpackages)) for (const QString &package : superpackagesList)
{ {
if (CDirectoryUtils::isSameOrSubDirectoryOf(package, simDir)) if (CDirectoryUtils::isSameOrSubDirectoryOf(package, simDir))
{ {