This commit is contained in:
Timur A. Fatkhullin
2025-10-07 23:51:58 +03:00
parent 8b16ac79b8
commit 27dccfe7c0
3 changed files with 260 additions and 8 deletions

View File

@@ -485,18 +485,24 @@ protected:
inline static auto deserializer = []<typename VT>(std::string_view str, VT& value) {
std::error_code ec{};
mcc::utils::MccSimpleDeserializer deser;
deser.setRangeDelim(base_t::VALUE_ARRAY_DELIM);
if constexpr (std::is_arithmetic_v<VT> || mcc::traits::mcc_output_char_range<VT> || std::ranges::range<VT> ||
mcc::traits::mcc_time_duration_c<VT>) {
ec = base_t::defaultDeserializeFunc(str, value);
// ec = base_t::defaultDeserializeFunc(str, value);
ec = deser(str, value);
} else if constexpr (std::same_as<VT, mcc::MccAngle>) { // assume here all angles are in degrees
double vd;
ec = base_t::defaultDeserializeFunc(str, vd);
// ec = base_t::defaultDeserializeFunc(str, vd);
ec = deser(str, value);
if (!ec) {
value = mcc::MccAngle(vd, mcc::MccDegreeTag{});
}
} else if constexpr (std::same_as<VT, mcc::MccDefaultPCMType>) {
std::string vstr;
ec = base_t::defaultDeserializeFunc(str, vstr);
// ec = base_t::defaultDeserializeFunc(str, vstr);
ec = deser(str, value);
if (!ec) {
auto s = mcc::utils::trimSpaces(vstr);