mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 03:15:34 +08:00
refs #413 All value classes which had custom policies shall inherit from mixins instead.
This commit is contained in:
@@ -18,33 +18,33 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation { class CAdfSystem; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CAdfSystem> : public CValueObjectPolicy<>
|
||||
{
|
||||
using MetaType = Policy::MetaType::Default;
|
||||
using Equals = Policy::Equals::None;
|
||||
using LessThan = Policy::LessThan::None;
|
||||
using Compare = Policy::Compare::None;
|
||||
using Hash = Policy::Hash::Own;
|
||||
using DBus = Policy::DBus::Own;
|
||||
using Json = Policy::Json::Own;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
//! ADF system ("for NDBs")
|
||||
class BLACKMISC_EXPORT CAdfSystem : public CValueObject<CAdfSystem, CModulator<CAdfSystem>>
|
||||
class BLACKMISC_EXPORT CAdfSystem :
|
||||
public CModulator<CAdfSystem>,
|
||||
public Mixin::MetaType<CAdfSystem>,
|
||||
public Mixin::JsonOperators<CAdfSystem>
|
||||
{
|
||||
public:
|
||||
//! Base type
|
||||
using base_type = CModulator<CAdfSystem>;
|
||||
|
||||
using Mixin::MetaType<CAdfSystem>::registerMetadata;
|
||||
using Mixin::MetaType<CAdfSystem>::getMetaTypeId;
|
||||
using Mixin::MetaType<CAdfSystem>::isA;
|
||||
using Mixin::MetaType<CAdfSystem>::toCVariant;
|
||||
using Mixin::MetaType<CAdfSystem>::toQVariant;
|
||||
using Mixin::MetaType<CAdfSystem>::convertFromCVariant;
|
||||
using Mixin::MetaType<CAdfSystem>::convertFromQVariant;
|
||||
|
||||
//! Default constructor
|
||||
CAdfSystem() = default;
|
||||
|
||||
//! Constructor
|
||||
CAdfSystem(const QString &name, const PhysicalQuantities::CFrequency &activeFrequency, const PhysicalQuantities::CFrequency &standbyFrequency = CModulator::FrequencyNotSet()):
|
||||
CValueObject(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency)
|
||||
CModulator(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency)
|
||||
{ }
|
||||
|
||||
//! Valid aviation frequency?
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace BlackMisc
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
CAltitude::CAltitude(const QString &altitudeAsString, BlackMisc::PhysicalQuantities::CPqString::SeparatorMode mode) : CValueObject(0, BlackMisc::PhysicalQuantities::CLengthUnit::m()), m_datum(MeanSeaLevel)
|
||||
CAltitude::CAltitude(const QString &altitudeAsString, BlackMisc::PhysicalQuantities::CPqString::SeparatorMode mode) : CLength(0, BlackMisc::PhysicalQuantities::CLengthUnit::m()), m_datum(MeanSeaLevel)
|
||||
{
|
||||
this->parseFromString(altitudeAsString, mode);
|
||||
}
|
||||
|
||||
@@ -17,27 +17,46 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation { class CAltitude; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CAltitude> : public CValueObjectPolicy<>
|
||||
{
|
||||
using Equals = Policy::Equals::MetaTuple;
|
||||
using Compare = Policy::Compare::MetaTuple;
|
||||
using Hash = Policy::Hash::MetaTuple;
|
||||
using DBus = Policy::DBus::MetaTuple;
|
||||
using Json = Policy::Json::MetaTuple;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
/*!
|
||||
* Altitude as used in aviation, can be AGL or MSL altitude
|
||||
* \remarks Intentionally allowing +/- CLength , and >= / <= CLength.
|
||||
*/
|
||||
class BLACKMISC_EXPORT CAltitude : public CValueObject<CAltitude, PhysicalQuantities::CLength>
|
||||
class BLACKMISC_EXPORT CAltitude :
|
||||
public PhysicalQuantities::CLength,
|
||||
public Mixin::MetaTypeAndQList<CAltitude>,
|
||||
public Mixin::EqualsByTuple<CAltitude>,
|
||||
public Mixin::CompareByTuple<CAltitude>,
|
||||
public Mixin::HashByTuple<CAltitude>,
|
||||
public Mixin::DBusByTuple<CAltitude>,
|
||||
public Mixin::JsonByTuple<CAltitude>,
|
||||
public Mixin::String<CAltitude>,
|
||||
public Mixin::Icon<CAltitude>
|
||||
{
|
||||
public:
|
||||
//! Base type
|
||||
using base_type = PhysicalQuantities::CLength;
|
||||
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::registerMetadata;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::getMetaTypeId;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::isA;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::toCVariant;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::toQVariant;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::convertFromCVariant;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::convertFromQVariant;
|
||||
using Mixin::String<CAltitude>::toQString;
|
||||
using Mixin::String<CAltitude>::toFormattedQString;
|
||||
using Mixin::String<CAltitude>::toStdString;
|
||||
using Mixin::String<CAltitude>::stringForStreaming;
|
||||
using Mixin::DBusByTuple<CAltitude>::marshallToDbus;
|
||||
using Mixin::DBusByTuple<CAltitude>::unmarshallFromDbus;
|
||||
using Mixin::JsonByTuple<CAltitude>::toJson;
|
||||
using Mixin::JsonByTuple<CAltitude>::convertFromJson;
|
||||
using Mixin::Icon<CAltitude>::toIcon;
|
||||
using Mixin::Icon<CAltitude>::toPixmap;
|
||||
|
||||
/*!
|
||||
* Enum type to distinguish between MSL and AGL
|
||||
*/
|
||||
@@ -52,16 +71,16 @@ namespace BlackMisc
|
||||
QString convertToQString(bool i18n = false) const;
|
||||
|
||||
//! Default constructor: 0 Altitude true
|
||||
CAltitude() : CValueObject(0, BlackMisc::PhysicalQuantities::CLengthUnit::m()), m_datum(MeanSeaLevel) {}
|
||||
CAltitude() : CLength(0, BlackMisc::PhysicalQuantities::CLengthUnit::m()), m_datum(MeanSeaLevel) {}
|
||||
|
||||
//! Constructor
|
||||
CAltitude(double value, ReferenceDatum datum, const BlackMisc::PhysicalQuantities::CLengthUnit &unit) : CValueObject(value, unit), m_datum(datum) {}
|
||||
CAltitude(double value, ReferenceDatum datum, const BlackMisc::PhysicalQuantities::CLengthUnit &unit) : CLength(value, unit), m_datum(datum) {}
|
||||
|
||||
//! Altitude as string
|
||||
CAltitude(const QString &altitudeAsString, BlackMisc::PhysicalQuantities::CPqString::SeparatorMode mode = BlackMisc::PhysicalQuantities::CPqString::SeparatorsLocale);
|
||||
|
||||
//! Constructor by CLength
|
||||
CAltitude(BlackMisc::PhysicalQuantities::CLength altitude, ReferenceDatum datum) : CValueObject(altitude), m_datum(datum) {}
|
||||
CAltitude(BlackMisc::PhysicalQuantities::CLength altitude, ReferenceDatum datum) : CLength(altitude), m_datum(datum) {}
|
||||
|
||||
//! AGL Above ground level?
|
||||
bool isAboveGroundLevel() const { return AboveGround == this->m_datum; }
|
||||
|
||||
@@ -16,19 +16,18 @@
|
||||
namespace BlackMisc
|
||||
{
|
||||
|
||||
namespace Aviation { class CAvionicsBase; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CAvionicsBase> : public CValueObjectPolicy<>
|
||||
{
|
||||
using MetaType = Policy::MetaType::None;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
//! Base class for avionics
|
||||
class BLACKMISC_EXPORT CAvionicsBase : public CValueObject<CAvionicsBase>
|
||||
class BLACKMISC_EXPORT CAvionicsBase :
|
||||
public Mixin::HashByTuple<CAvionicsBase>,
|
||||
public Mixin::DBusByTuple<CAvionicsBase>,
|
||||
public Mixin::JsonByTuple<CAvionicsBase>,
|
||||
public Mixin::EqualsByTuple<CAvionicsBase>,
|
||||
public Mixin::LessThanByTuple<CAvionicsBase>,
|
||||
public Mixin::CompareByTuple<CAvionicsBase>,
|
||||
public Mixin::String<CAvionicsBase>
|
||||
{
|
||||
protected:
|
||||
QString m_name; //!< name of the unit
|
||||
|
||||
@@ -17,25 +17,27 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation { class CComSystem; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CComSystem> : public CValueObjectPolicy<>
|
||||
{
|
||||
using MetaType = Policy::MetaType::Default;
|
||||
using LessThan = Policy::LessThan::None;
|
||||
using Compare = Policy::Compare::None;
|
||||
using Hash = Policy::Hash::Own;
|
||||
using DBus = Policy::DBus::Own;
|
||||
using Json = Policy::Json::Own;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
//! COM system (aka "radio")
|
||||
class BLACKMISC_EXPORT CComSystem : public CValueObject<CComSystem, CModulator<CComSystem>>
|
||||
class BLACKMISC_EXPORT CComSystem :
|
||||
public CModulator<CComSystem>,
|
||||
public Mixin::MetaType<CComSystem>,
|
||||
public Mixin::JsonOperators<CComSystem>
|
||||
{
|
||||
public:
|
||||
//! Base type
|
||||
using base_type = CModulator<CComSystem>;
|
||||
|
||||
using Mixin::MetaType<CComSystem>::registerMetadata;
|
||||
using Mixin::MetaType<CComSystem>::getMetaTypeId;
|
||||
using Mixin::MetaType<CComSystem>::isA;
|
||||
using Mixin::MetaType<CComSystem>::toCVariant;
|
||||
using Mixin::MetaType<CComSystem>::toQVariant;
|
||||
using Mixin::MetaType<CComSystem>::convertFromCVariant;
|
||||
using Mixin::MetaType<CComSystem>::convertFromQVariant;
|
||||
|
||||
//! Channel spacing frequency
|
||||
enum ChannelSpacing
|
||||
{
|
||||
@@ -56,7 +58,7 @@ namespace BlackMisc
|
||||
|
||||
//! Constructor
|
||||
CComSystem(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency = CModulator::FrequencyNotSet()):
|
||||
CValueObject(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency)
|
||||
CModulator(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency)
|
||||
{ }
|
||||
|
||||
//! Set active frequency
|
||||
|
||||
@@ -17,27 +17,43 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation { class CHeading; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CHeading> : public CValueObjectPolicy<>
|
||||
{
|
||||
using Equals = Policy::Equals::MetaTuple;
|
||||
using Compare = Policy::Compare::MetaTuple;
|
||||
using Hash = Policy::Hash::MetaTuple;
|
||||
using DBus = Policy::DBus::MetaTuple;
|
||||
using Json = Policy::Json::MetaTuple;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
/*!
|
||||
* \brief Heading as used in aviation, can be true or magnetic heading
|
||||
* \remarks Intentionally allowing +/- CAngle , and >= / <= CAngle.
|
||||
*/
|
||||
class BLACKMISC_EXPORT CHeading : public CValueObject<CHeading, PhysicalQuantities::CAngle>
|
||||
class BLACKMISC_EXPORT CHeading :
|
||||
public PhysicalQuantities::CAngle,
|
||||
public Mixin::MetaTypeAndQList<CHeading>,
|
||||
public Mixin::EqualsByTuple<CHeading>,
|
||||
public Mixin::CompareByTuple<CHeading>,
|
||||
public Mixin::HashByTuple<CHeading>,
|
||||
public Mixin::DBusByTuple<CHeading>,
|
||||
public Mixin::JsonByTuple<CHeading>,
|
||||
public Mixin::String<CHeading>
|
||||
{
|
||||
public:
|
||||
//! Base type
|
||||
using base_type = PhysicalQuantities::CAngle;
|
||||
|
||||
using Mixin::MetaTypeAndQList<CHeading>::registerMetadata;
|
||||
using Mixin::MetaTypeAndQList<CHeading>::getMetaTypeId;
|
||||
using Mixin::MetaTypeAndQList<CHeading>::isA;
|
||||
using Mixin::MetaTypeAndQList<CHeading>::toCVariant;
|
||||
using Mixin::MetaTypeAndQList<CHeading>::toQVariant;
|
||||
using Mixin::MetaTypeAndQList<CHeading>::convertFromCVariant;
|
||||
using Mixin::MetaTypeAndQList<CHeading>::convertFromQVariant;
|
||||
using Mixin::String<CHeading>::toQString;
|
||||
using Mixin::String<CHeading>::toFormattedQString;
|
||||
using Mixin::String<CHeading>::toStdString;
|
||||
using Mixin::String<CHeading>::stringForStreaming;
|
||||
using Mixin::DBusByTuple<CHeading>::marshallToDbus;
|
||||
using Mixin::DBusByTuple<CHeading>::unmarshallFromDbus;
|
||||
using Mixin::JsonByTuple<CHeading>::toJson;
|
||||
using Mixin::JsonByTuple<CHeading>::convertFromJson;
|
||||
|
||||
//! Enum type to distinguish between true north and magnetic north
|
||||
enum ReferenceNorth
|
||||
{
|
||||
@@ -49,13 +65,13 @@ namespace BlackMisc
|
||||
QString convertToQString(bool i18n = false) const;
|
||||
|
||||
//! \brief Default constructor: 0 heading true
|
||||
CHeading() : CValueObject(0, BlackMisc::PhysicalQuantities::CAngleUnit::rad()), m_north(Magnetic) {}
|
||||
CHeading() : CAngle(0, BlackMisc::PhysicalQuantities::CAngleUnit::rad()), m_north(Magnetic) {}
|
||||
|
||||
//! \brief Constructor
|
||||
CHeading(double value, ReferenceNorth north, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CValueObject(value, unit), m_north(north) {}
|
||||
CHeading(double value, ReferenceNorth north, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CAngle(value, unit), m_north(north) {}
|
||||
|
||||
//! \brief Constructor by CAngle
|
||||
CHeading(CAngle heading, ReferenceNorth north) : CValueObject(heading), m_north(north) {}
|
||||
CHeading(CAngle heading, ReferenceNorth north) : CAngle(heading), m_north(north) {}
|
||||
|
||||
//! \brief Magnetic heading?
|
||||
bool isMagneticHeading() const { return Magnetic == this->m_north; }
|
||||
|
||||
@@ -17,32 +17,33 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation { class CNavSystem; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CNavSystem> : public CValueObjectPolicy<>
|
||||
{
|
||||
using MetaType = Policy::MetaType::Default;
|
||||
using Equals = Policy::Equals::None;
|
||||
using LessThan = Policy::LessThan::None;
|
||||
using Compare = Policy::Compare::None;
|
||||
using Hash = Policy::Hash::Own;
|
||||
using DBus = Policy::DBus::Own;
|
||||
using Json = Policy::Json::Own;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
//! NAV system (radio navigation)
|
||||
class BLACKMISC_EXPORT CNavSystem : public CValueObject<CNavSystem, CModulator<CNavSystem>>
|
||||
class BLACKMISC_EXPORT CNavSystem :
|
||||
public CModulator<CNavSystem>,
|
||||
public Mixin::MetaType<CNavSystem>,
|
||||
public Mixin::JsonOperators<CNavSystem>
|
||||
{
|
||||
public:
|
||||
//! Base type
|
||||
using base_type = CModulator<CNavSystem>;
|
||||
|
||||
using Mixin::MetaType<CNavSystem>::registerMetadata;
|
||||
using Mixin::MetaType<CNavSystem>::getMetaTypeId;
|
||||
using Mixin::MetaType<CNavSystem>::isA;
|
||||
using Mixin::MetaType<CNavSystem>::toCVariant;
|
||||
using Mixin::MetaType<CNavSystem>::toQVariant;
|
||||
using Mixin::MetaType<CNavSystem>::convertFromCVariant;
|
||||
using Mixin::MetaType<CNavSystem>::convertFromQVariant;
|
||||
|
||||
//! Default constructor
|
||||
CNavSystem() = default;
|
||||
|
||||
//! Constructor
|
||||
CNavSystem(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency):
|
||||
CValueObject(name, activeFrequency, standbyFrequency)
|
||||
CModulator(name, activeFrequency, standbyFrequency)
|
||||
{ }
|
||||
|
||||
//! Set active frequency
|
||||
|
||||
@@ -17,28 +17,44 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation { class CTrack; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CTrack> : public CValueObjectPolicy<>
|
||||
{
|
||||
using Equals = Policy::Equals::MetaTuple;
|
||||
using Compare = Policy::Compare::MetaTuple;
|
||||
using Hash = Policy::Hash::MetaTuple;
|
||||
using DBus = Policy::DBus::MetaTuple;
|
||||
using Json = Policy::Json::MetaTuple;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
/*!
|
||||
* \brief Track as used in aviation, can be true or magnetic Track
|
||||
* \remarks Intentionally allowing +/- BlackMisc::PhysicalQuantities::CAngle ,
|
||||
* and >= / <= CAngle.
|
||||
*/
|
||||
class BLACKMISC_EXPORT CTrack : public CValueObject<CTrack, PhysicalQuantities::CAngle>
|
||||
class BLACKMISC_EXPORT CTrack :
|
||||
public PhysicalQuantities::CAngle,
|
||||
public Mixin::MetaTypeAndQList<CTrack>,
|
||||
public Mixin::EqualsByTuple<CTrack>,
|
||||
public Mixin::CompareByTuple<CTrack>,
|
||||
public Mixin::HashByTuple<CTrack>,
|
||||
public Mixin::DBusByTuple<CTrack>,
|
||||
public Mixin::JsonByTuple<CTrack>,
|
||||
public Mixin::String<CTrack>
|
||||
{
|
||||
public:
|
||||
//! Base type
|
||||
using base_type = PhysicalQuantities::CAngle;
|
||||
|
||||
using Mixin::MetaTypeAndQList<CTrack>::registerMetadata;
|
||||
using Mixin::MetaTypeAndQList<CTrack>::getMetaTypeId;
|
||||
using Mixin::MetaTypeAndQList<CTrack>::isA;
|
||||
using Mixin::MetaTypeAndQList<CTrack>::toCVariant;
|
||||
using Mixin::MetaTypeAndQList<CTrack>::toQVariant;
|
||||
using Mixin::MetaTypeAndQList<CTrack>::convertFromCVariant;
|
||||
using Mixin::MetaTypeAndQList<CTrack>::convertFromQVariant;
|
||||
using Mixin::String<CTrack>::toQString;
|
||||
using Mixin::String<CTrack>::toFormattedQString;
|
||||
using Mixin::String<CTrack>::toStdString;
|
||||
using Mixin::String<CTrack>::stringForStreaming;
|
||||
using Mixin::DBusByTuple<CTrack>::marshallToDbus;
|
||||
using Mixin::DBusByTuple<CTrack>::unmarshallFromDbus;
|
||||
using Mixin::JsonByTuple<CTrack>::toJson;
|
||||
using Mixin::JsonByTuple<CTrack>::convertFromJson;
|
||||
|
||||
/*!
|
||||
* Enum type to distinguish between true north and magnetic north
|
||||
*/
|
||||
@@ -49,13 +65,13 @@ namespace BlackMisc
|
||||
};
|
||||
|
||||
//! \brief Default constructor: 0 Track magnetic
|
||||
CTrack() : CValueObject(0, BlackMisc::PhysicalQuantities::CAngleUnit::rad()), m_north(Magnetic) {}
|
||||
CTrack() : CAngle(0, BlackMisc::PhysicalQuantities::CAngleUnit::rad()), m_north(Magnetic) {}
|
||||
|
||||
//! \brief Constructor
|
||||
CTrack(double value, ReferenceNorth north, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CValueObject(value, unit), m_north(north) {}
|
||||
CTrack(double value, ReferenceNorth north, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CAngle(value, unit), m_north(north) {}
|
||||
|
||||
//! \brief Constructor by CAngle
|
||||
CTrack(BlackMisc::PhysicalQuantities::CAngle track, ReferenceNorth north) : CValueObject(track), m_north(north) {}
|
||||
CTrack(BlackMisc::PhysicalQuantities::CAngle track, ReferenceNorth north) : CAngle(track), m_north(north) {}
|
||||
|
||||
//! \brief Magnetic Track?
|
||||
bool isMagneticTrack() const
|
||||
|
||||
@@ -18,14 +18,6 @@
|
||||
namespace BlackMisc
|
||||
{
|
||||
|
||||
namespace Aviation { class CTransponder; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CTransponder> : public CValueObjectPolicy<>
|
||||
{
|
||||
using MetaType = Policy::MetaType::Default;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
//! Transponder
|
||||
|
||||
Reference in New Issue
Block a user