...
This commit is contained in:
@@ -228,7 +228,9 @@ struct MccSerializer<VT> : MccSerializerBase {
|
||||
VT const& value,
|
||||
ParamsT const& params = mcc_serialization_params_t{})
|
||||
{
|
||||
std::vformat_to(std::back_inserter(output), params.systime_format, std::make_format_args(value));
|
||||
// std::vformat_to(std::back_inserter(output), params.systime_format, std::make_format_args(value));
|
||||
auto tp = std::chrono::round<std::chrono::milliseconds>(value);
|
||||
std::vformat_to(std::back_inserter(output), params.systime_format, std::make_format_args(tp));
|
||||
|
||||
return MccSerializerErrorCode::ERROR_OK;
|
||||
}
|
||||
@@ -249,9 +251,14 @@ struct MccSerializer<VT> : MccSerializerBase {
|
||||
std::string sgm;
|
||||
|
||||
switch (params.angle_format) {
|
||||
case MccSerializedAngleFormat::MCC_SERIALIZED_FORMAT_DEGREES:
|
||||
case MccSerializedAngleFormat::MCC_SERIALIZED_FORMAT_DEGREES: {
|
||||
v *= MCC_RADS_TO_DEGRESS;
|
||||
return MccSerializer<double>{}(output, v, params);
|
||||
std::string_view fmt = "{:." + std::to_string(params.angle_prec.decimals) + "f}";
|
||||
std::vformat_to(std::back_inserter(output), fmt, std::make_format_args(v));
|
||||
|
||||
return MccSerializerErrorCode::ERROR_OK;
|
||||
}
|
||||
// return MccSerializer<double>{}(output, v, params);
|
||||
case MccSerializedAngleFormat::MCC_SERIALIZED_FORMAT_SXGM_DEGS:
|
||||
if (params.norm_sxgm) {
|
||||
sgm = utils::rad2sxg<true>(v, false, params.angle_prec.deg_prec);
|
||||
@@ -716,6 +723,53 @@ struct MccSerializer<VT> : MccSerializerBase {
|
||||
};
|
||||
|
||||
|
||||
|
||||
template <>
|
||||
struct MccSerializer<MccSerializedCoordPairFormat> : MccSerializerBase {
|
||||
constexpr static std::string_view serializerName{"MCC-COORDPAIR-FORMAT-SERIALIZER"};
|
||||
|
||||
template <mcc_serialization_params_c ParamsT = mcc_serialization_params_t>
|
||||
error_t operator()(traits::mcc_output_char_range auto& output,
|
||||
MccSerializedCoordPairFormat const& value,
|
||||
ParamsT const& params = mcc_serialization_params_t{})
|
||||
{
|
||||
std::ranges::copy(MccSerializedCoordPairFormatToStr(value), std::back_inserter(output));
|
||||
|
||||
return MccSerializerErrorCode::ERROR_OK;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template <>
|
||||
struct MccSerializer<MccSerializedAngleFormatPrec> : MccSerializerBase {
|
||||
constexpr static std::string_view serializerName{"MCC-ANGLE-FORMAT-PREC-SERIALIZER"};
|
||||
|
||||
template <mcc_serialization_params_c ParamsT = mcc_serialization_params_t>
|
||||
error_t operator()(traits::mcc_output_char_range auto& output,
|
||||
MccSerializedAngleFormatPrec const& value,
|
||||
ParamsT const& params = mcc_serialization_params_t{})
|
||||
{
|
||||
auto err = MccSerializer<decltype(value.hour_prec)>{}(output, value.hour_prec, params);
|
||||
if (!err) {
|
||||
auto err = MccSerializer<decltype(value.deg_prec)>{}(output, value.deg_prec, params);
|
||||
if (!err) {
|
||||
auto err = MccSerializer<decltype(value.decimals)>{}(output, value.decimals, params);
|
||||
if (err) {
|
||||
return mcc_deduced_err(err, MccSerializerErrorCode::ERROR_UNDERLYING_SERIALIZER);
|
||||
}
|
||||
} else {
|
||||
return mcc_deduced_err(err, MccSerializerErrorCode::ERROR_UNDERLYING_SERIALIZER);
|
||||
}
|
||||
} else {
|
||||
return mcc_deduced_err(err, MccSerializerErrorCode::ERROR_UNDERLYING_SERIALIZER);
|
||||
}
|
||||
|
||||
return MccSerializerErrorCode::ERROR_OK;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
static_assert(mcc_serializer_c<MccSerializer<MccAngle>>, "!!!");
|
||||
|
||||
} // namespace mcc::impl
|
||||
|
||||
Reference in New Issue
Block a user