From 2aeacf49a7537df992bd2dde6d2597d608fe79c4 Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Thu, 26 Aug 2021 23:13:23 +0100 Subject: [PATCH] Issue #114 Use CSetBuilder and CMapBuilder --- .../aviation/aircraftcategorylist.cpp | 17 +++++++-------- .../aviation/aircrafticaocodelist.cpp | 9 ++++---- src/blackmisc/aviation/airlineicaocode.cpp | 3 ++- .../aviation/airlineicaocodelist.cpp | 5 +++-- src/blackmisc/aviation/airportlist.cpp | 9 ++++---- src/blackmisc/aviation/airportlist.h | 2 +- src/blackmisc/db/datastoreobjectlist.h | 8 ++++--- src/blackmisc/directoryutils.cpp | 9 ++++---- src/blackmisc/fileutils.cpp | 3 ++- src/blackmisc/network/entityflags.cpp | 3 ++- .../simulation/aircraftmodellist.cpp | 21 ++++++++++--------- src/blackmisc/simulation/autopublishdata.cpp | 15 +++++++------ .../fscommon/aircraftcfgentrieslist.cpp | 3 ++- .../simulator/xplane/simulatorxplane.cpp | 6 ++++-- 14 files changed, 63 insertions(+), 50 deletions(-) diff --git a/src/blackmisc/aviation/aircraftcategorylist.cpp b/src/blackmisc/aviation/aircraftcategorylist.cpp index 0f25581da..c9a8f812a 100644 --- a/src/blackmisc/aviation/aircraftcategorylist.cpp +++ b/src/blackmisc/aviation/aircraftcategorylist.cpp @@ -8,6 +8,7 @@ #include "blackmisc/aviation/aircraftcategorylist.h" #include "blackmisc/range.h" +#include "blackmisc/setbuilder.h" #include #include @@ -49,7 +50,7 @@ namespace BlackMisc QSet CAircraftCategoryList::getLevelStrings() const { - QSet levels; + CSetBuilder levels; for (const CAircraftCategory &category : *this) { levels.insert(category.getLevelString()); @@ -66,27 +67,25 @@ namespace BlackMisc QList CAircraftCategoryList::getFirstLevels() const { - QSet levels; + CSetBuilder levels; for (const CAircraftCategory &category : *this) { levels.insert(category.getFirstLevel()); } - levels.remove(0); - QList ll = levels.values(); - std::sort(ll.begin(), ll.end()); + QList ll = levels; + ll.removeOne(0); return ll; } QList CAircraftCategoryList::getSecondLevels() const { - QSet levels; + CSetBuilder levels; for (const CAircraftCategory &category : *this) { levels.insert(category.getSecondLevel()); } - levels.remove(0); - QList ll = levels.values(); - std::sort(ll.begin(), ll.end()); + QList ll = levels; + ll.removeOne(0); return ll; } diff --git a/src/blackmisc/aviation/aircrafticaocodelist.cpp b/src/blackmisc/aviation/aircrafticaocodelist.cpp index cba0ca4f5..f4d0ed394 100644 --- a/src/blackmisc/aviation/aircrafticaocodelist.cpp +++ b/src/blackmisc/aviation/aircrafticaocodelist.cpp @@ -9,6 +9,7 @@ #include "aircrafticaocodelist.h" #include "aircraftcategorylist.h" #include "blackmisc/range.h" +#include "blackmisc/setbuilder.h" #include #include @@ -256,7 +257,7 @@ namespace BlackMisc QSet CAircraftIcaoCodeList::allDesignators(bool noUnspecified) const { - QSet c; + CSetBuilder c; for (const CAircraftIcaoCode &icao : *this) { if (noUnspecified && !icao.hasKnownDesignator()) { continue; } @@ -268,7 +269,7 @@ namespace BlackMisc QSet CAircraftIcaoCodeList::allDesignatorsAndKey(bool noUnspecified) const { - QSet c; + CSetBuilder c; for (const CAircraftIcaoCode &icao : *this) { if (noUnspecified && !icao.hasKnownDesignator()) { continue; } @@ -280,7 +281,7 @@ namespace BlackMisc QSet CAircraftIcaoCodeList::allFamilies() const { - QSet c; + CSetBuilder c; for (const CAircraftIcaoCode &icao : *this) { if (!icao.hasFamily()) { continue; } @@ -292,7 +293,7 @@ namespace BlackMisc QSet CAircraftIcaoCodeList::allManufacturers(bool onlyKnownDesignators) const { - QSet c; + CSetBuilder c; for (const CAircraftIcaoCode &icao : *this) { if (onlyKnownDesignators && !icao.hasKnownDesignator()) { continue; } diff --git a/src/blackmisc/aviation/airlineicaocode.cpp b/src/blackmisc/aviation/airlineicaocode.cpp index 6bdc9a12d..b2cab7b6d 100644 --- a/src/blackmisc/aviation/airlineicaocode.cpp +++ b/src/blackmisc/aviation/airlineicaocode.cpp @@ -18,6 +18,7 @@ #include "blackmisc/swiftdirectories.h" #include "blackmisc/directoryutils.h" #include "blackmisc/verify.h" +#include "blackmisc/setbuilder.h" #include #include @@ -503,7 +504,7 @@ namespace BlackMisc QDir dir(CSwiftDirectories::imagesAirlinesDirectory()); Q_ASSERT_X(dir.exists(), Q_FUNC_INFO, "image directory missing"); - QSet ids; + CSetBuilder ids; dir.setFilter(QDir::Files | QDir::NoSymLinks); dir.setSorting(QDir::Name); for (const QFileInfo &fileInfo : dir.entryInfoList()) diff --git a/src/blackmisc/aviation/airlineicaocodelist.cpp b/src/blackmisc/aviation/airlineicaocodelist.cpp index 261349258..6332ee52e 100644 --- a/src/blackmisc/aviation/airlineicaocodelist.cpp +++ b/src/blackmisc/aviation/airlineicaocodelist.cpp @@ -10,6 +10,7 @@ #include "blackmisc/logcategories.h" #include "blackmisc/country.h" #include "blackmisc/range.h" +#include "blackmisc/setbuilder.h" #include #include @@ -359,7 +360,7 @@ namespace BlackMisc QSet CAirlineIcaoCodeList::allDesignators() const { - QSet designators; + CSetBuilder designators; for (const CAirlineIcaoCode &icao : *this) { if (!icao.hasValidDesignator()) { continue; } @@ -370,7 +371,7 @@ namespace BlackMisc QSet CAirlineIcaoCodeList::allVDesignators() const { - QSet designators; + CSetBuilder designators; for (const CAirlineIcaoCode &icao : *this) { if (!icao.hasValidDesignator()) { continue; } diff --git a/src/blackmisc/aviation/airportlist.cpp b/src/blackmisc/aviation/airportlist.cpp index 8551782eb..237fd8b01 100644 --- a/src/blackmisc/aviation/airportlist.cpp +++ b/src/blackmisc/aviation/airportlist.cpp @@ -9,6 +9,7 @@ #include "blackmisc/aviation/airportlist.h" #include "blackmisc/mixin/mixincompare.h" #include "blackmisc/range.h" +#include "blackmisc/setbuilder.h" #include #include @@ -101,18 +102,16 @@ namespace BlackMisc return names; } - QStringList CAirportList::allLocations(bool sorted) const + QStringList CAirportList::allLocations() const { - QSet locations; + CSetBuilder locations; for (const CAirport &airport : *this) { if (airport.getLocation().isEmpty()) { continue; } locations.insert(airport.getLocation()); } - QStringList locs = locations.values(); - if (sorted) { locs.sort(); } - return locs; + return locations; } QStringList CAirportList::allLocationsPlusOptionalDescription(bool sorted) const diff --git a/src/blackmisc/aviation/airportlist.h b/src/blackmisc/aviation/airportlist.h index 1be54c322..f4ceea901 100644 --- a/src/blackmisc/aviation/airportlist.h +++ b/src/blackmisc/aviation/airportlist.h @@ -68,7 +68,7 @@ namespace BlackMisc //! All locations //! \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 QStringList allLocationsPlusOptionalDescription(bool sorted) const; diff --git a/src/blackmisc/db/datastoreobjectlist.h b/src/blackmisc/db/datastoreobjectlist.h index 477ded9a5..8bd680f6f 100644 --- a/src/blackmisc/db/datastoreobjectlist.h +++ b/src/blackmisc/db/datastoreobjectlist.h @@ -14,6 +14,8 @@ #include "blackmisc/timestampobjectlist.h" #include "blackmisc/jsonexception.h" #include "blackmisc/db/datastore.h" +#include "blackmisc/setbuilder.h" +#include "blackmisc/mapbuilder.h" #include #include #include @@ -101,7 +103,7 @@ namespace BlackMisc //! All keys as set QSet toDbKeySet() const { - QSet keys; + CSetBuilder keys; for (const OBJ &obj : ITimestampObjectList::container()) { if (!obj.hasValidDbKey()) { continue; } @@ -113,7 +115,7 @@ namespace BlackMisc //! As map with DB key/object QMap toDbKeyValueMap() const { - QMap map; + CMapBuilder map; for (const OBJ &obj : ITimestampObjectList::container()) { if (!obj.hasValidDbKey()) { continue; } @@ -125,7 +127,7 @@ namespace BlackMisc //! All keys as string set (also integer keys will be converted to string) QSet toDbKeyStringSet() const { - QSet keys; + CSetBuilder keys; for (const OBJ &obj : ITimestampObjectList::container()) { if (!obj.hasValidDbKey()) { continue; } diff --git a/src/blackmisc/directoryutils.cpp b/src/blackmisc/directoryutils.cpp index d524153ca..f101d82bd 100644 --- a/src/blackmisc/directoryutils.cpp +++ b/src/blackmisc/directoryutils.cpp @@ -13,6 +13,7 @@ #include "blackmisc/stringutils.h" #include "blackmisc/network/ping.h" #include "blackmisc/range.h" +#include "blackmisc/setbuilder.h" #include "blackconfig/buildconfig.h" #include #include @@ -182,7 +183,7 @@ namespace BlackMisc QSet CDirectoryUtils::fileNamesToQSet(const QFileInfoList &fileInfoList) { - QSet sl; + CSetBuilder sl; for (const QFileInfo &info : fileInfoList) { sl.insert(info.fileName()); @@ -192,7 +193,7 @@ namespace BlackMisc QSet CDirectoryUtils::canonicalFileNamesToQSet(const QFileInfoList &fileInfoList) { - QSet sl; + CSetBuilder sl; for (const QFileInfo &info : fileInfoList) { sl.insert(info.canonicalFilePath()); @@ -202,8 +203,8 @@ namespace BlackMisc const QSet CDirectoryUtils::filesToCanonicalNames(const QSet &fileNames, const QSet &canonicalFileNames) { - QSet found; - if (fileNames.isEmpty()) return found; + CSetBuilder found; + if (fileNames.isEmpty()) return {}; for (const QString &canonical : canonicalFileNames) { if (canonical.endsWith('/')) continue; diff --git a/src/blackmisc/fileutils.cpp b/src/blackmisc/fileutils.cpp index 5bee3fd31..57402d2c3 100644 --- a/src/blackmisc/fileutils.cpp +++ b/src/blackmisc/fileutils.cpp @@ -8,6 +8,7 @@ #include "blackmisc/fileutils.h" #include "blackmisc/stringutils.h" +#include "blackmisc/setbuilder.h" #include "blackconfig/buildconfig.h" #include @@ -497,7 +498,7 @@ namespace BlackMisc const Qt::CaseSensitivity cs = osFileNameCaseSensitivity(); const bool isCs = isFileNameCaseSensitive(); - QSet machines; + CSetBuilder machines; QString lastMachine; for (const QString &p : paths) diff --git a/src/blackmisc/network/entityflags.cpp b/src/blackmisc/network/entityflags.cpp index a6bc5b820..ee430f20b 100644 --- a/src/blackmisc/network/entityflags.cpp +++ b/src/blackmisc/network/entityflags.cpp @@ -8,6 +8,7 @@ #include "blackmisc/network/entityflags.h" #include "blackmisc/verify.h" +#include "blackmisc/setbuilder.h" #include #include @@ -207,7 +208,7 @@ namespace BlackMisc CEntityFlags::EntitySet CEntityFlags::asSingleEntities(Entity entities) { - QSet s; + CSetBuilder s; CEntityFlags::Entity currentEntity = iterateDbEntities(entities); while (currentEntity != NoEntity) { diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index 5bee4df26..22aa35178 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -18,6 +18,7 @@ #include "blackmisc/directoryutils.h" #include "blackmisc/statusmessage.h" #include "blackmisc/stringutils.h" +#include "blackmisc/setbuilder.h" #include "blackconfig/buildconfig.h" #include @@ -1057,7 +1058,7 @@ namespace BlackMisc QSet CAircraftModelList::getModelStringSet() const { - QSet ms; + CSetBuilder ms; for (const CAircraftModel &model : *this) { if (!model.hasModelString()) { continue; } @@ -1233,7 +1234,7 @@ namespace BlackMisc QSet CAircraftModelList::getAircraftDesignators() const { - QSet designators; + CSetBuilder designators; for (const CAircraftModel &model : *this) { if (!model.hasAircraftDesignator()) { continue; } @@ -1244,8 +1245,8 @@ namespace BlackMisc QSet CAircraftModelList::getAircraftDesignatorsForAirline(const CAirlineIcaoCode &airlineCode) const { - QSet designators; - if (!airlineCode.hasValidDesignator()) { return designators; } + CSetBuilder designators; + if (!airlineCode.hasValidDesignator()) { return {}; } for (const CAircraftModel &model : *this) { if (model.getAirlineIcaoCode() != airlineCode) { continue; } @@ -1286,7 +1287,7 @@ namespace BlackMisc QSet CAircraftModelList::getAirlineDesignators() const { - QSet designators; + CSetBuilder designators; for (const CAircraftModel &model : *this) { if (!model.hasAirlineDesignator()) { continue; } @@ -1297,7 +1298,7 @@ namespace BlackMisc QSet CAircraftModelList::getAirlineVDesignators() const { - QSet designators; + CSetBuilder designators; for (const CAircraftModel &model : *this) { if (!model.hasAirlineDesignator()) { continue; } @@ -1332,7 +1333,7 @@ namespace BlackMisc QSet CAircraftModelList::getCombinedTypes() const { - QSet combinedCodes; + CSetBuilder combinedCodes; for (const CAircraftModel &model : *this) { const QString ct = model.getAircraftIcaoCode().getCombinedType(); @@ -1345,7 +1346,7 @@ namespace BlackMisc QSet CAircraftModelList::getAllFileNames() const { const bool cs = CFileUtils::isFileNameCaseSensitive(); - QSet files; + CSetBuilder files; for (const CAircraftModel &model : *this) { if (!model.hasFileName()) { continue; } @@ -1357,7 +1358,7 @@ namespace BlackMisc QSet CAircraftModelList::getAllUNCFileNames() const { const bool cs = CFileUtils::isFileNameCaseSensitive(); - QSet files; + CSetBuilder files; for (const CAircraftModel &model : *this) { if (!model.hasFileName()) { continue; } @@ -1378,7 +1379,7 @@ namespace BlackMisc QSet CAircraftModelList::getAicraftAndAirlineDesignators(bool withDbId) const { - QSet str; + CSetBuilder str; for (const CAircraftModel &model : *this) { const QString s = (model.hasAircraftDesignator() ? diff --git a/src/blackmisc/simulation/autopublishdata.cpp b/src/blackmisc/simulation/autopublishdata.cpp index 92b3cbf46..b7d7deb57 100644 --- a/src/blackmisc/simulation/autopublishdata.cpp +++ b/src/blackmisc/simulation/autopublishdata.cpp @@ -11,6 +11,7 @@ #include "blackmisc/fileutils.h" #include "blackmisc/json.h" #include "blackmisc/logcategories.h" +#include "blackmisc/setbuilder.h" #include #include @@ -148,7 +149,7 @@ namespace BlackMisc CStatusMessageList msgs; msgs.push_back(CStatusMessage(cats).validationInfo(u"DB models: %1") << dbModels.size()); - QSet unchangedCG; + CSetBuilder unchangedCG; for (const QString &modelString : m_modelStringVsCG.keys()) { const CAircraftModel dbModel = dbModels.findFirstByModelStringOrDefault(modelString); @@ -161,7 +162,7 @@ namespace BlackMisc } } - QSet unchangedSim; + CSetBuilder unchangedSim; for (const QString &modelString : m_modelStringVsSimulatorInfo.keys()) { const CAircraftModel dbModel = dbModels.findFirstByModelStringOrDefault(modelString); @@ -177,14 +178,16 @@ namespace BlackMisc // remove if (!unchangedCG.isEmpty()) { - msgs.push_back(CStatusMessage(cats).validationInfo(u"Removing unchanged CGs: %1") << unchangedCG.size()); - for (const QString &m : unchangedCG) { m_modelStringVsCG.remove(m); } + QList unchangedCGList = std::move(unchangedCG); + 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()) { - msgs.push_back(CStatusMessage(cats).validationInfo(u"Removing unchanged simulators: %1") << unchangedSim.size()); - for (const QString &m : unchangedSim) { m_modelStringVsSimulatorInfo.remove(m); } + QList unchangedSimList = std::move(unchangedSim); + 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())); diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp b/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp index 3b83993ae..630bb1ed8 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp +++ b/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp @@ -12,6 +12,7 @@ #include "stringutils.h" #include "blackmisc/predicates.h" #include "blackmisc/range.h" +#include "blackmisc/setbuilder.h" using namespace BlackMisc; using namespace BlackMisc::Simulation; @@ -57,7 +58,7 @@ namespace BlackMisc QSet CAircraftCfgEntriesList::getTitleSetUpperCase() const { - QSet titlesUc; + CSetBuilder titlesUc; for (const CAircraftCfgEntries &entries : *this) { titlesUc.insert(entries.getTitle().toUpper()); diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index 5120a2f53..f049f3f9f 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -52,6 +52,7 @@ #include "blackmisc/dbusserver.h" #include "blackmisc/iterator.h" #include "blackmisc/logmessage.h" +#include "blackmisc/setbuilder.h" #include "blackconfig/buildconfig.h" #include "dbus/dbus.h" @@ -742,14 +743,15 @@ namespace BlackSimPlugin // comment KB 2019-06 // a package is one xsb_aircraft.txt file BB has 9, X-CSL has 76 - QSet superpackages; + CSetBuilder superpackages; for (const Prefix &package : std::as_const(packages)) { superpackages.insert(package.parent()); } + QStringList superpackagesList = superpackages; const QDir simDir = getSimulatorSettings().getSimulatorDirectoryOrDefault(); - for (const QString &package : std::as_const(superpackages)) + for (const QString &package : superpackagesList) { if (CDirectoryUtils::isSameOrSubDirectoryOf(package, simDir)) {