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

View File

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

View File

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

View File

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

View File

@@ -9,6 +9,7 @@
#include "blackmisc/aviation/airportlist.h"
#include "blackmisc/mixin/mixincompare.h"
#include "blackmisc/range.h"
#include "blackmisc/setbuilder.h"
#include <QString>
#include <tuple>
@@ -101,18 +102,16 @@ namespace BlackMisc
return names;
}
QStringList CAirportList::allLocations(bool sorted) const
QStringList CAirportList::allLocations() const
{
QSet<QString> locations;
CSetBuilder<QString> 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

View File

@@ -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;

View File

@@ -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 <QJsonArray>
#include <QSet>
#include <QMap>
@@ -101,7 +103,7 @@ namespace BlackMisc
//! All keys as set
QSet<KEYTYPE> toDbKeySet() const
{
QSet<KEYTYPE> keys;
CSetBuilder<KEYTYPE> keys;
for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container())
{
if (!obj.hasValidDbKey()) { continue; }
@@ -113,7 +115,7 @@ namespace BlackMisc
//! As map with DB key/object
QMap<KEYTYPE, OBJ> toDbKeyValueMap() const
{
QMap<KEYTYPE, OBJ> map;
CMapBuilder<KEYTYPE, OBJ> map;
for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::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<QString> toDbKeyStringSet() const
{
QSet<QString> keys;
CSetBuilder<QString> keys;
for (const OBJ &obj : ITimestampObjectList<OBJ, CONTAINER>::container())
{
if (!obj.hasValidDbKey()) { continue; }

View File

@@ -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 <QCoreApplication>
#include <QDir>
@@ -182,7 +183,7 @@ namespace BlackMisc
QSet<QString> CDirectoryUtils::fileNamesToQSet(const QFileInfoList &fileInfoList)
{
QSet<QString> sl;
CSetBuilder<QString> sl;
for (const QFileInfo &info : fileInfoList)
{
sl.insert(info.fileName());
@@ -192,7 +193,7 @@ namespace BlackMisc
QSet<QString> CDirectoryUtils::canonicalFileNamesToQSet(const QFileInfoList &fileInfoList)
{
QSet<QString> sl;
CSetBuilder<QString> sl;
for (const QFileInfo &info : fileInfoList)
{
sl.insert(info.canonicalFilePath());
@@ -202,8 +203,8 @@ namespace BlackMisc
const QSet<QString> CDirectoryUtils::filesToCanonicalNames(const QSet<QString> &fileNames, const QSet<QString> &canonicalFileNames)
{
QSet<QString> found;
if (fileNames.isEmpty()) return found;
CSetBuilder<QString> found;
if (fileNames.isEmpty()) return {};
for (const QString &canonical : canonicalFileNames)
{
if (canonical.endsWith('/')) continue;

View File

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

View File

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

View File

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

View File

@@ -11,6 +11,7 @@
#include "blackmisc/fileutils.h"
#include "blackmisc/json.h"
#include "blackmisc/logcategories.h"
#include "blackmisc/setbuilder.h"
#include <QStringList>
#include <QStringBuilder>
@@ -148,7 +149,7 @@ namespace BlackMisc
CStatusMessageList msgs;
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())
{
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())
{
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<QString> 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<QString> 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()));

View File

@@ -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<QString> CAircraftCfgEntriesList::getTitleSetUpperCase() const
{
QSet<QString> titlesUc;
CSetBuilder<QString> titlesUc;
for (const CAircraftCfgEntries &entries : *this)
{
titlesUc.insert(entries.getTitle().toUpper());

View File

@@ -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<QString> superpackages;
CSetBuilder<QString> 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))
{