/** * Json <-> DDS conversion routines * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2017-11-30 */ // filename: tab_json.cpp #include "tab_json.h" #include #include #include #include #include namespace TrainingAreaBase { template<> int fromJson(const QJsonValue &val, type) { return val.toInt(); } template<> double fromJson(const QJsonValue &val, type) { return val.toDouble(); } template<> qint64 fromJson(const QJsonValue &val, type) { return val.toString().toLongLong(); } QJsonValue toJson(int vec) { return QJsonValue(vec); } QJsonValue toJson(double vec) { return QJsonValue(vec); } QJsonValue toJson(qint64 vec) { return QJsonValue(QString::number(vec)); } // std::string QJsonValue toJson(const std::string &element) { return QJsonValue(QString::fromStdString(element)); } template<> std::string fromJson(const QJsonValue &val, type) { return val.toString().toStdString(); } // std::vector template QJsonArray toJson(const std::vector &vec) { QJsonArray arr; for (const auto &element : vec) arr.push_back(toJson(element)); return arr; } template std::vector fromJson(const QJsonValue &val, type>) { std::vector ret; if (!val.isArray()) return ret; const QJsonArray array(val.toArray()); ret.reserve(array.size()); for(int i = 0; i < array.size(); ++i) ret.push_back(fromJson(array.at(i), type{})); return ret; } // dds::core:vector (bytestream) inline QJsonValue toJson(const std::vector &element) { return QJsonValue(QString::fromLatin1(QByteArray::fromRawData(reinterpret_cast(&element.at(0)), static_cast(element.size())).toBase64())); } template<> std::vector fromJson(const QJsonValue &val, type>) { const QByteArray ba(QByteArray::fromBase64(val.toString().toLatin1())); return LtsUtils::convert>(ba); } // BatteryAlarm QJsonObject toJson(const BatteryAlarm &element) { QJsonObject obj; obj[QStringLiteral("batteryPort")] = element.batteryPort; obj[QStringLiteral("description")] = QString::fromStdString(element.description); obj[QStringLiteral("acknowledge")] = element.acknowledge; obj[QStringLiteral("condition")] = element.condition; obj[QStringLiteral("uniqueAlarmNumber")] = element.uniqueAlarmNumber; obj[QStringLiteral("alarmTime")] = static_cast(element.alarmTime); return obj; } template<> BatteryAlarm fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); BatteryAlarm element; { const QJsonValue val(objElement.value(QStringLiteral("batteryPort"))); element.batteryPort = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("description"))); element.description = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("acknowledge"))); element.acknowledge = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("condition"))); element.condition = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("uniqueAlarmNumber"))); element.uniqueAlarmNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("alarmTime"))); element.alarmTime = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < BatteryAlarm > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // BatteryInfo QJsonObject toJson(const BatteryInfo &element) { QJsonObject obj; obj[QStringLiteral("batteryStates")] = toJson(element.batteryStates); return obj; } template<> BatteryInfo fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); BatteryInfo element; { const QJsonValue val(objElement.value(QStringLiteral("batteryStates"))); element.batteryStates = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < BatteryInfo > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // BatteryState QJsonObject toJson(const BatteryState &element) { QJsonObject obj; obj[QStringLiteral("batteryPort")] = element.batteryPort; obj[QStringLiteral("batteryPercent")] = element.batteryPercent; obj[QStringLiteral("temperature")] = element.temperature; obj[QStringLiteral("frequency")] = element.frequency; obj[QStringLiteral("generic")] = element.generic; obj[QStringLiteral("current")] = element.current; obj[QStringLiteral("switchOrValue")] = element.switchOrValue; obj[QStringLiteral("voltage")] = element.voltage; obj[QStringLiteral("serialNumber")] = QString::fromStdString(element.serialNumber); return obj; } template<> BatteryState fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); BatteryState element; { const QJsonValue val(objElement.value(QStringLiteral("batteryPort"))); element.batteryPort = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("batteryPercent"))); element.batteryPercent = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("temperature"))); element.temperature = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("frequency"))); element.frequency = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("generic"))); element.generic = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("current"))); element.current = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("switchOrValue"))); element.switchOrValue = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("voltage"))); element.voltage = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("serialNumber"))); element.serialNumber = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < BatteryState > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ConnectionState QJsonObject toJson(const ConnectionState &element) { QJsonObject obj; obj[QStringLiteral("name")] = QString::fromStdString(element.name); obj[QStringLiteral("state")] = element.state; return obj; } template<> ConnectionState fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ConnectionState element; { const QJsonValue val(objElement.value(QStringLiteral("name"))); element.name = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("state"))); element.state = val.toBool(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ConnectionState > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Connections QJsonObject toJson(const Connections &element) { QJsonObject obj; obj[QStringLiteral("id")] = element.id; obj[QStringLiteral("connections")] = toJson(element.connections); return obj; } template<> Connections fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Connections element; { const QJsonValue val(objElement.value(QStringLiteral("id"))); element.id = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("connections"))); element.connections = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Connections > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Core::GeoPosition QJsonObject toJson(const Core::GeoPosition &element) { QJsonObject obj; obj[QStringLiteral("z")] = element.z; return obj; } template<> Core::GeoPosition fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Core::GeoPosition element; { const QJsonValue val(objElement.value(QStringLiteral("z"))); element.z = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Core::GeoPosition > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Core::GeoPosition2D QJsonObject toJson(const Core::GeoPosition2D &element) { QJsonObject obj; obj[QStringLiteral("lon")] = element.lon; obj[QStringLiteral("lat")] = element.lat; return obj; } template<> Core::GeoPosition2D fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Core::GeoPosition2D element; { const QJsonValue val(objElement.value(QStringLiteral("lon"))); element.lon = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("lat"))); element.lat = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Core::GeoPosition2D > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Core::GeoPositionRelativeTime QJsonObject toJson(const Core::GeoPositionRelativeTime &element) { QJsonObject obj; obj[QStringLiteral("relativeTime")] = static_cast(element.relativeTime); return obj; } template<> Core::GeoPositionRelativeTime fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Core::GeoPositionRelativeTime element; { const QJsonValue val(objElement.value(QStringLiteral("relativeTime"))); element.relativeTime = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Core::GeoPositionRelativeTime > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Core::Orientation QJsonObject toJson(const Core::Orientation &element) { QJsonObject obj; obj[QStringLiteral("heave")] = element.heave; obj[QStringLiteral("pitch")] = element.pitch; obj[QStringLiteral("roll")] = element.roll; return obj; } template<> Core::Orientation fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Core::Orientation element; { const QJsonValue val(objElement.value(QStringLiteral("heave"))); element.heave = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("pitch"))); element.pitch = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("roll"))); element.roll = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Core::Orientation > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Core::RelativePosition QJsonObject toJson(const Core::RelativePosition &element) { QJsonObject obj; obj[QStringLiteral("offsetX")] = element.offsetX; obj[QStringLiteral("offsetY")] = element.offsetY; obj[QStringLiteral("offsetZ")] = element.offsetZ; return obj; } template<> Core::RelativePosition fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Core::RelativePosition element; { const QJsonValue val(objElement.value(QStringLiteral("offsetX"))); element.offsetX = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("offsetY"))); element.offsetY = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("offsetZ"))); element.offsetZ = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Core::RelativePosition > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // CtaDataError QJsonObject toJson(const CtaDataError &element) { QJsonObject obj; obj[QStringLiteral("reason")] = toJson(static_cast(element.reason)); obj[QStringLiteral("originTelegramId")] = element.originTelegramId; return obj; } template<> CtaDataError fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); CtaDataError element; { const QJsonValue val(objElement.value(QStringLiteral("reason"))); element.reason = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("originTelegramId"))); element.originTelegramId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < CtaDataError > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // DefinitionIed QJsonObject toJson(const DefinitionIed &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("type")] = element.type; obj[QStringLiteral("remoteTrigger")] = element.remoteTrigger; obj[QStringLiteral("switchTrigger")] = element.switchTrigger; obj[QStringLiteral("lightBarrierTrigger")] = element.lightBarrierTrigger; obj[QStringLiteral("tautWireTrigger")] = element.tautWireTrigger; obj[QStringLiteral("explosiveForce")] = element.explosiveForce; obj[QStringLiteral("partyId")] = element.partyId; obj[QStringLiteral("pairingState")] = element.pairingState; if (element.pairedId.is_set()) obj[QStringLiteral("pairedId")] = *element.pairedId; return obj; } template<> DefinitionIed fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); DefinitionIed element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("type"))); element.type = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("remoteTrigger"))); element.remoteTrigger = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("switchTrigger"))); element.switchTrigger = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("lightBarrierTrigger"))); element.lightBarrierTrigger = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("tautWireTrigger"))); element.tautWireTrigger = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("explosiveForce"))); element.explosiveForce = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("partyId"))); element.partyId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("pairingState"))); element.pairingState = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("pairedId"))); if (!val.isNull()) element.pairedId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < DefinitionIed > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Dispersion QJsonObject toJson(const Dispersion &element) { QJsonObject obj; obj[QStringLiteral("longitudinal")] = element.longitudinal; obj[QStringLiteral("lateral")] = element.lateral; obj[QStringLiteral("longitudinalH")] = element.longitudinalH; obj[QStringLiteral("lateralH")] = element.lateralH; return obj; } template<> Dispersion fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Dispersion element; { const QJsonValue val(objElement.value(QStringLiteral("longitudinal"))); element.longitudinal = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("lateral"))); element.lateral = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("longitudinalH"))); element.longitudinalH = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("lateralH"))); element.lateralH = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Dispersion > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // DusSingleMineState QJsonObject toJson(const DusSingleMineState &element) { QJsonObject obj; obj[QStringLiteral("mineId")] = element.mineId; obj[QStringLiteral("effectStart")] = static_cast(element.effectStart); obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("chargeTypeId")] = element.chargeTypeId; obj[QStringLiteral("state")] = element.state; return obj; } template<> DusSingleMineState fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); DusSingleMineState element; { const QJsonValue val(objElement.value(QStringLiteral("mineId"))); element.mineId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("effectStart"))); element.effectStart = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("chargeTypeId"))); element.chargeTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("state"))); element.state = val.toBool(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < DusSingleMineState > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_CeaseFiring QJsonObject toJson(const EX_CeaseFiring &element) { QJsonObject obj; obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("effectorId")] = toJson(static_cast(element.effectorId)); obj[QStringLiteral("category")] = toJson(static_cast(element.category)); obj[QStringLiteral("reference")] = QString::fromStdString(element.reference); obj[QStringLiteral("targetPosNumber")] = element.targetPosNumber; obj[QStringLiteral("coordinate")] = toJson(element.coordinate); obj[QStringLiteral("radius")] = element.radius; obj[QStringLiteral("unloadRound")] = element.unloadRound; return obj; } template<> EX_CeaseFiring fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_CeaseFiring element; { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("effectorId"))); element.effectorId = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("category"))); element.category = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("reference"))); element.reference = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("targetPosNumber"))); element.targetPosNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("coordinate"))); element.coordinate = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("radius"))); element.radius = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("unloadRound"))); element.unloadRound = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_CeaseFiring > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_DoNotFire QJsonObject toJson(const EX_DoNotFire &element) { QJsonObject obj; obj[QStringLiteral("reference")] = QString::fromStdString(element.reference); obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("effectorId")] = toJson(static_cast(element.effectorId)); return obj; } template<> EX_DoNotFire fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_DoNotFire element; { const QJsonValue val(objElement.value(QStringLiteral("reference"))); element.reference = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("effectorId"))); element.effectorId = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_DoNotFire > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_ExplorationResult QJsonObject toJson(const EX_ExplorationResult &element) { QJsonObject obj; obj[QStringLiteral("reconnaissanceUnit")] = toJson(element.reconnaissanceUnit); obj[QStringLiteral("loadingArea")] = toJson(element.loadingArea); obj[QStringLiteral("positions")] = toJson(element.positions); return obj; } template<> EX_ExplorationResult fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_ExplorationResult element; { const QJsonValue val(objElement.value(QStringLiteral("reconnaissanceUnit"))); element.reconnaissanceUnit = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("loadingArea"))); element.loadingArea = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("positions"))); element.positions = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_ExplorationResult > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_Fire QJsonObject toJson(const EX_Fire &element) { QJsonObject obj; obj[QStringLiteral("reference")] = QString::fromStdString(element.reference); obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("effectorId")] = toJson(static_cast(element.effectorId)); return obj; } template<> EX_Fire fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_Fire element; { const QJsonValue val(objElement.value(QStringLiteral("reference"))); element.reference = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("effectorId"))); element.effectorId = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_Fire > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_GuidingLines QJsonObject toJson(const EX_GuidingLines &element) { QJsonObject obj; obj[QStringLiteral("kindGuidingLine")] = toJson(static_cast(element.kindGuidingLine)); obj[QStringLiteral("name")] = QString::fromStdString(element.name); obj[QStringLiteral("reportNumber")] = element.reportNumber; obj[QStringLiteral("partOfTroup")] = toJson(element.partOfTroup); obj[QStringLiteral("startTime")] = element.startTime; obj[QStringLiteral("endTime")] = element.endTime; obj[QStringLiteral("coordinates")] = toJson(element.coordinates); obj[QStringLiteral("center")] = toJson(element.center); obj[QStringLiteral("radius")] = element.radius; obj[QStringLiteral("height")] = element.height; return obj; } template<> EX_GuidingLines fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_GuidingLines element; { const QJsonValue val(objElement.value(QStringLiteral("kindGuidingLine"))); element.kindGuidingLine = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("name"))); element.name = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("reportNumber"))); element.reportNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("partOfTroup"))); element.partOfTroup = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("startTime"))); element.startTime = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("endTime"))); element.endTime = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("coordinates"))); element.coordinates = fromJson>(val); } { const QJsonValue val(objElement.value(QStringLiteral("center"))); element.center = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("radius"))); element.radius = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("height"))); element.height = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_GuidingLines > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_GuidingLinesAndBoundaries QJsonObject toJson(const EX_GuidingLinesAndBoundaries &element) { QJsonObject obj; obj[QStringLiteral("kind")] = toJson(static_cast(element.kind)); obj[QStringLiteral("name")] = QString::fromStdString(element.name); obj[QStringLiteral("reportNumber")] = element.reportNumber; obj[QStringLiteral("partOfTroup")] = toJson(element.partOfTroup); obj[QStringLiteral("startTinme")] = element.startTinme; obj[QStringLiteral("endTinme")] = element.endTinme; obj[QStringLiteral("coordinates")] = toJson(element.coordinates); obj[QStringLiteral("center")] = toJson(element.center); obj[QStringLiteral("radius")] = element.radius; obj[QStringLiteral("maxHeight")] = element.maxHeight; return obj; } template<> EX_GuidingLinesAndBoundaries fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_GuidingLinesAndBoundaries element; { const QJsonValue val(objElement.value(QStringLiteral("kind"))); element.kind = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("name"))); element.name = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("reportNumber"))); element.reportNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("partOfTroup"))); element.partOfTroup = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("startTinme"))); element.startTinme = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("endTinme"))); element.endTinme = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("coordinates"))); element.coordinates = fromJson>(val); } { const QJsonValue val(objElement.value(QStringLiteral("center"))); element.center = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("radius"))); element.radius = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("maxHeight"))); element.maxHeight = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_GuidingLinesAndBoundaries > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_MessageRevocation QJsonObject toJson(const EX_MessageRevocation &element) { QJsonObject obj; obj[QStringLiteral("messageSource")] = toJson(element.messageSource); obj[QStringLiteral("messageIdentifier")] = element.messageIdentifier; return obj; } template<> EX_MessageRevocation fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_MessageRevocation element; { const QJsonValue val(objElement.value(QStringLiteral("messageSource"))); element.messageSource = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("messageIdentifier"))); element.messageIdentifier = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_MessageRevocation > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_ReportEffectorUnit QJsonObject toJson(const EX_ReportEffectorUnit &element) { QJsonObject obj; obj[QStringLiteral("effectingSystemType")] = toJson(static_cast(element.effectingSystemType)); obj[QStringLiteral("status")] = toJson(static_cast(element.status)); obj[QStringLiteral("unit")] = toJson(element.unit); obj[QStringLiteral("center")] = toJson(element.center); obj[QStringLiteral("coordinates")] = toJson(element.coordinates); obj[QStringLiteral("charges")] = toJson(element.charges); obj[QStringLiteral("effectableArea")] = toJson(element.effectableArea); return obj; } template<> EX_ReportEffectorUnit fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_ReportEffectorUnit element; { const QJsonValue val(objElement.value(QStringLiteral("effectingSystemType"))); element.effectingSystemType = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("status"))); element.status = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("unit"))); element.unit = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("center"))); element.center = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("coordinates"))); element.coordinates = fromJson>(val); } { const QJsonValue val(objElement.value(QStringLiteral("charges"))); element.charges = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("effectableArea"))); element.effectableArea = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_ReportEffectorUnit > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EX_StartFiring QJsonObject toJson(const EX_StartFiring &element) { QJsonObject obj; obj[QStringLiteral("reference")] = QString::fromStdString(element.reference); obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("effectorId")] = toJson(static_cast(element.effectorId)); return obj; } template<> EX_StartFiring fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EX_StartFiring element; { const QJsonValue val(objElement.value(QStringLiteral("reference"))); element.reference = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("effectorId"))); element.effectorId = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EX_StartFiring > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EmergencyCall QJsonObject toJson(const EmergencyCall &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); return obj; } template<> EmergencyCall fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EmergencyCall element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EmergencyCall > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Equipment QJsonObject toJson(const Equipment &element) { QJsonObject obj; obj[QStringLiteral("equipmentFunctionId")] = element.equipmentFunctionId; obj[QStringLiteral("subDeviceId")] = element.subDeviceId; obj[QStringLiteral("unqiueId")] = element.unqiueId; return obj; } template<> Equipment fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Equipment element; { const QJsonValue val(objElement.value(QStringLiteral("equipmentFunctionId"))); element.equipmentFunctionId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("subDeviceId"))); element.subDeviceId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("unqiueId"))); element.unqiueId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Equipment > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentBase QJsonObject toJson(const EquipmentBase &element) { QJsonObject obj; obj[QStringLiteral("equipmentNumber")] = element.equipmentNumber; obj[QStringLiteral("sampleTime")] = static_cast(element.sampleTime); return obj; } template<> EquipmentBase fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentBase element; { const QJsonValue val(objElement.value(QStringLiteral("equipmentNumber"))); element.equipmentNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("sampleTime"))); element.sampleTime = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentBase > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentBite QJsonObject toJson(const EquipmentBite &element) { QJsonObject obj; obj[QStringLiteral("registerType")] = element.registerType; obj[QStringLiteral("biteState")] = element.biteState; obj[QStringLiteral("configState")] = element.configState; obj[QStringLiteral("batteryState")] = element.batteryState; obj[QStringLiteral("configError")] = element.configError; obj[QStringLiteral("biteErrors")] = toJson(element.biteErrors); return obj; } template<> EquipmentBite fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentBite element; { const QJsonValue val(objElement.value(QStringLiteral("registerType"))); element.registerType = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("biteState"))); element.biteState = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("configState"))); element.configState = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("batteryState"))); element.batteryState = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("configError"))); element.configError = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("biteErrors"))); element.biteErrors = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentBite > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentBiteError QJsonObject toJson(const EquipmentBiteError &element) { QJsonObject obj; obj[QStringLiteral("errorNumber")] = element.errorNumber; obj[QStringLiteral("canDeviceNumber")] = element.canDeviceNumber; obj[QStringLiteral("subdeviceNumber")] = element.subdeviceNumber; obj[QStringLiteral("uniqueId")] = element.uniqueId; return obj; } template<> EquipmentBiteError fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentBiteError element; { const QJsonValue val(objElement.value(QStringLiteral("errorNumber"))); element.errorNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("canDeviceNumber"))); element.canDeviceNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("subdeviceNumber"))); element.subdeviceNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("uniqueId"))); element.uniqueId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentBiteError > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentConfigurationReport QJsonObject toJson(const EquipmentConfigurationReport &element) { QJsonObject obj; obj[QStringLiteral("canStartupTime")] = element.canStartupTime; obj[QStringLiteral("equipmentType")] = element.equipmentType; obj[QStringLiteral("loginWaittimeBitweenTrys")] = element.loginWaittimeBitweenTrys; obj[QStringLiteral("loginMaxRetryCount")] = element.loginMaxRetryCount; obj[QStringLiteral("loginMasteringFlag")] = element.loginMasteringFlag; obj[QStringLiteral("canDeviceConfiguration")] = element.canDeviceConfiguration; obj[QStringLiteral("displayDeviceVoiceOutput")] = element.displayDeviceVoiceOutput; obj[QStringLiteral("displayDeviceLanguage")] = toJson(static_cast(element.displayDeviceLanguage)); obj[QStringLiteral("pyrotechnics")] = element.pyrotechnics; obj[QStringLiteral("mineHandgrenadeSensorMode")] = toJson(static_cast(element.mineHandgrenadeSensorMode)); obj[QStringLiteral("mineHandgrenadeSensorEnergySaving")] = element.mineHandgrenadeSensorEnergySaving; obj[QStringLiteral("firMode")] = toJson(static_cast(element.firMode)); obj[QStringLiteral("minelayerMode")] = toJson(static_cast(element.minelayerMode)); obj[QStringLiteral("specialSensorStandard")] = toJson(static_cast(element.specialSensorStandard)); obj[QStringLiteral("agdusHwMode")] = toJson(static_cast(element.agdusHwMode)); obj[QStringLiteral("positionUpdateIntervall")] = toJson(static_cast(element.positionUpdateIntervall)); obj[QStringLiteral("displayTextMainGroup")] = element.displayTextMainGroup; obj[QStringLiteral("displayTextSubGroup")] = element.displayTextSubGroup; obj[QStringLiteral("vulnerabilityModelAgdus")] = element.vulnerabilityModelAgdus; obj[QStringLiteral("vulnerabilityModelMineIed")] = element.vulnerabilityModelMineIed; obj[QStringLiteral("vulnerabilityModelAreaFire")] = element.vulnerabilityModelAreaFire; obj[QStringLiteral("vulnerabilityModelOperatingResource")] = element.vulnerabilityModelOperatingResource; obj[QStringLiteral("vulnerabilityModelACWeaponry")] = element.vulnerabilityModelACWeaponry; return obj; } template<> EquipmentConfigurationReport fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentConfigurationReport element; { const QJsonValue val(objElement.value(QStringLiteral("canStartupTime"))); element.canStartupTime = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("equipmentType"))); element.equipmentType = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loginWaittimeBitweenTrys"))); element.loginWaittimeBitweenTrys = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loginMaxRetryCount"))); element.loginMaxRetryCount = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loginMasteringFlag"))); element.loginMasteringFlag = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("canDeviceConfiguration"))); element.canDeviceConfiguration = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("displayDeviceVoiceOutput"))); element.displayDeviceVoiceOutput = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("displayDeviceLanguage"))); element.displayDeviceLanguage = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("pyrotechnics"))); element.pyrotechnics = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("mineHandgrenadeSensorMode"))); element.mineHandgrenadeSensorMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("mineHandgrenadeSensorEnergySaving"))); element.mineHandgrenadeSensorEnergySaving = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("firMode"))); element.firMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("minelayerMode"))); element.minelayerMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("specialSensorStandard"))); element.specialSensorStandard = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("agdusHwMode"))); element.agdusHwMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("positionUpdateIntervall"))); element.positionUpdateIntervall = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("displayTextMainGroup"))); element.displayTextMainGroup = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("displayTextSubGroup"))); element.displayTextSubGroup = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityModelAgdus"))); element.vulnerabilityModelAgdus = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityModelMineIed"))); element.vulnerabilityModelMineIed = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityModelAreaFire"))); element.vulnerabilityModelAreaFire = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityModelOperatingResource"))); element.vulnerabilityModelOperatingResource = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityModelACWeaponry"))); element.vulnerabilityModelACWeaponry = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentConfigurationReport > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentEvent QJsonObject toJson(const EquipmentEvent &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("source")] = toJson(element.source); obj[QStringLiteral("code")] = element.code; if (element.data.is_set()) obj[QStringLiteral("data")] = toJson(*element.data); return obj; } template<> EquipmentEvent fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentEvent element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("source"))); element.source = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("code"))); element.code = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("data"))); if (!val.isNull()) element.data = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentEvent > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentGearAssignment QJsonObject toJson(const EquipmentGearAssignment &element) { QJsonObject obj; obj[QStringLiteral("gears")] = toJson(element.gears); return obj; } template<> EquipmentGearAssignment fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentGearAssignment element; { const QJsonValue val(objElement.value(QStringLiteral("gears"))); element.gears = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentGearAssignment > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentGearChargeState QJsonObject toJson(const EquipmentGearChargeState &element) { QJsonObject obj; obj[QStringLiteral("charge")] = toJson(element.charge); return obj; } template<> EquipmentGearChargeState fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentGearChargeState element; { const QJsonValue val(objElement.value(QStringLiteral("charge"))); element.charge = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentGearChargeState > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentGearEvent QJsonObject toJson(const EquipmentGearEvent &element) { QJsonObject obj; obj[QStringLiteral("chargeAmount")] = element.chargeAmount; obj[QStringLiteral("charge")] = toJson(element.charge); return obj; } template<> EquipmentGearEvent fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentGearEvent element; { const QJsonValue val(objElement.value(QStringLiteral("chargeAmount"))); element.chargeAmount = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("charge"))); element.charge = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentGearEvent > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentMessage QJsonObject toJson(const EquipmentMessage &element) { QJsonObject obj; obj[QStringLiteral("subject")] = QString::fromStdString(element.subject); obj[QStringLiteral("text")] = QString::fromStdString(element.text); obj[QStringLiteral("sender")] = element.sender; obj[QStringLiteral("receiver")] = element.receiver; return obj; } template<> EquipmentMessage fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentMessage element; { const QJsonValue val(objElement.value(QStringLiteral("subject"))); element.subject = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("text"))); element.text = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("sender"))); element.sender = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("receiver"))); element.receiver = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentMessage > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentOperationalState QJsonObject toJson(const EquipmentOperationalState &element) { QJsonObject obj; if (element.isManipulation.is_set()) obj[QStringLiteral("isManipulation")] = *element.isManipulation; if (element.equipmentFunctionId.is_set()) obj[QStringLiteral("equipmentFunctionId")] = *element.equipmentFunctionId; if (element.nbcProtectionActive.is_set()) obj[QStringLiteral("nbcProtectionActive")] = *element.nbcProtectionActive; return obj; } template<> EquipmentOperationalState fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentOperationalState element; { const QJsonValue val(objElement.value(QStringLiteral("isManipulation"))); if (!val.isNull()) element.isManipulation = val.toBool(); } { const QJsonValue val(objElement.value(QStringLiteral("equipmentFunctionId"))); if (!val.isNull()) element.equipmentFunctionId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("nbcProtectionActive"))); if (!val.isNull()) element.nbcProtectionActive = val.toBool(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentOperationalState > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentPosition QJsonObject toJson(const EquipmentPosition &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); if (element.mountedParticipants.is_set()) obj[QStringLiteral("mountedParticipants")] = toJson(*element.mountedParticipants); if (element.orientation.is_set()) obj[QStringLiteral("orientation")] = toJson(*element.orientation); return obj; } template<> EquipmentPosition fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentPosition element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("mountedParticipants"))); if (!val.isNull()) element.mountedParticipants = fromJson>(val); } { const QJsonValue val(objElement.value(QStringLiteral("orientation"))); if (!val.isNull()) element.orientation = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentPosition > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentState QJsonObject toJson(const EquipmentState &element) { QJsonObject obj; obj[QStringLiteral("vulnerabilityState")] = toJson(static_cast(element.vulnerabilityState)); obj[QStringLiteral("vulnerabilityKindId")] = element.vulnerabilityKindId; obj[QStringLiteral("vitality")] = element.vitality; obj[QStringLiteral("vulnerabilityBits")] = element.vulnerabilityBits; if (element.position.is_set()) obj[QStringLiteral("position")] = toJson(*element.position); obj[QStringLiteral("originatorId")] = element.originatorId; obj[QStringLiteral("originatorType")] = toJson(static_cast(element.originatorType)); obj[QStringLiteral("originatorChargeTypeId")] = element.originatorChargeTypeId; return obj; } template<> EquipmentState fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentState element; { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityState"))); element.vulnerabilityState = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityKindId"))); element.vulnerabilityKindId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("vitality"))); element.vitality = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityBits"))); element.vulnerabilityBits = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("position"))); if (!val.isNull()) element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("originatorId"))); element.originatorId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("originatorType"))); element.originatorType = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("originatorChargeTypeId"))); element.originatorChargeTypeId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentState > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // EquipmentSwVersion QJsonObject toJson(const EquipmentSwVersion &element) { QJsonObject obj; obj[QStringLiteral("swVersion")] = element.swVersion; return obj; } template<> EquipmentSwVersion fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); EquipmentSwVersion element; { const QJsonValue val(objElement.value(QStringLiteral("swVersion"))); element.swVersion = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < EquipmentSwVersion > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ExAwesPlanning QJsonObject toJson(const ExAwesPlanning &element) { QJsonObject obj; obj[QStringLiteral("reference")] = QString::fromStdString(element.reference); obj[QStringLiteral("targetData")] = toJson(element.targetData); obj[QStringLiteral("firingType")] = element.firingType; obj[QStringLiteral("request")] = QString::fromStdString(element.request); obj[QStringLiteral("duration")] = element.duration; obj[QStringLiteral("fireCommand")] = toJson(element.fireCommand); return obj; } template<> ExAwesPlanning fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ExAwesPlanning element; { const QJsonValue val(objElement.value(QStringLiteral("reference"))); element.reference = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("targetData"))); element.targetData = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("firingType"))); element.firingType = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("request"))); element.request = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("duration"))); element.duration = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("fireCommand"))); element.fireCommand = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ExAwesPlanning > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ExReportEffector QJsonObject toJson(const ExReportEffector &element) { QJsonObject obj; obj[QStringLiteral("effectingSystemType")] = toJson(static_cast(element.effectingSystemType)); obj[QStringLiteral("effectorId")] = toJson(static_cast(element.effectorId)); obj[QStringLiteral("status")] = toJson(static_cast(element.status)); obj[QStringLiteral("effectorUnit")] = toJson(element.effectorUnit); obj[QStringLiteral("charges")] = toJson(element.charges); obj[QStringLiteral("coordinate")] = toJson(element.coordinate); obj[QStringLiteral("effectableArea")] = toJson(element.effectableArea); return obj; } template<> ExReportEffector fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ExReportEffector element; { const QJsonValue val(objElement.value(QStringLiteral("effectingSystemType"))); element.effectingSystemType = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("effectorId"))); element.effectorId = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("status"))); element.status = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("effectorUnit"))); element.effectorUnit = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("charges"))); element.charges = fromJson>(val); } { const QJsonValue val(objElement.value(QStringLiteral("coordinate"))); element.coordinate = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("effectableArea"))); element.effectableArea = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ExReportEffector > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Ex_ReconResults QJsonObject toJson(const Ex_ReconResults &element) { QJsonObject obj; obj[QStringLiteral("explorationResult")] = toJson(element.explorationResult); return obj; } template<> Ex_ReconResults fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Ex_ReconResults element; { const QJsonValue val(objElement.value(QStringLiteral("explorationResult"))); element.explorationResult = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Ex_ReconResults > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Ex_ReportSupplyZone QJsonObject toJson(const Ex_ReportSupplyZone &element) { QJsonObject obj; obj[QStringLiteral("effectorUnit")] = toJson(element.effectorUnit); obj[QStringLiteral("coordinate")] = toJson(element.coordinate); obj[QStringLiteral("charges")] = toJson(element.charges); return obj; } template<> Ex_ReportSupplyZone fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Ex_ReportSupplyZone element; { const QJsonValue val(objElement.value(QStringLiteral("effectorUnit"))); element.effectorUnit = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("coordinate"))); element.coordinate = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("charges"))); element.charges = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Ex_ReportSupplyZone > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // FireSmokeMarkerData QJsonObject toJson(const FireSmokeMarkerData &element) { QJsonObject obj; obj[QStringLiteral("payload")] = toJson(element.payload); return obj; } template<> FireSmokeMarkerData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); FireSmokeMarkerData element; { const QJsonValue val(objElement.value(QStringLiteral("payload"))); element.payload = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < FireSmokeMarkerData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // FunctionalAreaEntry QJsonObject toJson(const FunctionalAreaEntry &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("aesItemId")] = element.aesItemId; return obj; } template<> FunctionalAreaEntry fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); FunctionalAreaEntry element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("aesItemId"))); element.aesItemId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < FunctionalAreaEntry > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // Gear QJsonObject toJson(const Gear &element) { QJsonObject obj; obj[QStringLiteral("gearId")] = element.gearId; obj[QStringLiteral("gearTypeId")] = element.gearTypeId; obj[QStringLiteral("chargeCounting")] = element.chargeCounting; return obj; } template<> Gear fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); Gear element; { const QJsonValue val(objElement.value(QStringLiteral("gearId"))); element.gearId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("gearTypeId"))); element.gearTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("chargeCounting"))); element.chargeCounting = val.toBool(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < Gear > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // GearCharge QJsonObject toJson(const GearCharge &element) { QJsonObject obj; obj[QStringLiteral("gearId")] = element.gearId; obj[QStringLiteral("gearTypeId")] = element.gearTypeId; obj[QStringLiteral("chargeTypeId")] = element.chargeTypeId; obj[QStringLiteral("remain")] = element.remain; return obj; } template<> GearCharge fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); GearCharge element; { const QJsonValue val(objElement.value(QStringLiteral("gearId"))); element.gearId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("gearTypeId"))); element.gearTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("chargeTypeId"))); element.chargeTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("remain"))); element.remain = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < GearCharge > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // GeopairingData QJsonObject toJson(const GeopairingData &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("payload")] = toJson(element.payload); return obj; } template<> GeopairingData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); GeopairingData element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("payload"))); element.payload = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < GeopairingData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // IedBaseData QJsonObject toJson(const IedBaseData &element) { QJsonObject obj; obj[QStringLiteral("iedId")] = element.iedId; obj[QStringLiteral("tacticalState")] = element.tacticalState; obj[QStringLiteral("statePyrotechnics")] = element.statePyrotechnics; return obj; } template<> IedBaseData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); IedBaseData element; { const QJsonValue val(objElement.value(QStringLiteral("iedId"))); element.iedId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("tacticalState"))); element.tacticalState = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("statePyrotechnics"))); element.statePyrotechnics = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < IedBaseData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L12_TargetData QJsonObject toJson(const L12_TargetData &element) { QJsonObject obj; obj[QStringLiteral("number")] = element.number; obj[QStringLiteral("geometry")] = toJson(static_cast(element.geometry)); obj[QStringLiteral("coordinate")] = toJson(element.coordinate); obj[QStringLiteral("relativeCoordinate")] = toJson(element.relativeCoordinate); obj[QStringLiteral("radius")] = element.radius; obj[QStringLiteral("width")] = element.width; obj[QStringLiteral("length")] = element.length; obj[QStringLiteral("targetAxis")] = element.targetAxis; obj[QStringLiteral("zog")] = element.zog; obj[QStringLiteral("elements")] = element.elements; obj[QStringLiteral("tagetType")] = element.tagetType; obj[QStringLiteral("tagetSubtype")] = element.tagetSubtype; return obj; } template<> L12_TargetData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L12_TargetData element; { const QJsonValue val(objElement.value(QStringLiteral("number"))); element.number = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("geometry"))); element.geometry = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("coordinate"))); element.coordinate = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("relativeCoordinate"))); element.relativeCoordinate = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("radius"))); element.radius = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("width"))); element.width = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("length"))); element.length = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("targetAxis"))); element.targetAxis = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("zog"))); element.zog = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("elements"))); element.elements = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("tagetType"))); element.tagetType = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("tagetSubtype"))); element.tagetSubtype = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L12_TargetData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L13_EffectorUnit QJsonObject toJson(const L13_EffectorUnit &element) { QJsonObject obj; obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("r")] = element.r; obj[QStringLiteral("oi")] = toJson(static_cast(element.oi)); return obj; } template<> L13_EffectorUnit fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L13_EffectorUnit element; { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("r"))); element.r = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("oi"))); element.oi = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L13_EffectorUnit > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L18_EffectableArea QJsonObject toJson(const L18_EffectableArea &element) { QJsonObject obj; obj[QStringLiteral("direction")] = element.direction; obj[QStringLiteral("left")] = element.left; obj[QStringLiteral("right")] = element.right; return obj; } template<> L18_EffectableArea fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L18_EffectableArea element; { const QJsonValue val(objElement.value(QStringLiteral("direction"))); element.direction = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("left"))); element.left = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("right"))); element.right = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L18_EffectableArea > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L29_ReconnaissanceUnit QJsonObject toJson(const L29_ReconnaissanceUnit &element) { QJsonObject obj; obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("r")] = element.r; obj[QStringLiteral("oi")] = toJson(static_cast(element.oi)); return obj; } template<> L29_ReconnaissanceUnit fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L29_ReconnaissanceUnit element; { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("r"))); element.r = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("oi"))); element.oi = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L29_ReconnaissanceUnit > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L30_reconnaissancePositionArea QJsonObject toJson(const L30_reconnaissancePositionArea &element) { QJsonObject obj; obj[QStringLiteral("direction")] = element.direction; obj[QStringLiteral("left")] = element.left; obj[QStringLiteral("right")] = element.right; return obj; } template<> L30_reconnaissancePositionArea fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L30_reconnaissancePositionArea element; { const QJsonValue val(objElement.value(QStringLiteral("direction"))); element.direction = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("left"))); element.left = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("right"))); element.right = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L30_reconnaissancePositionArea > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L31_MailAddress QJsonObject toJson(const L31_MailAddress &element) { QJsonObject obj; obj[QStringLiteral("mailAddres")] = QString::fromStdString(element.mailAddres); return obj; } template<> L31_MailAddress fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L31_MailAddress element; { const QJsonValue val(objElement.value(QStringLiteral("mailAddres"))); element.mailAddres = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L31_MailAddress > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L33_FireCommand QJsonObject toJson(const L33_FireCommand &element) { QJsonObject obj; obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("type")] = element.type; obj[QStringLiteral("L34_effector")] = toJson(element.L34_effector); return obj; } template<> L33_FireCommand fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L33_FireCommand element; { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("type"))); element.type = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("L34_effector"))); element.L34_effector = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L33_FireCommand > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L34_effector QJsonObject toJson(const L34_effector &element) { QJsonObject obj; obj[QStringLiteral("effectorId")] = toJson(static_cast(element.effectorId)); obj[QStringLiteral("targetPos")] = toJson(element.targetPos); obj[QStringLiteral("flightTime")] = element.flightTime; obj[QStringLiteral("maxHeight")] = element.maxHeight; obj[QStringLiteral("direction")] = element.direction; obj[QStringLiteral("angleOfFall")] = element.angleOfFall; obj[QStringLiteral("firingCommandCharges")] = toJson(element.firingCommandCharges); obj[QStringLiteral("trajectory")] = toJson(element.trajectory); obj[QStringLiteral("scattering")] = toJson(element.scattering); return obj; } template<> L34_effector fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L34_effector element; { const QJsonValue val(objElement.value(QStringLiteral("effectorId"))); element.effectorId = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("targetPos"))); element.targetPos = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("flightTime"))); element.flightTime = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("maxHeight"))); element.maxHeight = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("direction"))); element.direction = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("angleOfFall"))); element.angleOfFall = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("firingCommandCharges"))); element.firingCommandCharges = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("trajectory"))); element.trajectory = fromJson>(val); } { const QJsonValue val(objElement.value(QStringLiteral("scattering"))); element.scattering = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L34_effector > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L35_TrajectoryPoint QJsonObject toJson(const L35_TrajectoryPoint &element) { QJsonObject obj; obj[QStringLiteral("time")] = element.time; obj[QStringLiteral("relPos")] = toJson(element.relPos); return obj; } template<> L35_TrajectoryPoint fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L35_TrajectoryPoint element; { const QJsonValue val(objElement.value(QStringLiteral("time"))); element.time = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("relPos"))); element.relPos = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L35_TrajectoryPoint > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L36_FiringCommandCharges QJsonObject toJson(const L36_FiringCommandCharges &element) { QJsonObject obj; obj[QStringLiteral("chargeType")] = element.chargeType; obj[QStringLiteral("loadTypeId")] = element.loadTypeId; obj[QStringLiteral("loadNumber")] = element.loadNumber; obj[QStringLiteral("igniterTypeId")] = element.igniterTypeId; obj[QStringLiteral("igniterFunctionId")] = element.igniterFunctionId; obj[QStringLiteral("igniterTime")] = element.igniterTime; obj[QStringLiteral("amount")] = element.amount; obj[QStringLiteral("interval")] = element.interval; return obj; } template<> L36_FiringCommandCharges fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L36_FiringCommandCharges element; { const QJsonValue val(objElement.value(QStringLiteral("chargeType"))); element.chargeType = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loadTypeId"))); element.loadTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loadNumber"))); element.loadNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("igniterTypeId"))); element.igniterTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("igniterFunctionId"))); element.igniterFunctionId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("igniterTime"))); element.igniterTime = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("amount"))); element.amount = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("interval"))); element.interval = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L36_FiringCommandCharges > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L39_ScatteringData QJsonObject toJson(const L39_ScatteringData &element) { QJsonObject obj; obj[QStringLiteral("mphWidth")] = element.mphWidth; obj[QStringLiteral("mphLength")] = element.mphLength; obj[QStringLiteral("mphWidthDetonationHeight")] = element.mphWidthDetonationHeight; obj[QStringLiteral("mphLengthDetonationHeight")] = element.mphLengthDetonationHeight; return obj; } template<> L39_ScatteringData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L39_ScatteringData element; { const QJsonValue val(objElement.value(QStringLiteral("mphWidth"))); element.mphWidth = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("mphLength"))); element.mphLength = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("mphWidthDetonationHeight"))); element.mphWidthDetonationHeight = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("mphLengthDetonationHeight"))); element.mphLengthDetonationHeight = val.toDouble(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L39_ScatteringData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L3_Unit QJsonObject toJson(const L3_Unit &element) { QJsonObject obj; obj[QStringLiteral("identifier")] = QString::fromStdString(element.identifier); obj[QStringLiteral("r")] = element.r; obj[QStringLiteral("oi")] = toJson(static_cast(element.oi)); return obj; } template<> L3_Unit fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L3_Unit element; { const QJsonValue val(objElement.value(QStringLiteral("identifier"))); element.identifier = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("r"))); element.r = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("oi"))); element.oi = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L3_Unit > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // L8_Charges QJsonObject toJson(const L8_Charges &element) { QJsonObject obj; obj[QStringLiteral("chargeTypeId")] = element.chargeTypeId; obj[QStringLiteral("loadTypeId")] = element.loadTypeId; obj[QStringLiteral("igniterTypeId")] = element.igniterTypeId; obj[QStringLiteral("count")] = element.count; return obj; } template<> L8_Charges fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); L8_Charges element; { const QJsonValue val(objElement.value(QStringLiteral("chargeTypeId"))); element.chargeTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loadTypeId"))); element.loadTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("igniterTypeId"))); element.igniterTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("count"))); element.count = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < L8_Charges > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // LaserDesignation QJsonObject toJson(const LaserDesignation &element) { QJsonObject obj; obj[QStringLiteral("gearId")] = element.gearId; obj[QStringLiteral("code")] = element.code; obj[QStringLiteral("outputPower")] = element.outputPower; obj[QStringLiteral("spotLocation")] = toJson(element.spotLocation); return obj; } template<> LaserDesignation fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); LaserDesignation element; { const QJsonValue val(objElement.value(QStringLiteral("gearId"))); element.gearId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("code"))); element.code = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("outputPower"))); element.outputPower = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("spotLocation"))); element.spotLocation = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < LaserDesignation > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // MineTriggered QJsonObject toJson(const MineTriggered &element) { QJsonObject obj; obj[QStringLiteral("mineAreaId")] = element.mineAreaId; obj[QStringLiteral("mineIndex")] = element.mineIndex; if (element.position.is_set()) obj[QStringLiteral("position")] = toJson(*element.position); if (element.chargeTypeId.is_set()) obj[QStringLiteral("chargeTypeId")] = *element.chargeTypeId; return obj; } template<> MineTriggered fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); MineTriggered element; { const QJsonValue val(objElement.value(QStringLiteral("mineAreaId"))); element.mineAreaId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("mineIndex"))); element.mineIndex = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("position"))); if (!val.isNull()) element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("chargeTypeId"))); if (!val.isNull()) element.chargeTypeId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < MineTriggered > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // MinelayerThrowerData QJsonObject toJson(const MinelayerThrowerData &element) { QJsonObject obj; obj[QStringLiteral("throwingType")] = toJson(static_cast(element.throwingType)); return obj; } template<> MinelayerThrowerData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); MinelayerThrowerData element; { const QJsonValue val(objElement.value(QStringLiteral("throwingType"))); element.throwingType = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < MinelayerThrowerData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // MinelayerTrailerData QJsonObject toJson(const MinelayerTrailerData &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("barrierId")] = element.barrierId; obj[QStringLiteral("layingDensity")] = element.layingDensity; obj[QStringLiteral("effectStart")] = static_cast(element.effectStart); obj[QStringLiteral("effectDuration")] = element.effectDuration; obj[QStringLiteral("chargeTypeId")] = element.chargeTypeId; obj[QStringLiteral("mineCount")] = element.mineCount; return obj; } template<> MinelayerTrailerData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); MinelayerTrailerData element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("barrierId"))); element.barrierId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("layingDensity"))); element.layingDensity = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("effectStart"))); element.effectStart = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("effectDuration"))); element.effectDuration = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("chargeTypeId"))); element.chargeTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("mineCount"))); element.mineCount = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < MinelayerTrailerData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // MinelayerTrailerPosition QJsonObject toJson(const MinelayerTrailerPosition &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("chargeTypeId")] = element.chargeTypeId; obj[QStringLiteral("dusSerialNo")] = element.dusSerialNo; return obj; } template<> MinelayerTrailerPosition fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); MinelayerTrailerPosition element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("chargeTypeId"))); element.chargeTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("dusSerialNo"))); element.dusSerialNo = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < MinelayerTrailerPosition > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // OcData QJsonObject toJson(const OcData &element) { QJsonObject obj; obj[QStringLiteral("payload")] = toJson(element.payload); return obj; } template<> OcData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); OcData element; { const QJsonValue val(objElement.value(QStringLiteral("payload"))); element.payload = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < OcData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // OperatorAction QJsonObject toJson(const OperatorAction &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("operatorId")] = element.operatorId; obj[QStringLiteral("action")] = element.action; return obj; } template<> OperatorAction fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); OperatorAction element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("operatorId"))); element.operatorId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("action"))); element.action = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < OperatorAction > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ParticipantConfigurationReport QJsonObject toJson(const ParticipantConfigurationReport &element) { QJsonObject obj; obj[QStringLiteral("positionIntervallVehicle")] = element.positionIntervallVehicle; obj[QStringLiteral("positionIntervallPersonell")] = element.positionIntervallPersonell; obj[QStringLiteral("positionIntervallAircraft")] = element.positionIntervallAircraft; obj[QStringLiteral("positionTransmissionIntervall")] = element.positionTransmissionIntervall; obj[QStringLiteral("heightbarrier")] = element.heightbarrier; obj[QStringLiteral("faultPositionHandling")] = toJson(static_cast(element.faultPositionHandling)); obj[QStringLiteral("switchingPositionIntervall")] = toJson(static_cast(element.switchingPositionIntervall)); obj[QStringLiteral("waittimeAdditionalBroadcastRequest")] = element.waittimeAdditionalBroadcastRequest; obj[QStringLiteral("factorWaittimeIncreaseHighload")] = element.factorWaittimeIncreaseHighload; obj[QStringLiteral("waittimeAutomaticVulnerbilityIncreaseLevel1")] = element.waittimeAutomaticVulnerbilityIncreaseLevel1; obj[QStringLiteral("waittimeAutomaticVulnerbilityIncreaseLevel2")] = element.waittimeAutomaticVulnerbilityIncreaseLevel2; obj[QStringLiteral("waittimeAutomaticVulnerbilityIncreaseLevel3")] = element.waittimeAutomaticVulnerbilityIncreaseLevel3; obj[QStringLiteral("opticalCode")] = toJson(static_cast(element.opticalCode)); obj[QStringLiteral("vulnerabilityModel")] = element.vulnerabilityModel; obj[QStringLiteral("validTimeOps")] = element.validTimeOps; return obj; } template<> ParticipantConfigurationReport fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ParticipantConfigurationReport element; { const QJsonValue val(objElement.value(QStringLiteral("positionIntervallVehicle"))); element.positionIntervallVehicle = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("positionIntervallPersonell"))); element.positionIntervallPersonell = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("positionIntervallAircraft"))); element.positionIntervallAircraft = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("positionTransmissionIntervall"))); element.positionTransmissionIntervall = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("heightbarrier"))); element.heightbarrier = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("faultPositionHandling"))); element.faultPositionHandling = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("switchingPositionIntervall"))); element.switchingPositionIntervall = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("waittimeAdditionalBroadcastRequest"))); element.waittimeAdditionalBroadcastRequest = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("factorWaittimeIncreaseHighload"))); element.factorWaittimeIncreaseHighload = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("waittimeAutomaticVulnerbilityIncreaseLevel1"))); element.waittimeAutomaticVulnerbilityIncreaseLevel1 = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("waittimeAutomaticVulnerbilityIncreaseLevel2"))); element.waittimeAutomaticVulnerbilityIncreaseLevel2 = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("waittimeAutomaticVulnerbilityIncreaseLevel3"))); element.waittimeAutomaticVulnerbilityIncreaseLevel3 = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("opticalCode"))); element.opticalCode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("vulnerabilityModel"))); element.vulnerabilityModel = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("validTimeOps"))); element.validTimeOps = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ParticipantConfigurationReport > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ParticipantModeReport QJsonObject toJson(const ParticipantModeReport &element) { QJsonObject obj; obj[QStringLiteral("language")] = toJson(static_cast(element.language)); obj[QStringLiteral("operationMode")] = toJson(static_cast(element.operationMode)); obj[QStringLiteral("reactivationDetoxication")] = element.reactivationDetoxication; obj[QStringLiteral("reactivationMaintenance")] = element.reactivationMaintenance; obj[QStringLiteral("reactivationMedic")] = element.reactivationMedic; obj[QStringLiteral("protectionModeVest")] = toJson(static_cast(element.protectionModeVest)); obj[QStringLiteral("protectionModeHelmet")] = toJson(static_cast(element.protectionModeHelmet)); obj[QStringLiteral("personellProtectionMode")] = toJson(static_cast(element.personellProtectionMode)); obj[QStringLiteral("protectionLevel")] = toJson(static_cast(element.protectionLevel)); obj[QStringLiteral("handgrenadeSearchMode")] = toJson(static_cast(element.handgrenadeSearchMode)); obj[QStringLiteral("internationalMode")] = toJson(static_cast(element.internationalMode)); obj[QStringLiteral("abcProtectionMode")] = toJson(static_cast(element.abcProtectionMode)); return obj; } template<> ParticipantModeReport fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ParticipantModeReport element; { const QJsonValue val(objElement.value(QStringLiteral("language"))); element.language = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("operationMode"))); element.operationMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("reactivationDetoxication"))); element.reactivationDetoxication = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("reactivationMaintenance"))); element.reactivationMaintenance = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("reactivationMedic"))); element.reactivationMedic = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("protectionModeVest"))); element.protectionModeVest = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("protectionModeHelmet"))); element.protectionModeHelmet = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("personellProtectionMode"))); element.personellProtectionMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("protectionLevel"))); element.protectionLevel = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("handgrenadeSearchMode"))); element.handgrenadeSearchMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("internationalMode"))); element.internationalMode = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("abcProtectionMode"))); element.abcProtectionMode = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ParticipantModeReport > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ParticipantSanitaryMaterialStockReport QJsonObject toJson(const ParticipantSanitaryMaterialStockReport &element) { QJsonObject obj; obj[QStringLiteral("originatorEquipmentNumber")] = element.originatorEquipmentNumber; obj[QStringLiteral("qualification")] = toJson(static_cast(element.qualification)); obj[QStringLiteral("uniqueId")] = element.uniqueId; obj[QStringLiteral("sanitaryMaterialCount")] = element.sanitaryMaterialCount; obj[QStringLiteral("sanitaryMaterialStock")] = toJson(element.sanitaryMaterialStock); return obj; } template<> ParticipantSanitaryMaterialStockReport fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ParticipantSanitaryMaterialStockReport element; { const QJsonValue val(objElement.value(QStringLiteral("originatorEquipmentNumber"))); element.originatorEquipmentNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("qualification"))); element.qualification = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("uniqueId"))); element.uniqueId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("sanitaryMaterialCount"))); element.sanitaryMaterialCount = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("sanitaryMaterialStock"))); element.sanitaryMaterialStock = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ParticipantSanitaryMaterialStockReport > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ParticipantSanitation QJsonObject toJson(const ParticipantSanitation &element) { QJsonObject obj; obj[QStringLiteral("originatorEquipmentNumber")] = element.originatorEquipmentNumber; obj[QStringLiteral("qualification")] = toJson(static_cast(element.qualification)); obj[QStringLiteral("uniqueId")] = element.uniqueId; obj[QStringLiteral("proceduresTaken")] = static_cast(element.proceduresTaken); obj[QStringLiteral("sanitationResult")] = toJson(static_cast(element.sanitationResult)); obj[QStringLiteral("sanitationEvaluation")] = toJson(static_cast(element.sanitationEvaluation)); return obj; } template<> ParticipantSanitation fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ParticipantSanitation element; { const QJsonValue val(objElement.value(QStringLiteral("originatorEquipmentNumber"))); element.originatorEquipmentNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("qualification"))); element.qualification = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("uniqueId"))); element.uniqueId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("proceduresTaken"))); element.proceduresTaken = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("sanitationResult"))); element.sanitationResult = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("sanitationEvaluation"))); element.sanitationEvaluation = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ParticipantSanitation > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ParticipantSanitationRepair QJsonObject toJson(const ParticipantSanitationRepair &element) { QJsonObject obj; obj[QStringLiteral("originatorType")] = toJson(static_cast(element.originatorType)); obj[QStringLiteral("equipmentNumberOrigin")] = element.equipmentNumberOrigin; obj[QStringLiteral("stateStart")] = toJson(static_cast(element.stateStart)); obj[QStringLiteral("typeOfTreatment")] = element.typeOfTreatment; obj[QStringLiteral("triage")] = element.triage; obj[QStringLiteral("tyeOfDamage")] = element.tyeOfDamage; obj[QStringLiteral("stateResult")] = toJson(static_cast(element.stateResult)); obj[QStringLiteral("treatmentResult")] = toJson(static_cast(element.treatmentResult)); obj[QStringLiteral("triagePriority")] = element.triagePriority; obj[QStringLiteral("fullState")] = element.fullState; obj[QStringLiteral("timeOfTreatment")] = element.timeOfTreatment; obj[QStringLiteral("timeOfRecovery")] = element.timeOfRecovery; return obj; } template<> ParticipantSanitationRepair fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ParticipantSanitationRepair element; { const QJsonValue val(objElement.value(QStringLiteral("originatorType"))); element.originatorType = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("equipmentNumberOrigin"))); element.equipmentNumberOrigin = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("stateStart"))); element.stateStart = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("typeOfTreatment"))); element.typeOfTreatment = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("triage"))); element.triage = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("tyeOfDamage"))); element.tyeOfDamage = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("stateResult"))); element.stateResult = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("treatmentResult"))); element.treatmentResult = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("triagePriority"))); element.triagePriority = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("fullState"))); element.fullState = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("timeOfTreatment"))); element.timeOfTreatment = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("timeOfRecovery"))); element.timeOfRecovery = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ParticipantSanitationRepair > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ParticipantSwVersions QJsonObject toJson(const ParticipantSwVersions &element) { QJsonObject obj; obj[QStringLiteral("equipments")] = toJson(element.equipments); return obj; } template<> ParticipantSwVersions fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ParticipantSwVersions element; { const QJsonValue val(objElement.value(QStringLiteral("equipments"))); element.equipments = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ParticipantSwVersions > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // RestoreRadioReadiness QJsonObject toJson(const RestoreRadioReadiness &element) { QJsonObject obj; obj[QStringLiteral("readinessLossPosition")] = toJson(element.readinessLossPosition); obj[QStringLiteral("readinessLossTime")] = element.readinessLossTime; obj[QStringLiteral("readinessRestorePosition")] = toJson(element.readinessRestorePosition); obj[QStringLiteral("readinessRestoreTime")] = element.readinessRestoreTime; return obj; } template<> RestoreRadioReadiness fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); RestoreRadioReadiness element; { const QJsonValue val(objElement.value(QStringLiteral("readinessLossPosition"))); element.readinessLossPosition = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("readinessLossTime"))); element.readinessLossTime = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("readinessRestorePosition"))); element.readinessRestorePosition = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("readinessRestoreTime"))); element.readinessRestoreTime = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < RestoreRadioReadiness > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // ServiceControl QJsonObject toJson(const ServiceControl &element) { QJsonObject obj; obj[QStringLiteral("serviceControlState")] = toJson(static_cast(element.serviceControlState)); return obj; } template<> ServiceControl fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); ServiceControl element; { const QJsonValue val(objElement.value(QStringLiteral("serviceControlState"))); element.serviceControlState = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < ServiceControl > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // SpecialSensorData QJsonObject toJson(const SpecialSensorData &element) { QJsonObject obj; if (element.position.is_set()) obj[QStringLiteral("position")] = toJson(*element.position); obj[QStringLiteral("operationalState")] = element.operationalState; return obj; } template<> SpecialSensorData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); SpecialSensorData element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); if (!val.isNull()) element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("operationalState"))); element.operationalState = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < SpecialSensorData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // StateIed QJsonObject toJson(const StateIed &element) { QJsonObject obj; obj[QStringLiteral("batteryWarnings")] = element.batteryWarnings; obj[QStringLiteral("errorStateElectronics")] = element.errorStateElectronics; obj[QStringLiteral("errorStatePyrotechnics1")] = element.errorStatePyrotechnics1; obj[QStringLiteral("errorStatePyrotechnics2")] = element.errorStatePyrotechnics2; obj[QStringLiteral("errorStatePyrotechnics3")] = element.errorStatePyrotechnics3; return obj; } template<> StateIed fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); StateIed element; { const QJsonValue val(objElement.value(QStringLiteral("batteryWarnings"))); element.batteryWarnings = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("errorStateElectronics"))); element.errorStateElectronics = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("errorStatePyrotechnics1"))); element.errorStatePyrotechnics1 = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("errorStatePyrotechnics2"))); element.errorStatePyrotechnics2 = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("errorStatePyrotechnics3"))); element.errorStatePyrotechnics3 = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < StateIed > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // TabPosition QJsonObject toJson(const TabPosition &element) { QJsonObject obj; obj[QStringLiteral("position")] = toJson(element.position); obj[QStringLiteral("reportingSource")] = toJson(static_cast(element.reportingSource)); if (element.moutObjectId.is_set()) obj[QStringLiteral("moutObjectId")] = *element.moutObjectId; if (element.moutRoomId.is_set()) obj[QStringLiteral("moutRoomId")] = *element.moutRoomId; return obj; } template<> TabPosition fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); TabPosition element; { const QJsonValue val(objElement.value(QStringLiteral("position"))); element.position = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("reportingSource"))); element.reportingSource = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("moutObjectId"))); if (!val.isNull()) element.moutObjectId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("moutRoomId"))); if (!val.isNull()) element.moutRoomId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < TabPosition > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // TargetData QJsonObject toJson(const TargetData &element) { QJsonObject obj; obj[QStringLiteral("payload")] = toJson(element.payload); return obj; } template<> TargetData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); TargetData element; { const QJsonValue val(objElement.value(QStringLiteral("payload"))); element.payload = fromJson>(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < TargetData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // TrajectoryAdler QJsonObject toJson(const TrajectoryAdler &element) { QJsonObject obj; obj[QStringLiteral("trajectoryError")] = toJson(static_cast(element.trajectoryError)); obj[QStringLiteral("positionTarget")] = toJson(element.positionTarget); obj[QStringLiteral("weaponSystemType")] = toJson(static_cast(element.weaponSystemType)); obj[QStringLiteral("flightTime")] = element.flightTime; obj[QStringLiteral("peakHeight")] = element.peakHeight; obj[QStringLiteral("firingDirection")] = element.firingDirection; obj[QStringLiteral("dropAngle")] = element.dropAngle; obj[QStringLiteral("geometry")] = toJson(element.geometry); obj[QStringLiteral("trajectoryStartTime")] = static_cast(element.trajectoryStartTime); obj[QStringLiteral("dispersion")] = toJson(element.dispersion); obj[QStringLiteral("trajectory")] = toJson(element.trajectory); obj[QStringLiteral("partyId")] = element.partyId; return obj; } template<> TrajectoryAdler fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); TrajectoryAdler element; { const QJsonValue val(objElement.value(QStringLiteral("trajectoryError"))); element.trajectoryError = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("positionTarget"))); element.positionTarget = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("weaponSystemType"))); element.weaponSystemType = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("flightTime"))); element.flightTime = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("peakHeight"))); element.peakHeight = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("firingDirection"))); element.firingDirection = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("dropAngle"))); element.dropAngle = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("geometry"))); element.geometry = fromJson>(val); } { const QJsonValue val(objElement.value(QStringLiteral("trajectoryStartTime"))); element.trajectoryStartTime = val.toDouble(); } { const QJsonValue val(objElement.value(QStringLiteral("dispersion"))); element.dispersion = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("trajectory"))); element.trajectory = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("partyId"))); element.partyId = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < TrajectoryAdler > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // TrajectoryCalculationData QJsonObject toJson(const TrajectoryCalculationData &element) { QJsonObject obj; obj[QStringLiteral("chargeTypeId")] = element.chargeTypeId; obj[QStringLiteral("igniterTypeId")] = element.igniterTypeId; obj[QStringLiteral("igniterFunctionId")] = element.igniterFunctionId; obj[QStringLiteral("loadTypeId")] = element.loadTypeId; obj[QStringLiteral("loadNumber")] = element.loadNumber; obj[QStringLiteral("fuseTime")] = element.fuseTime; return obj; } template<> TrajectoryCalculationData fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); TrajectoryCalculationData element; { const QJsonValue val(objElement.value(QStringLiteral("chargeTypeId"))); element.chargeTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("igniterTypeId"))); element.igniterTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("igniterFunctionId"))); element.igniterFunctionId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loadTypeId"))); element.loadTypeId = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("loadNumber"))); element.loadNumber = val.toInt(); } { const QJsonValue val(objElement.value(QStringLiteral("fuseTime"))); element.fuseTime = val.toInt(); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < TrajectoryCalculationData > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // UASMissionStatus QJsonObject toJson(const UASMissionStatus &element) { QJsonObject obj; obj[QStringLiteral("currentTask")] = toJson(static_cast(element.currentTask)); obj[QStringLiteral("currentMissionName")] = QString::fromStdString(element.currentMissionName); obj[QStringLiteral("missionEnded")] = QString::fromStdString(element.missionEnded); return obj; } template<> UASMissionStatus fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); UASMissionStatus element; { const QJsonValue val(objElement.value(QStringLiteral("currentTask"))); element.currentTask = static_cast(val.toInt()); } { const QJsonValue val(objElement.value(QStringLiteral("currentMissionName"))); element.currentMissionName = fromJson(val); } { const QJsonValue val(objElement.value(QStringLiteral("missionEnded"))); element.missionEnded = fromJson(val); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < UASMissionStatus > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // UASRadioLinkConnectionState QJsonObject toJson(const UASRadioLinkConnectionState &element) { QJsonObject obj; obj[QStringLiteral("connectionStatus")] = toJson(static_cast(element.connectionStatus)); return obj; } template<> UASRadioLinkConnectionState fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); UASRadioLinkConnectionState element; { const QJsonValue val(objElement.value(QStringLiteral("connectionStatus"))); element.connectionStatus = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < UASRadioLinkConnectionState > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } // UASStatus QJsonObject toJson(const UASStatus &element) { QJsonObject obj; obj[QStringLiteral("uasState")] = toJson(static_cast(element.uasState)); return obj; } template<> UASStatus fromJson(const QJsonValue &value, type) { const QJsonObject objElement(value.toObject()); UASStatus element; { const QJsonValue val(objElement.value(QStringLiteral("uasState"))); element.uasState = static_cast(val.toInt()); } return element; } // // extensions to support sequence of seqence of Non-POD : // QJsonValue toJson(const std::vector &element) { if (element.size() == 0) return QJsonValue(); QJsonArray array; for(size_t i = 0; i < element.size(); ++i) array.push_back(toJson(element.at(i))); return array; } template<> std::vector fromJson(const QJsonValue &value, type< std::vector >) { std::vector < UASStatus > ret; if (value.isNull()) return ret; if (!value.isArray()) return ret; const QJsonArray array = value.toArray(); ret.reserve(array.size()); for(const auto &ele : array) ret.push_back(fromJson(ele, type{})); return ret; } } // namespace TrainingAreaBase