diff --git a/src/blackmisc/avioadfsystem.h b/src/blackmisc/avioadfsystem.h index d4375bca9..56ae1baaf 100644 --- a/src/blackmisc/avioadfsystem.h +++ b/src/blackmisc/avioadfsystem.h @@ -23,7 +23,7 @@ namespace BlackMisc /*! * ADF system ("for NDBs") */ - class CAdfSystem : public CModulator + class CAdfSystem : public CValueObjectStdTuple> { public: //! Default constructor @@ -31,7 +31,7 @@ namespace BlackMisc //! Constructor CAdfSystem(const QString &name, const PhysicalQuantities::CFrequency &activeFrequency, const PhysicalQuantities::CFrequency &standbyFrequency = CModulator::FrequencyNotSet()): - CModulator(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency) + CValueObjectStdTuple(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency) { } //! Valid aviation frequency? @@ -41,19 +41,6 @@ namespace BlackMisc return fr >= 190.0 && fr <= 1750.0; } - //! Equal operator == - bool operator ==(const CAdfSystem &otherSystem) const - { - return this->CModulator::operator ==(otherSystem); - } - - //! Equal operator != - bool operator !=(const CAdfSystem &otherSystem) const - { - return this->CModulator::operator !=(otherSystem); - } - - //! ADF1 unit static CAdfSystem GetAdf1System(double activeFrequencyKHz, double standbyFrequencyKHz = -1) { diff --git a/src/blackmisc/aviobase.cpp b/src/blackmisc/aviobase.cpp deleted file mode 100644 index 73201996a..000000000 --- a/src/blackmisc/aviobase.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "aviobase.h" - -namespace BlackMisc -{ - namespace Aviation - { - bool CAvionicsBase::operator ==(const CAvionicsBase &other) const - { - if (this == &other) return true; - return TupleConverter::toTuple(*this) == TupleConverter::toTuple(other); - } - - int CAvionicsBase::compareImpl(const CValueObject &otherBase) const - { - const auto &other = static_cast(otherBase); - return compare(TupleConverter::toTuple(*this), TupleConverter::toTuple(other)); - } - - void CAvionicsBase::marshallToDbus(QDBusArgument &argument) const - { - argument << TupleConverter::toTuple(*this); - } - - void CAvionicsBase::unmarshallFromDbus(const QDBusArgument &argument) - { - argument >> TupleConverter::toTuple(*this); - } - - uint CAvionicsBase::getValueHash() const - { - return qHash(TupleConverter::toTuple(*this)); - } - } -} diff --git a/src/blackmisc/aviobase.h b/src/blackmisc/aviobase.h index c1128f047..b59c49a93 100644 --- a/src/blackmisc/aviobase.h +++ b/src/blackmisc/aviobase.h @@ -18,7 +18,7 @@ namespace BlackMisc { //! \brief Base class for avionics - class CAvionicsBase : public BlackMisc::CValueObject + class CAvionicsBase : public CValueObjectStdTuple { protected: QString m_name; //!< name of the unit @@ -32,32 +32,8 @@ namespace BlackMisc this->m_name = name; } - //! \brief operator == - bool operator ==(const CAvionicsBase &other) const; - - //! \brief operator != - bool operator !=(const CAvionicsBase &other) const - { - return !(other == (*this)); - } - - //! \copydoc CValueObject::getMetaTypeId - virtual int getMetaTypeId() const override { return 0; } - - //! \copydoc CValueObject::isA - virtual bool isA(int metaTypeId) const override { return this->CValueObject::isA(metaTypeId); } - - //! \copydoc CValueObject::compareImpl(otherBase) - virtual int compareImpl(const CValueObject &otherBase) const override; - - //! \copydoc CValueObject::marshallToDbus() - virtual void marshallToDbus(QDBusArgument &argument) const override; - - //! \copydoc CValueObject::unmarshallFromDbus() - virtual void unmarshallFromDbus(const QDBusArgument &argument) override; - - //! \copydoc CValueObject::getValueHash() - virtual uint getValueHash() const override; + //! \copydoc CValueObject::convertToQString + virtual QString convertToQString(bool i18n = false) const override { Q_UNUSED(i18n); return ""; } public: //! \brief Name diff --git a/src/blackmisc/aviocomsystem.cpp b/src/blackmisc/aviocomsystem.cpp index 67e8f5137..9ecbf6ad4 100644 --- a/src/blackmisc/aviocomsystem.cpp +++ b/src/blackmisc/aviocomsystem.cpp @@ -46,83 +46,6 @@ namespace BlackMisc CModulator::setFrequencyStandby(f); } - /* - * Marshall - */ - void CComSystem::marshallToDbus(QDBusArgument &argument) const - { - CModulator::marshallToDbus(argument); - argument << TupleConverter::toTuple(*this); - } - - /* - * Unmarshall - */ - void CComSystem::unmarshallFromDbus(const QDBusArgument &argument) - { - CModulator::unmarshallFromDbus(argument); - argument >> TupleConverter::toTuple(*this); - } - - /* - * Hash - */ - uint CComSystem::getValueHash() const - { - QList hashs; - hashs << CModulator::getValueHash(); - hashs << qHash(TupleConverter::toTuple(*this)); - return BlackMisc::calculateHash(hashs, "CComSystem"); - } - - /* - * To JSON - */ - QJsonObject CComSystem::toJson() const - { - QJsonObject json = BlackMisc::serializeJson(CComSystem::jsonMembers(), TupleConverter::toTuple(*this)); - return BlackMisc::Json::appendJsonObject(json, CModulator::toJson()); - } - - /* - * To JSON - */ - void CComSystem::convertFromJson(const QJsonObject &json) - { - CModulator::convertFromJson(json); - BlackMisc::deserializeJson(json, CComSystem::jsonMembers(), TupleConverter::toTuple(*this)); - } - - /* - * Members - */ - const QStringList &CComSystem::jsonMembers() - { - return TupleConverter::jsonMembers(); - } - - /* - * Compare - */ - int CComSystem::compareImpl(const CValueObject &otherBase) const - { - const auto &other = static_cast(otherBase); - int result = compare(TupleConverter::toTuple(*this), TupleConverter::toTuple(other)); - return result == 0 ? CModulator::compareImpl(otherBase) : result; - } - - bool CComSystem::operator ==(const CComSystem &other) const - { - if (this == &other) return true; - if (!CModulator::operator ==(other)) return false; - return TupleConverter::toTuple(*this) == TupleConverter::toTuple(other); - } - - bool CComSystem::operator !=(const CComSystem &other) const - { - return !((*this) == other); - } - /* * Round to channel spacing */ diff --git a/src/blackmisc/aviocomsystem.h b/src/blackmisc/aviocomsystem.h index 1909871cc..6f20fd7e9 100644 --- a/src/blackmisc/aviocomsystem.h +++ b/src/blackmisc/aviocomsystem.h @@ -20,7 +20,7 @@ namespace BlackMisc /*! * COM system (aka "radio") */ - class CComSystem : public CModulator + class CComSystem : public CValueObjectStdTuple> { public: //! Channel spacing frequency @@ -36,7 +36,7 @@ namespace BlackMisc //! Constructor CComSystem(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency = CModulator::FrequencyNotSet()): - CModulator(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency), m_channelSpacing(ChannelSpacing25KHz) + CValueObjectStdTuple(name, activeFrequency, standbyFrequency == CModulator::FrequencyNotSet() ? activeFrequency : standbyFrequency), m_channelSpacing(ChannelSpacing25KHz) { } //! Set active frequency @@ -73,24 +73,6 @@ namespace BlackMisc this->setFrequencyActive(BlackMisc::PhysicalQuantities::CPhysicalQuantitiesConstants::FrequencyInternationalAirDistress()); } - //! \copydoc CValueObject::getValueHash - virtual uint getValueHash() const override; - - //! \copydoc CValueObject::toJson - virtual QJsonObject toJson() const override; - - //! \copydoc CValueObject::convertFromJson - virtual void convertFromJson(const QJsonObject &json) override; - - //! Members - static const QStringList &jsonMembers(); - - //! operator == - bool operator ==(const CComSystem &other) const; - - //! operator != - bool operator !=(const CComSystem &other) const; - //! COM1 unit static CComSystem getCom1System(double activeFrequencyMHz, double standbyFrequencyMHz = -1) { @@ -162,15 +144,6 @@ namespace BlackMisc //! \copydoc CAvionicsBase::validValues virtual bool validValues() const override; - //! \copydoc CValueObject::marshallFromDbus() - virtual void marshallToDbus(QDBusArgument &argument) const override; - - //! \copydoc CValueObject::unmarshallFromDbus() - virtual void unmarshallFromDbus(const QDBusArgument &argument) override; - - //! \copydoc CValueObject::compareImpl - virtual int compareImpl(const CValueObject &other) const override; - private: BLACK_ENABLE_TUPLE_CONVERSION(CComSystem) ChannelSpacing m_channelSpacing; diff --git a/src/blackmisc/aviomodulator.cpp b/src/blackmisc/aviomodulator.cpp index 442c08240..197c1754a 100644 --- a/src/blackmisc/aviomodulator.cpp +++ b/src/blackmisc/aviomodulator.cpp @@ -31,31 +31,6 @@ namespace BlackMisc this->m_frequencyStandby = a; } - /* - * Register metadata - */ - template void CModulator::registerMetadata() - { - qRegisterMetaType(); - qDBusRegisterMetaType(); - } - - /* - * To JSON - */ - template QJsonObject CModulator::toJson() const - { - return BlackMisc::serializeJson(CModulator::jsonMembers(), TupleConverter::toTuple(*this)); - } - - /* - * To JSON - */ - template void CModulator::convertFromJson(const QJsonObject &json) - { - BlackMisc::deserializeJson(json, CModulator::jsonMembers(), TupleConverter::toTuple(*this)); - } - /* * Property by index */ @@ -114,71 +89,6 @@ namespace BlackMisc } } - /* - * Members - */ - template const QStringList &CModulator::jsonMembers() - { - return TupleConverter::jsonMembers(); - } - - /* - * Equal operator == - */ - template bool CModulator::operator ==(const CModulator &other) const - { - if (this == &other) return true; - if (!CAvionicsBase::operator ==(other)) return false; - return TupleConverter::toTuple(*this) == TupleConverter::toTuple(other); - } - - /* - * Equal operator != - */ - template bool CModulator::operator !=(const CModulator &other) const - { - return !(other == (*this)); - } - - /* - * To DBus - */ - template void CModulator::marshallToDbus(QDBusArgument &argument) const - { - CAvionicsBase::marshallToDbus(argument); - argument << TupleConverter::toTuple(*this); - } - - /* - * From DBus - */ - template void CModulator::unmarshallFromDbus(const QDBusArgument &argument) - { - CAvionicsBase::unmarshallFromDbus(argument); - argument >> TupleConverter::toTuple(*this); - } - - /* - * Compare - */ - template int CModulator::compareImpl(const CValueObject &otherBase) const - { - const auto &other = static_cast(otherBase); - int result = compare(TupleConverter::toTuple(*this), TupleConverter::toTuple(other)); - return result == 0 ? CAvionicsBase::compareImpl(otherBase) : result; - } - - /* - * Value hash - */ - template uint CModulator::getValueHash() const - { - QList hashs; - hashs << CAvionicsBase::getValueHash(); - hashs << qHash(TupleConverter::toTuple(*this)); - return BlackMisc::calculateHash(hashs, "CModulator"); - } - // see here for the reason of thess forward instantiations // http://www.parashift.com/c++-faq/separate-template-class-defn-from-decl.html template class CModulator; diff --git a/src/blackmisc/aviomodulator.h b/src/blackmisc/aviomodulator.h index 713d53919..2c85c118f 100644 --- a/src/blackmisc/aviomodulator.h +++ b/src/blackmisc/aviomodulator.h @@ -25,7 +25,7 @@ namespace BlackMisc /*! * Base class for COM, NAV, Squawk units. */ - template class CModulator : public CAvionicsBase + template class CModulator : public CValueObjectStdTuple, CAvionicsBase> { public: //! Column indexes @@ -89,38 +89,20 @@ namespace BlackMisc //! Enabled? void setEnabled(bool enable) { this->m_enabled = enable;} - //! \copydoc CValueObject::toQVariant - virtual QVariant toQVariant() const override { return QVariant::fromValue(*this->derived()); } - - //! \copydoc CValueObject::convertFromQVariant - virtual void convertFromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(derived(), variant); } - - //! \copydoc CValueObject::toJson - virtual QJsonObject toJson() const override; - - //! \copydoc CValueObject::convertFromJson - virtual void convertFromJson(const QJsonObject &json) override; - //! \copydoc CValueObject::propertyByIndex virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override; //! \copydoc CValueObject::setPropertyByIndex(variant, index) virtual void setPropertyByIndex(const QVariant &variant, const BlackMisc::CPropertyIndex &index) override; - //! Register metadata - static void registerMetadata(); - - //! Members - static const QStringList &jsonMembers(); - protected: //! Default constructor CModulator() : - CAvionicsBase("default") {} + CModulator::CValueObjectStdTuple("default") {} //! Constructor CModulator(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency) : - CAvionicsBase(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency) {} + CModulator::CValueObjectStdTuple(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency) {} //! \copydoc CValueObject::convertToQString virtual QString convertToQString(bool i18n = false) const override @@ -157,15 +139,6 @@ namespace BlackMisc this->m_frequencyStandby = BlackMisc::PhysicalQuantities::CFrequency(frequencyMHz, BlackMisc::PhysicalQuantities::CFrequencyUnit::MHz()); } - //! operator == - bool operator ==(const CModulator &other) const; - - //! operator != - bool operator !=(const CModulator &other) const; - - //! \copydoc CValueObject::compareImpl(otherBase) - virtual int compareImpl(const CValueObject &otherBase) const override; - //! COM1 static const QString &NameCom1() { @@ -229,15 +202,6 @@ namespace BlackMisc return f; } - //! \copydoc CValueObject::marshallFromDbus() - virtual void marshallToDbus(QDBusArgument &argument) const override; - - //! \copydoc CValueObject::unmarshallFromDbus() - virtual void unmarshallFromDbus(const QDBusArgument &argument) override; - - //! \copydoc CValueObject::getValueHash() - virtual uint getValueHash() const override; - private: BLACK_ENABLE_TUPLE_CONVERSION(CModulator) BlackMisc::PhysicalQuantities::CFrequency m_frequencyActive; //!< active frequency diff --git a/src/blackmisc/avionavsystem.h b/src/blackmisc/avionavsystem.h index 205b408dc..66dd0e1f8 100644 --- a/src/blackmisc/avionavsystem.h +++ b/src/blackmisc/avionavsystem.h @@ -19,7 +19,7 @@ namespace BlackMisc namespace Aviation { //! NAV system (radio navigation) - class CNavSystem : public CModulator + class CNavSystem : public CValueObjectStdTuple> { public: //! Default constructor @@ -27,7 +27,7 @@ namespace BlackMisc //! Constructor CNavSystem(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency): - CModulator(name, activeFrequency, standbyFrequency) + CValueObjectStdTuple(name, activeFrequency, standbyFrequency) { } //! Set active frequency @@ -42,18 +42,6 @@ namespace BlackMisc this->CModulator::setFrequencyStandbyMHz(frequencyMHz); } - //! Equal operator == - bool operator ==(const CNavSystem &other) const - { - return this->CModulator::operator ==(other); - } - - //! Unequal operator != - bool operator !=(const CNavSystem &other) const - { - return this->CModulator::operator !=(other); - } - //! Valid civil aviation frequency? static bool isValidCivilNavigationFrequency(BlackMisc::PhysicalQuantities::CFrequency f) { diff --git a/src/blackmisc/aviotransponder.cpp b/src/blackmisc/aviotransponder.cpp index 2d09b9693..073d39f07 100644 --- a/src/blackmisc/aviotransponder.cpp +++ b/src/blackmisc/aviotransponder.cpp @@ -111,54 +111,6 @@ namespace BlackMisc return CTransponder::isValidTransponderCode(QString::number(transponderCode)); } - /* - * Marshall - */ - void CTransponder::marshallToDbus(QDBusArgument &argument) const - { - CAvionicsBase::marshallToDbus(argument); - argument << TupleConverter::toTuple(*this); - } - - /* - * Unmarshall - */ - void CTransponder::unmarshallFromDbus(const QDBusArgument &argument) - { - CAvionicsBase::unmarshallFromDbus(argument); - argument >> TupleConverter::toTuple(*this); - } - - /* - * Hash - */ - uint CTransponder::getValueHash() const - { - QList hashs; - hashs << CAvionicsBase::getValueHash(); - hashs << qHash(TupleConverter::toTuple(*this)); - return BlackMisc::calculateHash(hashs, "CTransponder"); - } - - /* - * Compare - */ - int CTransponder::compareImpl(const CValueObject &otherBase) const - { - const auto &other = static_cast(otherBase); - int result = compare(TupleConverter::toTuple(*this), TupleConverter::toTuple(other)); - return result == 0 ? CAvionicsBase::compareImpl(otherBase) : result; - } - - /* - * Register metadata of unit and quantity - */ - void CTransponder::registerMetadata() - { - qRegisterMetaType(); - qDBusRegisterMetaType(); - } - /* * Mode as readable string */ @@ -200,30 +152,6 @@ namespace BlackMisc return m; } - /* - * Members - */ - const QStringList &CTransponder::jsonMembers() - { - return TupleConverter::jsonMembers(); - } - - /* - * To JSON - */ - QJsonObject CTransponder::toJson() const - { - return BlackMisc::serializeJson(CTransponder::jsonMembers(), TupleConverter::toTuple(*this)); - } - - /* - * From Json - */ - void CTransponder::convertFromJson(const QJsonObject &json) - { - BlackMisc::deserializeJson(json, CTransponder::jsonMembers(), TupleConverter::toTuple(*this)); - } - /* * Property */ diff --git a/src/blackmisc/aviotransponder.h b/src/blackmisc/aviotransponder.h index 1749908ca..a12e44454 100644 --- a/src/blackmisc/aviotransponder.h +++ b/src/blackmisc/aviotransponder.h @@ -21,7 +21,7 @@ namespace BlackMisc /*! * Transponder */ - class CTransponder : public CAvionicsBase + class CTransponder : public CValueObjectStdTuple { public: //! Transponder codes @@ -46,23 +46,23 @@ namespace BlackMisc }; //! Default constructor - CTransponder() : CAvionicsBase("transponder"), m_transponderCode(0), m_transponderMode(StateStandby) {} + CTransponder() : CValueObjectStdTuple("transponder"), m_transponderCode(0), m_transponderMode(StateStandby) {} //! Constructor CTransponder(const QString &name, qint32 transponderCode, TransponderMode transponderMode) : - CAvionicsBase(name), m_transponderCode(transponderCode), m_transponderMode(transponderMode) + CValueObjectStdTuple(name), m_transponderCode(transponderCode), m_transponderMode(transponderMode) { } //! Constructor with transponder mode as string CTransponder(const QString &name, qint32 transponderCode, QString transponderMode) : - CAvionicsBase(name), m_transponderCode(transponderCode), m_transponderMode(StateStandby) + CValueObjectStdTuple(name), m_transponderCode(transponderCode), m_transponderMode(StateStandby) { this->setModeAsString(transponderMode); } //! Constructor, code as string CTransponder(const QString &name, QString transponderCode, TransponderMode transponderMode) : - CAvionicsBase(name), m_transponderCode(0), m_transponderMode(transponderMode) + CValueObjectStdTuple(name), m_transponderCode(0), m_transponderMode(transponderMode) { bool ok = false; this->m_transponderCode = transponderCode.toUInt(&ok); @@ -71,7 +71,7 @@ namespace BlackMisc //! Constructor CTransponder(const QString &name, QString transponderCode, QString transponderMode) : - CAvionicsBase(name), m_transponderCode(0), m_transponderMode(StateStandby) + CValueObjectStdTuple(name), m_transponderCode(0), m_transponderMode(StateStandby) { bool ok = false; this->m_transponderCode = transponderCode.toUInt(&ok); @@ -136,57 +136,24 @@ namespace BlackMisc //! Set IFR void setIFR() { this->m_transponderCode = 2000; } - //! operator == - bool operator ==(const CTransponder &other) const - { - return - this->m_transponderCode == other.m_transponderCode && - this->getTransponderMode() == other.getTransponderMode() && - this->CAvionicsBase::operator ==(other); - } - - //! operator != - bool operator !=(const CTransponder &other) const { return !((*this) == other); } - //! Transponder unit static CTransponder getStandardTransponder(qint32 transponderCode, TransponderMode mode) { return CTransponder("Transponder", transponderCode, mode); } - //! \copydoc CValueObject::getValueHash() - virtual uint getValueHash() const override; - - //! \copydoc CValueObject::toJson - virtual QJsonObject toJson() const override; - - //! \copydoc CValueObject::convertFromJson - virtual void convertFromJson(const QJsonObject &json) override; - - //! \copydoc CValueObject::toQVariant - virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); } - - //! \copydoc CValueObject::convertFromQVariant - virtual void convertFromQVariant(const QVariant &variant) override { BlackMisc::setFromQVariant(this, variant); } - //! \copydoc CValueObject::propertyByIndex virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override; //! \copydoc CValueObject::setPropertyByIndex(variant, index) virtual void setPropertyByIndex(const QVariant &variant, const BlackMisc::CPropertyIndex &index) override; - //! JSON member names - static const QStringList &jsonMembers(); - //! Is valid transponder code? static bool isValidTransponderCode(const QString &transponderCode); //! Is valid transponder code? static bool isValidTransponderCode(qint32 transponderMode); - //! Register metadata - static void registerMetadata(); - protected: //! Default value? virtual bool isDefaultValue() const { return this->m_transponderCode == 0; } @@ -194,15 +161,6 @@ namespace BlackMisc //! \copydoc CValueObject::convertToQString virtual QString convertToQString(bool i18n = false) const override; - //! \copydoc CValueObject::marshallFromDbus() - virtual void marshallToDbus(QDBusArgument &argument) const override; - - //! \copydoc CValueObject::unmarshallFromDbus() - virtual void unmarshallFromDbus(const QDBusArgument &argument) override; - - //! \copydoc CValueObject::compareImpl - virtual int compareImpl(const CValueObject &other) const override; - private: BLACK_ENABLE_TUPLE_CONVERSION(CTransponder) qint32 m_transponderCode; //!< Transponder code