This commit is contained in:
2026-05-21 18:27:43 +03:00
parent 4b5a390987
commit 304464dbda
2 changed files with 30 additions and 15 deletions

View File

@@ -290,7 +290,7 @@ public:
return MccKeyValueHolderErrorCode::ERROR_DESERIAL; return MccKeyValueHolderErrorCode::ERROR_DESERIAL;
} }
_changedKey.insert(key_hash); // _changedKey.insert(key_hash);
return MccKeyValueHolderErrorCode::ERROR_OK; return MccKeyValueHolderErrorCode::ERROR_OK;
}); });

View File

@@ -111,6 +111,9 @@ public:
: KIND == MccAltLimitKind::MAX_ALT_LIMIT ? "MAXALT-ZONE" : KIND == MccAltLimitKind::MAX_ALT_LIMIT ? "MAXALT-ZONE"
: "ALTLIMIT-UNKNOWN"; : "ALTLIMIT-UNKNOWN";
MccAltLimitPZ& operator=(MccAltLimitPZ&&) = default;
MccAltLimitPZ& operator=(const MccAltLimitPZ&) = default;
template <mcc_angle_c T> template <mcc_angle_c T>
T altLimit() const T altLimit() const
requires(!std::derived_from<T, MccAngle>) requires(!std::derived_from<T, MccAngle>)
@@ -390,25 +393,28 @@ struct MccDeserializer<MccAltLimitPZ<KIND>> : MccDeserializerBase {
MccAltLimitPZ<KIND>& value, MccAltLimitPZ<KIND>& value,
ParamsT const& params = mcc_serialization_params_t{}) ParamsT const& params = mcc_serialization_params_t{})
{ {
std::string_view s; std::vector<std::string_view> s;
MccDeserializer<MccAngle> ades; MccDeserializer<MccAngle> ades;
auto seq = std::views::split(params.seq_delim); auto seq = std::views::split(input, params.seq_delim);
if (std::ranges::size(seq) < 2) { if (std::ranges::distance(seq.begin(), seq.end()) < 2) {
s = utils::trimSpaces(seq, utils::TrimType::TRIM_BOTH); for (auto const& seq_el : seq) {
s.push_back(utils::trimSpaces(seq_el, utils::TrimType::TRIM_BOTH));
}
MccAngle alt, lat; MccAngle alt, lat;
auto err = ades(input, alt, params); auto err = ades(s[0], alt, params);
if (err) { if (err) {
return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER; return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER;
} }
err = ades(input, lat, params); err = ades(s[1], lat, params);
if (err) { if (err) {
return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER; return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER;
} }
value = MccAltLimitPZ<KIND>{alt, lat}; value = MccAltLimitPZ<KIND>(alt, lat);
} else { } else {
return MccDeserializerErrorCode::ERROR_INVALID_SERIALIZED_VALUE; return MccDeserializerErrorCode::ERROR_INVALID_SERIALIZED_VALUE;
} }
@@ -469,6 +475,11 @@ public:
: axisKind == MccCoordKind::COORDS_KIND_DEC_OBS ? "DEC-AXIS-LIMITSWITCH-ZONE" : axisKind == MccCoordKind::COORDS_KIND_DEC_OBS ? "DEC-AXIS-LIMITSWITCH-ZONE"
: "UKNOWN"; : "UKNOWN";
MccAxisLimitSwitchPZ(const MccAxisLimitSwitchPZ&) = default;
MccAxisLimitSwitchPZ(MccAxisLimitSwitchPZ&&) = default;
MccAxisLimitSwitchPZ& operator=(const MccAxisLimitSwitchPZ&) = default;
MccAxisLimitSwitchPZ& operator=(MccAxisLimitSwitchPZ&&) = default;
template <mcc_angle_c T> template <mcc_angle_c T>
T minLimit() const T minLimit() const
@@ -645,26 +656,30 @@ struct MccDeserializer<MccAxisLimitSwitchPZ<AXIS_KIND>> : MccDeserializerBase {
MccAxisLimitSwitchPZ<AXIS_KIND>& value, MccAxisLimitSwitchPZ<AXIS_KIND>& value,
ParamsT const& params = mcc_serialization_params_t{}) ParamsT const& params = mcc_serialization_params_t{})
{ {
std::string_view s; std::vector<std::string_view> s;
MccDeserializer<MccAngle> ades; MccDeserializer<MccAngle> ades;
auto seq = std::views::split(params.seq_delim); auto seq = std::views::split(input, params.seq_delim);
if (std::ranges::size(seq) < 2) { // if (std::ranges::size(seq) < 2) {
s = utils::trimSpaces(seq, utils::TrimType::TRIM_BOTH); if (std::ranges::distance(seq.begin(), seq.end()) < 2) {
for (auto const& seq_el : seq) {
s.push_back(utils::trimSpaces(seq_el, utils::TrimType::TRIM_BOTH));
}
MccAngle minLim, maxLim; MccAngle minLim, maxLim;
auto err = ades(input, minLim, params); auto err = ades(s[0], minLim, params);
if (err) { if (err) {
return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER; return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER;
} }
err = ades(input, maxLim, params); err = ades(s[1], maxLim, params);
if (err) { if (err) {
return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER; return MccDeserializerErrorCode::ERROR_UNDERLYING_DESERIALIZER;
} }
// WARNING: the class below is created without the PCM-class pointer!!! // WARNING: the class below is created without the PCM-class pointer!!!
value = MccAxisLimitSwitchPZ<AXIS_KIND>{minLim, maxLim}; value = MccAxisLimitSwitchPZ<AXIS_KIND>(minLim, maxLim, nullptr);
} else { } else {
return MccDeserializerErrorCode::ERROR_INVALID_SERIALIZED_VALUE; return MccDeserializerErrorCode::ERROR_INVALID_SERIALIZED_VALUE;
} }