refs #413 All value classes which had custom policies shall inherit from mixins instead.

This commit is contained in:
Mathew Sutcliffe
2015-05-03 23:34:06 +01:00
parent 9becc1c666
commit 36a2e1a2bb
38 changed files with 658 additions and 664 deletions

View File

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