From 8a0290b44b9755d4269457ceb5d89008d9ef369d Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Sat, 26 Mar 2016 21:10:55 +0100 Subject: [PATCH] classes CWeatherGridProvider and CWeatherGridAware refs #612 --- src/blackcore/simulator.h | 1 + src/blackmisc/weather/weathergridprovider.cpp | 27 ++++++++++ src/blackmisc/weather/weathergridprovider.h | 53 +++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 src/blackmisc/weather/weathergridprovider.cpp create mode 100644 src/blackmisc/weather/weathergridprovider.h diff --git a/src/blackcore/simulator.h b/src/blackcore/simulator.h index f3c58010d..44093944f 100644 --- a/src/blackcore/simulator.h +++ b/src/blackcore/simulator.h @@ -278,6 +278,7 @@ namespace BlackCore //! \param ownAircraftProvider in memory access to own aircraft data //! \param remoteAircraftProvider in memory access to rendered aircraft data such as situation history and aircraft itself //! \param pluginStorageProvider in memory access to persistent plugin data store + //! \param weatherGridProvider in memory access to weather grid data //! \return driver instance virtual ISimulator *create( const BlackMisc::Simulation::CSimulatorPluginInfo &info, diff --git a/src/blackmisc/weather/weathergridprovider.cpp b/src/blackmisc/weather/weathergridprovider.cpp new file mode 100644 index 000000000..13100e6a1 --- /dev/null +++ b/src/blackmisc/weather/weathergridprovider.cpp @@ -0,0 +1,27 @@ +/* Copyright (C) 2015 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "weathergridprovider.h" + +using namespace BlackMisc; + +namespace BlackMisc +{ + namespace Weather + { + + void CWeatherGridAware::requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, + const BlackMisc::CSlot &callback) + { + Q_ASSERT_X(this->m_weatherGridProvider, Q_FUNC_INFO, "No object available"); + return this->m_weatherGridProvider->requestWeatherGrid(weatherGrid, callback); + } + + } // namespace +} // namespace diff --git a/src/blackmisc/weather/weathergridprovider.h b/src/blackmisc/weather/weathergridprovider.h new file mode 100644 index 000000000..1c26f2dd7 --- /dev/null +++ b/src/blackmisc/weather/weathergridprovider.h @@ -0,0 +1,53 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKMISC_WEATHER_WEATHERGRIDPROVIDER_H +#define BLACKMISC_WEATHER_WEATHERGRIDPROVIDER_H + +#include "blackmisc/blackmiscexport.h" +#include "blackmisc/identifier.h" +#include "blackmisc/weather/weathergrid.h" +#include "blackmisc/pq/length.h" +#include "blackmisc/slot.h" + +namespace BlackMisc +{ + namespace Weather + { + //! Direct threadsafe in memory access to weather grid + class BLACKMISC_EXPORT IWeatherGridProvider + { + public: + //! Request weather grid + virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, + const BlackMisc::CSlot &callback) = 0; + }; + + //! Delegating class which can be directly used to access an \sa IWeatherGridProvider instance + class BLACKMISC_EXPORT CWeatherGridAware + { + public: + //! \copydoc IWeatherGridProvider::requestWeatherGrid + virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, + const BlackMisc::CSlot &callback); + + protected: + //! Constructor + CWeatherGridAware(IWeatherGridProvider *weatherGridProvider) : m_weatherGridProvider(weatherGridProvider) { Q_ASSERT(weatherGridProvider); } + IWeatherGridProvider *m_weatherGridProvider = nullptr; //!< access to object + }; + + } // namespace +} // namespace + +Q_DECLARE_INTERFACE(BlackMisc::Weather::IWeatherGridProvider, "BlackMisc::Weather::IWeatherGridProvider") + +#endif // guard