/** * @RDE_HEADER@ * Class SidcBuilder * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "sidc_builder_base.h" #include "sidc_codec.h" #include "symbol_dictionary.h" // Qt #include //---------------------------------------------------------------------------- namespace AdvancedSymbology { class ADVANCED_SYMBOLOGY_EXPORT SidcBuilder : SidcBuilderBase { public: explicit SidcBuilder(AdvancedSymbology::SymbolDictionary *symbolDictionary = nullptr); bool setSidc(const QString &sidc) { if (SidcCodec::isEncoded(sidc)) { switch (SidcCodec::decodeSymbologyType(sidc)) { case SymbologyType::APP6B : return initFromApp6B(sidc); case SymbologyType::APP6D : return initFromApp6D(sidc); case SymbologyType::MIL2525C : return false; // return initFromMil2525C(sidc); case SymbologyType::MIL2525D : return initFromMil2525D(sidc); case SymbologyType::None : return false; } } else { if (m_symbolDictionary) { switch (m_symbolDictionary->symbologyType()) { case SymbologyType::APP6B : return initFromApp6B(SidcCodec::encodeComplete(SymbologyType::APP6B, sidc)); case SymbologyType::APP6D : return initFromApp6D(SidcCodec::encodeComplete(SymbologyType::APP6D, sidc)); case SymbologyType::MIL2525C : return false; // return initFromMil2525C(sidc); case SymbologyType::MIL2525D : return initFromMil2525D(SidcCodec::encodeComplete(SymbologyType::MIL2525D, sidc)); case SymbologyType::None : return false; } } return initFromMil2525D(SidcCodec::encodeComplete(SymbologyType::MIL2525D, sidc)); } return false; } // setSidc bool initFromSymbologyType(SymbologyType symbologyType, const QString &sidc); bool initFromSymbologyTypeBaseSymbolCode(SymbologyType symbologyType, const QString &baseSymbolCode); bool initFromMil2525D(const QString &sidcMil2525D); bool initFromMil2525DBaseSymbolCode(const QString &sidcMil2525D_baseSymbolCode); bool initFromApp6B(const QString &sidcApp6B); bool initFromApp6BBaseSymbolCode(const QString &sidcApp6B_baseSymbolCode); bool initFromApp6D(const QString &sidcAPP6D); bool initFromApp6DBaseSymbolCode(const QString &sidcAPP6D_baseSymbolCode); ~SidcBuilder() = default; QString toSidc() const; QString toRawSidc() const; // !!! Attention: digit count starts with 1, not with 0!!! // // Set A, digit 1,2 // // Version // // Set A, digit 3,4 // // StandardIdentity SidcDefinitions::StandardIdentity standardIdentity() const; // 1st and 2nd void setStandardIdentity(const SidcDefinitions::StandardIdentity &standardIdentity); SidcDefinitions::Context context() const; void setContext(SidcDefinitions::Context context); SidcDefinitions::Identity identity() const; void setIdentity(SidcDefinitions::Identity identity); bool isIdentityAssumed() const; // // Set A, digit 5,6 // // SymbolSet SidcDefinitions::SymbolSet symbolSet() const; void setSymbolSet(const SidcDefinitions::SymbolSet &symbolSet); // // Set A, digit 7 // // Status SidcDefinitions::Status status() const; void setStatus(const SidcDefinitions::Status &status); // // Set A, digit 8 // // HQTFDummy SidcDefinitions::HQTFDummy hqTfFd() const; uint hqTfFd_UInt() const; void setHqTfFd(const SidcDefinitions::HQTFDummy &hqTfFd); bool headquarters() const; bool taskForce() const; bool feintDummy() const; // // Set A, digit 9, 10 // SidcDefinitions::AmplifierGroup amplifierGroup() const; // digit 9 void setAmplifierGroup(const SidcDefinitions::AmplifierGroup &lifierGroup); unsigned int amplifier2ndDigit() const; // digit 10 void setAmplifier2ndDigit(unsigned int amplifierSecondDigit); // // Set B, digit 11 - 16 // QString symbolEntityCode() const; void setSymbolEntityCode(const QString &); unsigned int sectorModifier1Digit(); // Set B, digit 17 - 18 unsigned int sectorModifier2Digit(); // set B, digit 19 - 20 void setSectorModifier1Digit(unsigned int); // Set B, digit 17 - 18 void setSectorModifier2Digit(unsigned int); // set B, digit 19 - 20 private: void init(); void initAmplifier(); QString m_first10_mil2525D; QString m_second10_mil2525D; QString m_app6bRawSidc; // // SET A : // // Amplifier (Echelon/Mobility/TowedArray) SidcDefinitions::AmplifierGroup m_amplifierGroup; SidcDefinitions::EchelonBrigadeAndBelow m_e_BrigadeAndBelow; SidcDefinitions::EchelonDivisionAndAbove m_e_DivisionAndAbove; SidcDefinitions::MobilityOnLand m_e_MobilityOnLand; SidcDefinitions::MobilityOnSnow m_e_MobilityOnSnow; SidcDefinitions::MobilityOnWater m_e_MobilityOnWater; SidcDefinitions::NavalTowedArray m_e_NavalTowedArray; // // : SET A // // // SET B : // // not implemented yes // // : SET B // static qint32 _smallest; static qint32 _specialPartA; static qint32 _invalidPartB; static qint32 _retiredPartB; }; } // namespace AdvancedSymbology