From aafee8eafd1e505b671f685d5176b66dcb14142a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 9 Apr 2015 13:59:40 +0200 Subject: [PATCH] refs #402, post merge feedback by MS --- samples/cli_client/client.cpp | 2 +- samples/cli_client/client.h | 4 +++- src/blackcore/airspace_monitor.cpp | 5 ++--- src/blackcore/airspace_monitor.h | 8 +++---- src/blackcore/interpolator.cpp | 2 +- src/blackcore/interpolator.h | 2 +- src/blackcore/network_vatlib.cpp | 2 +- src/blackcore/network_vatlib.h | 2 +- src/blackcore/simulator.cpp | 4 ++-- src/blackcore/simulator.h | 4 ++-- src/blackcore/vatsimbookingreader.cpp | 13 +++-------- src/blackcore/vatsimdatafilereader.cpp | 13 +++-------- .../aviation/aircraftsituationlist.h | 7 ------ src/blackmisc/aviation/airportlist.h | 7 ------ src/blackmisc/aviation/callsignobjectlist.cpp | 12 ++++++++++ src/blackmisc/aviation/callsignobjectlist.h | 4 ++-- src/blackmisc/geo/geoobjectlist.cpp | 12 ++++++++++ src/blackmisc/geo/geoobjectlist.h | 4 ++-- src/blackmisc/network/textmessagelist.h | 7 ------ .../simulation/ownaircraftprovider.cpp | 12 +++++----- .../simulation/ownaircraftprovider.h | 18 +++++++-------- .../simulation/remoteaircraftprovider.cpp | 22 +++++++++---------- .../simulation/remoteaircraftprovider.h | 16 +++++++------- .../simulation/remoteaircraftproviderdummy.h | 4 ++-- src/blackmisc/statusmessagelist.h | 6 ----- src/blackmisc/threadedreader.cpp | 9 +------- src/blackmisc/threadedreader.h | 4 ---- src/blackmisc/timestampobjectlist.cpp | 12 ++++++++++ src/blackmisc/timestampobjectlist.h | 4 ++-- src/blackmisc/worker.cpp | 1 + src/blackmisc/worker.h | 2 +- 31 files changed, 105 insertions(+), 119 deletions(-) diff --git a/samples/cli_client/client.cpp b/samples/cli_client/client.cpp index 61bb49bce..a5ccc0c7d 100644 --- a/samples/cli_client/client.cpp +++ b/samples/cli_client/client.cpp @@ -19,7 +19,7 @@ using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Geo; Client::Client(QObject *parent) - : QObject(parent), COwnAircraftProviderSupport(COwnAircraftProviderDummy::instance()), + : QObject(parent), COwnAircraftAware(COwnAircraftProviderDummy::instance()), m_net(new BlackCore::CNetworkVatlib(COwnAircraftProviderDummy::instance(), this)) { diff --git a/samples/cli_client/client.h b/samples/cli_client/client.h index 088b4ad2f..a23f85d97 100644 --- a/samples/cli_client/client.h +++ b/samples/cli_client/client.h @@ -19,7 +19,9 @@ #include #include -class Client : public QObject, BlackMisc::Simulation::COwnAircraftProviderSupport +class Client : + public QObject, + public BlackMisc::Simulation::COwnAircraftAware { Q_OBJECT diff --git a/src/blackcore/airspace_monitor.cpp b/src/blackcore/airspace_monitor.cpp index d9d934957..d5b40c9f2 100644 --- a/src/blackcore/airspace_monitor.cpp +++ b/src/blackcore/airspace_monitor.cpp @@ -28,7 +28,7 @@ namespace BlackCore CAirspaceMonitor::CAirspaceMonitor(QObject *parent, const BlackMisc::Simulation::IOwnAircraftProviderReadOnly *ownAircraftProvider, INetwork *network, CVatsimBookingReader *bookings, CVatsimDataFileReader *dataFile) : QObject(parent), - COwnAircraftProviderSupportReadOnly(ownAircraftProvider), + COwnAircraftAwareReadOnly(ownAircraftProvider), m_network(network), m_vatsimBookingReader(bookings), m_vatsimDataFileReader(dataFile), m_atcWatchdog(this), m_aircraftWatchdog(this) { @@ -144,8 +144,7 @@ namespace BlackCore CSimulatedAircraft aircraft = m_aircraftInRange.findFirstByCallsign(callsign); if (!aircraft.hasValidCallsign()) { return false; } - CAircraftModel newModel(model); - aircraft.setModel(newModel); // this consolidates all common data such as callsign, ICAO ... + aircraft.setModel(model); // this consolidates all common data such as callsign, ICAO ... CPropertyIndexVariantMap vm(CSimulatedAircraft::IndexModel, aircraft.getModel().toCVariant()); int c = m_aircraftInRange.applyIfCallsign(callsign, vm); diff --git a/src/blackcore/airspace_monitor.h b/src/blackcore/airspace_monitor.h index 54d0cfdfe..e9d40152a 100644 --- a/src/blackcore/airspace_monitor.h +++ b/src/blackcore/airspace_monitor.h @@ -34,8 +34,8 @@ namespace BlackCore */ class CAirspaceMonitor : public QObject, - public BlackMisc::Simulation::IRemoteAircraftProvider, // those data will be provided from the class CAirspaceMonitor - public BlackMisc::Simulation::COwnAircraftProviderSupportReadOnly // used to obtain in memory inofmration about own aircraft + public BlackMisc::Simulation::IRemoteAircraftProvider, // those data will be provided from the class CAirspaceMonitor + public BlackMisc::Simulation::COwnAircraftAwareReadOnly // used to obtain in memory inofmration about own aircraft { Q_OBJECT Q_INTERFACES(BlackMisc::Simulation::IRemoteAircraftProvider) @@ -131,8 +131,8 @@ namespace BlackCore std::function removedAircraftSlot ) override; - const qint64 AircraftSituationsRemovedOffsetMs = 30 * 1000; //!< situations older than now - offset will be removed - const qint64 AircraftPartsRemoveOffsetMs = 30* 1000; //!< parts older than now - offset will be removed + static const qint64 AircraftSituationsRemovedOffsetMs = 30 * 1000; //!< situations older than now - offset will be removed + static const qint64 AircraftPartsRemoveOffsetMs = 30* 1000; //!< parts older than now - offset will be removed signals: diff --git a/src/blackcore/interpolator.cpp b/src/blackcore/interpolator.cpp index e6d05573a..bfb18db61 100644 --- a/src/blackcore/interpolator.cpp +++ b/src/blackcore/interpolator.cpp @@ -21,7 +21,7 @@ namespace BlackCore IInterpolator::IInterpolator(IRemoteAircraftProviderReadOnly *provider, const QString &workerName, QObject *parent) : CContinuousWorker(parent, workerName), - CRemoteAircraftProviderSupportReadOnly(provider) + CRemoteAircraftAwareReadOnly(provider) { Q_ASSERT(provider); this->m_situationsByCallsign = this->remoteAircraftSituations().splitPerCallsign(); diff --git a/src/blackcore/interpolator.h b/src/blackcore/interpolator.h index 8f9a5a38a..2b49442cf 100644 --- a/src/blackcore/interpolator.h +++ b/src/blackcore/interpolator.h @@ -23,7 +23,7 @@ namespace BlackCore //! Interpolator, calculation inbetween positions class IInterpolator : public BlackMisc::CContinuousWorker, - public BlackMisc::Simulation::CRemoteAircraftProviderSupportReadOnly + public BlackMisc::Simulation::CRemoteAircraftAwareReadOnly { Q_OBJECT diff --git a/src/blackcore/network_vatlib.cpp b/src/blackcore/network_vatlib.cpp index 9f7b32415..270e2156d 100644 --- a/src/blackcore/network_vatlib.cpp +++ b/src/blackcore/network_vatlib.cpp @@ -36,7 +36,7 @@ namespace BlackCore void exceptionDispatcher(const char *caller); CNetworkVatlib::CNetworkVatlib(Simulation::IOwnAircraftProvider *ownAircraft, QObject *parent) - : INetwork(parent), COwnAircraftProviderSupport(ownAircraft), + : INetwork(parent), COwnAircraftAware(ownAircraft), m_loginMode(LoginNormal), m_status(vatStatusIdle), m_fsdTextCodec(QTextCodec::codecForName("latin1")), diff --git a/src/blackcore/network_vatlib.h b/src/blackcore/network_vatlib.h index aebbe0add..3f9b19e22 100644 --- a/src/blackcore/network_vatlib.h +++ b/src/blackcore/network_vatlib.h @@ -29,7 +29,7 @@ namespace BlackCore */ class CNetworkVatlib : public INetwork, - public BlackMisc::Simulation::COwnAircraftProviderSupport // network vatlib consumes own aircraft data and sets ICAO/callsign data + public BlackMisc::Simulation::COwnAircraftAware // network vatlib consumes own aircraft data and sets ICAO/callsign data { Q_OBJECT diff --git a/src/blackcore/simulator.cpp b/src/blackcore/simulator.cpp index e8d03f49a..6fd452d29 100644 --- a/src/blackcore/simulator.cpp +++ b/src/blackcore/simulator.cpp @@ -37,8 +37,8 @@ namespace BlackCore BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) : ISimulator(parent), - COwnAircraftProviderSupport(ownAircraftProvider), - CRemoteAircraftProviderSupport(remoteAircraftProvider) + COwnAircraftAware(ownAircraftProvider), + CRemoteAircraftAware(remoteAircraftProvider) { m_oneSecondTimer = new QTimer(this); connect(this->m_oneSecondTimer, &QTimer::timeout, this, &CSimulatorCommon::ps_oneSecondTimer); diff --git a/src/blackcore/simulator.h b/src/blackcore/simulator.h index f8a89e71c..43d20b696 100644 --- a/src/blackcore/simulator.h +++ b/src/blackcore/simulator.h @@ -259,8 +259,8 @@ namespace BlackCore //! Common base class with providers, interface and some base functionality class CSimulatorCommon : public BlackCore::ISimulator, - public BlackMisc::Simulation::COwnAircraftProviderSupport, // gain access to in memor own aircraft data - public BlackMisc::Simulation::CRemoteAircraftProviderSupport // gain access to in memory remote aircraft data + public BlackMisc::Simulation::COwnAircraftAware, // gain access to in memor own aircraft data + public BlackMisc::Simulation::CRemoteAircraftAware // gain access to in memory remote aircraft data { Q_OBJECT diff --git a/src/blackcore/vatsimbookingreader.cpp b/src/blackcore/vatsimbookingreader.cpp index 2263ea7a7..fdc44393e 100644 --- a/src/blackcore/vatsimbookingreader.cpp +++ b/src/blackcore/vatsimbookingreader.cpp @@ -32,16 +32,9 @@ namespace BlackCore void CVatsimBookingReader::readInBackgroundThread() { - if (QThread::currentThread() == QObject::thread()) - { - ps_read(); - } - else - { - bool s = QMetaObject::invokeMethod(this, "ps_read", Qt::BlockingQueuedConnection); - Q_ASSERT(s); - Q_UNUSED(s); - } + bool s = QMetaObject::invokeMethod(this, "ps_read"); + Q_ASSERT(s); + Q_UNUSED(s); } void CVatsimBookingReader::ps_read() diff --git a/src/blackcore/vatsimdatafilereader.cpp b/src/blackcore/vatsimdatafilereader.cpp index 1f9d81813..1fb1e4a20 100644 --- a/src/blackcore/vatsimdatafilereader.cpp +++ b/src/blackcore/vatsimdatafilereader.cpp @@ -126,16 +126,9 @@ namespace BlackCore void CVatsimDataFileReader::readInBackgroundThread() { - if (QThread::currentThread() == QObject::thread()) - { - ps_read(); - } - else - { - bool s = QMetaObject::invokeMethod(this, "ps_read", Qt::BlockingQueuedConnection); - Q_ASSERT(s); - Q_UNUSED(s); - } + bool s = QMetaObject::invokeMethod(this, "ps_read"); + Q_ASSERT(s); + Q_UNUSED(s); } void CVatsimDataFileReader::ps_read() diff --git a/src/blackmisc/aviation/aircraftsituationlist.h b/src/blackmisc/aviation/aircraftsituationlist.h index c180428dd..144233c18 100644 --- a/src/blackmisc/aviation/aircraftsituationlist.h +++ b/src/blackmisc/aviation/aircraftsituationlist.h @@ -43,13 +43,6 @@ namespace BlackMisc //! Metadata static void registerMetadata(); - protected: - //! Myself - virtual const CAircraftSituationList &container() const override { return *this; } - - //! Myself - virtual CAircraftSituationList &container() override { return *this; } - }; } // namespace } // namespace diff --git a/src/blackmisc/aviation/airportlist.h b/src/blackmisc/aviation/airportlist.h index 5444624ae..a84e598fc 100644 --- a/src/blackmisc/aviation/airportlist.h +++ b/src/blackmisc/aviation/airportlist.h @@ -55,13 +55,6 @@ namespace BlackMisc //! Register metadata static void registerMetadata(); - protected: - //! Myself - virtual const CAirportList &container() const override { return *this; } - - //! Myself - virtual CAirportList &container() override { return *this; } - }; } //namespace } // namespace diff --git a/src/blackmisc/aviation/callsignobjectlist.cpp b/src/blackmisc/aviation/callsignobjectlist.cpp index 62d20c0b4..e4c2a7d45 100644 --- a/src/blackmisc/aviation/callsignobjectlist.cpp +++ b/src/blackmisc/aviation/callsignobjectlist.cpp @@ -24,6 +24,18 @@ namespace BlackMisc ICallsignObjectList::ICallsignObjectList() { } + template + const CONTAINER &ICallsignObjectList::container() const + { + return static_cast(*this); + } + + template + CONTAINER &ICallsignObjectList::container() + { + return static_cast(*this); + } + template bool ICallsignObjectList::containsCallsign(const CCallsign &callsign) const { diff --git a/src/blackmisc/aviation/callsignobjectlist.h b/src/blackmisc/aviation/callsignobjectlist.h index 157d6ce3b..5c53e8d1f 100644 --- a/src/blackmisc/aviation/callsignobjectlist.h +++ b/src/blackmisc/aviation/callsignobjectlist.h @@ -77,10 +77,10 @@ namespace BlackMisc ICallsignObjectList(); //! Container - virtual const CONTAINER &container() const = 0; + const CONTAINER &container() const; //! Container - virtual CONTAINER &container() = 0; + CONTAINER &container(); }; } //namespace diff --git a/src/blackmisc/geo/geoobjectlist.cpp b/src/blackmisc/geo/geoobjectlist.cpp index ef66a0f15..0e4f68088 100644 --- a/src/blackmisc/geo/geoobjectlist.cpp +++ b/src/blackmisc/geo/geoobjectlist.cpp @@ -24,6 +24,18 @@ namespace BlackMisc IGeoObjectList::IGeoObjectList() { } + template + const CONTAINER &IGeoObjectList::container() const + { + return static_cast(*this); + } + + template + CONTAINER &IGeoObjectList::container() + { + return static_cast(*this); + } + template IGeoObjectWithRelativePositionList::IGeoObjectWithRelativePositionList() { } diff --git a/src/blackmisc/geo/geoobjectlist.h b/src/blackmisc/geo/geoobjectlist.h index c09813283..778b72df2 100644 --- a/src/blackmisc/geo/geoobjectlist.h +++ b/src/blackmisc/geo/geoobjectlist.h @@ -39,10 +39,10 @@ namespace BlackMisc IGeoObjectList(); //! Container - virtual const CONTAINER &container() const = 0; + const CONTAINER &container() const; //! Container - virtual CONTAINER &container() = 0; + CONTAINER &container(); }; //! List of objects with geo coordinates. diff --git a/src/blackmisc/network/textmessagelist.h b/src/blackmisc/network/textmessagelist.h index 2d6a3950c..a4e834bdb 100644 --- a/src/blackmisc/network/textmessagelist.h +++ b/src/blackmisc/network/textmessagelist.h @@ -89,13 +89,6 @@ namespace BlackMisc //! Register metadata static void registerMetadata(); - protected: - //! Myself - virtual const CTextMessageList &container() const override { return *this; } - - //! Myself - virtual CTextMessageList &container() override { return *this; } - }; } //namespace } // namespace diff --git a/src/blackmisc/simulation/ownaircraftprovider.cpp b/src/blackmisc/simulation/ownaircraftprovider.cpp index ed80f9121..857a8ead7 100644 --- a/src/blackmisc/simulation/ownaircraftprovider.cpp +++ b/src/blackmisc/simulation/ownaircraftprovider.cpp @@ -18,37 +18,37 @@ namespace BlackMisc namespace Simulation { - const CSimulatedAircraft &COwnAircraftProviderSupportReadOnly::ownAircraft() const + const CSimulatedAircraft &COwnAircraftAwareReadOnly::ownAircraft() const { Q_ASSERT_X(this->m_ownAircraftProvider, "ownAircraft", "No object available"); return this->m_ownAircraftProvider->ownAircraft(); } - const CSimulatedAircraft &COwnAircraftProviderSupport::ownAircraft() const + const CSimulatedAircraft &COwnAircraftAware::ownAircraft() const { Q_ASSERT_X(this->m_ownAircraftProvider, "ownAircraft", "No object available"); return this->m_ownAircraftProvider->ownAircraft(); } - CSimulatedAircraft &COwnAircraftProviderSupport::ownAircraft() + CSimulatedAircraft &COwnAircraftAware::ownAircraft() { Q_ASSERT_X(this->m_ownAircraftProvider, "ownAircraft", "No object available"); return this->m_ownAircraftProvider->ownAircraft(); } - bool COwnAircraftProviderSupport::providerUpdateCockpit(const CComSystem &com1, const CComSystem &com2, const CTransponder &transponder, const QString &originator) + bool COwnAircraftAware::providerUpdateCockpit(const CComSystem &com1, const CComSystem &com2, const CTransponder &transponder, const QString &originator) { Q_ASSERT_X(this->m_ownAircraftProvider, "providerUpdateCockpit", "No object available"); return this->m_ownAircraftProvider->updateCockpit(com1, com2, transponder, originator); } - bool COwnAircraftProviderSupport::providerUpdateActiveComFrequency(const CFrequency &frequency, int comUnit, const QString &originator) + bool COwnAircraftAware::providerUpdateActiveComFrequency(const CFrequency &frequency, int comUnit, const QString &originator) { Q_ASSERT_X(this->m_ownAircraftProvider, "providerUpdateActiveComFrequency", "No object available"); return this->m_ownAircraftProvider->updateActiveComFrequency(frequency, comUnit, originator); } - bool COwnAircraftProviderSupport::providerUpdateSelcal(const CSelcal &selcal, const QString &originator) + bool COwnAircraftAware::providerUpdateSelcal(const CSelcal &selcal, const QString &originator) { Q_ASSERT_X(this->m_ownAircraftProvider, "providerUpdateSelcal", "No object available"); return this->m_ownAircraftProvider->updateSelcal(selcal, originator); diff --git a/src/blackmisc/simulation/ownaircraftprovider.h b/src/blackmisc/simulation/ownaircraftprovider.h index 9e4424e76..dd6d1e01d 100644 --- a/src/blackmisc/simulation/ownaircraftprovider.h +++ b/src/blackmisc/simulation/ownaircraftprovider.h @@ -70,13 +70,13 @@ namespace BlackMisc static COwnAircraftProviderDummy *instance(); //! \copydoc IOwnAircraftProviderReadOnly::ownAircraft - virtual const CSimulatedAircraft &ownAircraft() const { return this->m_ownAircraft; } + virtual const CSimulatedAircraft &ownAircraft() const override { return this->m_ownAircraft; } //! \copydoc IOwnAircraftProvider::ownAircraft - virtual CSimulatedAircraft &ownAircraft() { return this->m_ownAircraft; } + virtual CSimulatedAircraft &ownAircraft() override { return this->m_ownAircraft; } //! \copydoc IOwnAircraftProvider::getOwnAircraft - virtual CSimulatedAircraft getOwnAircraft() const { return this->m_ownAircraft; } + virtual CSimulatedAircraft getOwnAircraft() const override { return this->m_ownAircraft; } public slots: //! \copydoc IOwnAircraftProvider::updateCockpit @@ -92,8 +92,8 @@ namespace BlackMisc BlackMisc::Simulation::CSimulatedAircraft m_ownAircraft; }; - //! Class which can be directly used providing access to such an interface - class COwnAircraftProviderSupportReadOnly + //! Delegating class which can be directly used to access an \sa IOwnAircraftProviderReadOnly instance + class COwnAircraftAwareReadOnly { public: //! \copydoc IOwnAircraftProviderReadOnly::ownAircraft @@ -101,12 +101,12 @@ namespace BlackMisc protected: //! Constructor - COwnAircraftProviderSupportReadOnly(const IOwnAircraftProviderReadOnly *ownAircraftProvider) : m_ownAircraftProvider(ownAircraftProvider) {} + COwnAircraftAwareReadOnly(const IOwnAircraftProviderReadOnly *ownAircraftProvider) : m_ownAircraftProvider(ownAircraftProvider) {} const IOwnAircraftProviderReadOnly *m_ownAircraftProvider = nullptr; //!< access to object }; - //! Delegating class which can be directly used providing access to such an interface - class COwnAircraftProviderSupport + //! Delegating class which can be directly used to access an \sa IOwnAircraftProvider instance + class COwnAircraftAware { public: //! \copydoc IOwnAircraftProviderReadOnly::ownAircraft @@ -126,7 +126,7 @@ namespace BlackMisc protected: //! Constructor - COwnAircraftProviderSupport(IOwnAircraftProvider *ownAircraftProvider) : m_ownAircraftProvider(ownAircraftProvider) { Q_ASSERT(ownAircraftProvider); } + COwnAircraftAware(IOwnAircraftProvider *ownAircraftProvider) : m_ownAircraftProvider(ownAircraftProvider) { Q_ASSERT(ownAircraftProvider); } IOwnAircraftProvider *m_ownAircraftProvider = nullptr; //!< access to object }; diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index c42dcfaa8..e680e4419 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -16,67 +16,67 @@ namespace BlackMisc namespace Simulation { - const CSimulatedAircraftList &CRemoteAircraftProviderSupportReadOnly::remoteAircraft() const + const CSimulatedAircraftList &CRemoteAircraftAwareReadOnly::remoteAircraft() const { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraft", "No object available"); return this->m_remoteAircraftProvider->remoteAircraft(); } - const Aviation::CAircraftSituationList &CRemoteAircraftProviderSupportReadOnly::remoteAircraftSituations() const + const Aviation::CAircraftSituationList &CRemoteAircraftAwareReadOnly::remoteAircraftSituations() const { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraftSituations", "No object available"); return this->m_remoteAircraftProvider->remoteAircraftSituations(); } - const Aviation::CAircraftPartsList &CRemoteAircraftProviderSupportReadOnly::remoteAircraftParts() const + const Aviation::CAircraftPartsList &CRemoteAircraftAwareReadOnly::remoteAircraftParts() const { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraftParts", "No object available"); return this->m_remoteAircraftProvider->remoteAircraftParts(); } - const CSimulatedAircraftList &CRemoteAircraftProviderSupport::remoteAircraft() const + const CSimulatedAircraftList &CRemoteAircraftAware::remoteAircraft() const { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraft", "No object available"); return this->m_remoteAircraftProvider->remoteAircraft(); } - CSimulatedAircraftList &CRemoteAircraftProviderSupport::remoteAircraft() + CSimulatedAircraftList &CRemoteAircraftAware::remoteAircraft() { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraft", "No object available"); return this->m_remoteAircraftProvider->remoteAircraft(); } - const CAircraftSituationList &CRemoteAircraftProviderSupport::remoteAircraftSituations() const + const CAircraftSituationList &CRemoteAircraftAware::remoteAircraftSituations() const { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraftSituations", "No object available"); return this->m_remoteAircraftProvider->remoteAircraftSituations(); } - CAircraftSituationList &CRemoteAircraftProviderSupport::remoteAircraftSituations() + CAircraftSituationList &CRemoteAircraftAware::remoteAircraftSituations() { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraftSituations", "No object available"); return this->m_remoteAircraftProvider->remoteAircraftSituations(); } - const CAircraftPartsList &CRemoteAircraftProviderSupport::remoteAircraftParts() const + const CAircraftPartsList &CRemoteAircraftAware::remoteAircraftParts() const { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraftParts", "No object available"); return this->m_remoteAircraftProvider->remoteAircraftParts(); } - CAircraftPartsList &CRemoteAircraftProviderSupport::remoteAircraftParts() + CAircraftPartsList &CRemoteAircraftAware::remoteAircraftParts() { Q_ASSERT_X(this->m_remoteAircraftProvider, "renderedAircraftParts", "No object available"); return this->m_remoteAircraftProvider->remoteAircraftParts(); } - bool CRemoteAircraftProviderSupport::providerUpdateAircraftModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const QString &originator) + bool CRemoteAircraftAware::providerUpdateAircraftModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const QString &originator) { Q_ASSERT_X(this->m_remoteAircraftProvider, "providerUpdateAircraftModel", "No object available"); return this->m_remoteAircraftProvider->updateAircraftModel(callsign, model, originator); } - bool CRemoteAircraftProviderSupport::providerUpdateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRedering, const QString &originator) + bool CRemoteAircraftAware::providerUpdateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRedering, const QString &originator) { Q_ASSERT_X(this->m_remoteAircraftProvider, "providerUpdateAircraftEnabled", "No object available"); return this->m_remoteAircraftProvider->updateAircraftEnabled(callsign, enabledForRedering, originator); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.h b/src/blackmisc/simulation/remoteaircraftprovider.h index 399811103..242c57276 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.h +++ b/src/blackmisc/simulation/remoteaircraftprovider.h @@ -89,8 +89,8 @@ namespace BlackMisc virtual bool updateFastPositionUpdates(const BlackMisc::Aviation::CCallsign &callsign, bool enableFastPositonUpdates, const QString &originator) = 0; }; - //! Class which can be directly used providing access to such an interface - class CRemoteAircraftProviderSupportReadOnly + //! Class which can be directly used to access an \sa IRemoteAircraftProviderReadOnly object + class CRemoteAircraftAwareReadOnly { public: //! \copydoc IRemoteAircraftProviderReadOnly::renderedAircraft @@ -103,16 +103,16 @@ namespace BlackMisc virtual const BlackMisc::Aviation::CAircraftPartsList &remoteAircraftParts() const; //! Destructor - virtual ~CRemoteAircraftProviderSupportReadOnly() {} + virtual ~CRemoteAircraftAwareReadOnly() {} protected: //! Constructor - CRemoteAircraftProviderSupportReadOnly(const IRemoteAircraftProviderReadOnly *remoteAircraftProvider) : m_remoteAircraftProvider(remoteAircraftProvider) {} + CRemoteAircraftAwareReadOnly(const IRemoteAircraftProviderReadOnly *remoteAircraftProvider) : m_remoteAircraftProvider(remoteAircraftProvider) {} const IRemoteAircraftProviderReadOnly *m_remoteAircraftProvider = nullptr; //!< access to object }; - //! Delegating class which can be directly used providing access to such an interface - class CRemoteAircraftProviderSupport + //! Class which can be directly used to access an \sa IRemoteAircraftProvider object + class CRemoteAircraftAware { public: //! \copydoc IRemoteAircraftProviderReadOnly::renderedAircraft @@ -140,11 +140,11 @@ namespace BlackMisc virtual bool providerUpdateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const QString &originator); //! Destructor - virtual ~CRemoteAircraftProviderSupport() {} + virtual ~CRemoteAircraftAware() {} protected: //! Constructor - CRemoteAircraftProviderSupport(IRemoteAircraftProvider *remoteAircraftProvider) : m_remoteAircraftProvider(remoteAircraftProvider) { Q_ASSERT(remoteAircraftProvider); } + CRemoteAircraftAware(IRemoteAircraftProvider *remoteAircraftProvider) : m_remoteAircraftProvider(remoteAircraftProvider) { Q_ASSERT(remoteAircraftProvider); } IRemoteAircraftProvider *m_remoteAircraftProvider = nullptr; //!< access to object }; diff --git a/src/blackmisc/simulation/remoteaircraftproviderdummy.h b/src/blackmisc/simulation/remoteaircraftproviderdummy.h index 082141fb8..d6ba86ea3 100644 --- a/src/blackmisc/simulation/remoteaircraftproviderdummy.h +++ b/src/blackmisc/simulation/remoteaircraftproviderdummy.h @@ -32,10 +32,10 @@ namespace BlackMisc CRemoteAircraftProviderDummy(QObject *parent = nullptr); //! IRemoteAircraftProviderReadOnly::remoteAircraft - virtual const CSimulatedAircraftList &remoteAircraft() const; + virtual const CSimulatedAircraftList &remoteAircraft() const override; //! IRemoteAircraftProvider::remoteAircraft - virtual CSimulatedAircraftList &remoteAircraft(); + virtual CSimulatedAircraftList &remoteAircraft() override; //! \copydoc IRemoteAircraftProviderReadOnly::remoteAircraftParts virtual const BlackMisc::Aviation::CAircraftPartsList &remoteAircraftParts() const override; diff --git a/src/blackmisc/statusmessagelist.h b/src/blackmisc/statusmessagelist.h index cc11aaab9..59195154d 100644 --- a/src/blackmisc/statusmessagelist.h +++ b/src/blackmisc/statusmessagelist.h @@ -56,12 +56,6 @@ namespace BlackMisc //! Register metadata of unit and quantity static void registerMetadata(); - protected: - //! Myself - virtual const CStatusMessageList &container() const override { return *this; } - - //! Myself - virtual CStatusMessageList &container() override { return *this; } }; } diff --git a/src/blackmisc/threadedreader.cpp b/src/blackmisc/threadedreader.cpp index ed4692b8d..d4a3a1054 100644 --- a/src/blackmisc/threadedreader.cpp +++ b/src/blackmisc/threadedreader.cpp @@ -32,8 +32,8 @@ namespace BlackMisc void CThreadedReader::requestStop() { + setFinished(); QWriteLocker(&this->m_lock); - this->m_stopped = true; this->m_updateTimer->stop(); } @@ -47,13 +47,6 @@ namespace BlackMisc // cleanup code would go here } - bool CThreadedReader::isFinished() const - { - if (CContinuousWorker::isFinished()) { return true; } - QReadLocker(&this->m_lock); - return this->m_stopped; - } - void CThreadedReader::setInterval(int updatePeriodMs) { Q_ASSERT(this->m_updateTimer); diff --git a/src/blackmisc/threadedreader.h b/src/blackmisc/threadedreader.h index 8f805d025..644ee57f6 100644 --- a/src/blackmisc/threadedreader.h +++ b/src/blackmisc/threadedreader.h @@ -46,9 +46,6 @@ namespace BlackMisc //! \copydoc CContinuousWorker::cleanup virtual void cleanup() override; - //! Thread ended of stop requested - virtual bool isFinished() const override; - /*! * Set the update time * \param updatePeriodMs <=0 stops the timer @@ -72,7 +69,6 @@ namespace BlackMisc private: QDateTime m_updateTimestamp; //!< when was file / resource read - bool m_stopped = false; //!< optional network reply to be stopped }; } // namespace diff --git a/src/blackmisc/timestampobjectlist.cpp b/src/blackmisc/timestampobjectlist.cpp index 4e7fb9ef1..791e1d5e0 100644 --- a/src/blackmisc/timestampobjectlist.cpp +++ b/src/blackmisc/timestampobjectlist.cpp @@ -22,6 +22,18 @@ namespace BlackMisc ITimestampObjectList::ITimestampObjectList() { } + template + const CONTAINER &ITimestampObjectList::container() const + { + return static_cast(*this); + } + + template + CONTAINER &ITimestampObjectList::container() + { + return static_cast(*this); + } + template CONTAINER ITimestampObjectList::findBefore(qint64 msSinceEpoch) const { diff --git a/src/blackmisc/timestampobjectlist.h b/src/blackmisc/timestampobjectlist.h index 3da695b9f..b0dc60190 100644 --- a/src/blackmisc/timestampobjectlist.h +++ b/src/blackmisc/timestampobjectlist.h @@ -77,10 +77,10 @@ namespace BlackMisc ITimestampObjectList(); //! Container - virtual const CONTAINER &container() const = 0; + const CONTAINER &container() const; //! Container - virtual CONTAINER &container() = 0; + CONTAINER &container(); }; } //namespace diff --git a/src/blackmisc/worker.cpp b/src/blackmisc/worker.cpp index 04a16ab1f..00760ec18 100644 --- a/src/blackmisc/worker.cpp +++ b/src/blackmisc/worker.cpp @@ -46,6 +46,7 @@ namespace BlackMisc auto *thread = new CRegularThread(m_owner); + Q_ASSERT(m_owner); // must not be null, see (9) https://dev.vatsim-germany.org/issues/402 if (m_owner) { QString ownerName = m_owner->objectName().isEmpty() ? m_owner->metaObject()->className() : m_owner->objectName(); diff --git a/src/blackmisc/worker.h b/src/blackmisc/worker.h index 93311ab5c..a4255fb45 100644 --- a/src/blackmisc/worker.h +++ b/src/blackmisc/worker.h @@ -130,7 +130,7 @@ namespace BlackMisc //! Returns true if the task has finished. //! \threadsafe But don't rely on this condition remaining true for any length of time. - virtual bool isFinished() const + bool isFinished() const { QMutexLocker lock(&m_finishedMutex); return m_finished;