This commit is contained in:
2025-10-28 18:01:22 +03:00
parent 85dfa2e9a5
commit 78e4bb182c
10 changed files with 277 additions and 200 deletions

View File

@@ -515,6 +515,15 @@ static constexpr std::string_view MccCoordinateDefaultDelimiter{","};
class MccCoordinateDeserializer
{
public:
MccCoordinateDeserializer() = default;
template <traits::mcc_input_char_range R>
MccCoordinateDeserializer(R&& delim) : MccCoordinateDeserializer()
{
setDelimiter(std::forward<R>(delim));
}
virtual ~MccCoordinateDeserializer() = default;
template <traits::mcc_input_char_range R>
@@ -612,9 +621,9 @@ public:
};
MccCoordinateSerializer() = default;
constexpr MccCoordinateSerializer() = default;
MccCoordinateSerializer(SerializedCoordFormat fmt, SexagesimalCoordPrec prec)
constexpr MccCoordinateSerializer(SerializedCoordFormat fmt, SexagesimalCoordPrec prec)
{
setFormat(fmt);
setPrecision(std::move(prec));
@@ -701,6 +710,8 @@ protected:
class MccCelestialPointSerializer : public MccCoordinateSerializer
{
public:
using MccCoordinateSerializer::MccCoordinateSerializer;
template <mcc_celestial_point_c T, traits::mcc_output_char_range OR>
void operator()(const T& value, OR& bytes)
{
@@ -737,6 +748,8 @@ public:
class MccCelestialPointDeserializer : public MccCoordinateDeserializer
{
public:
using MccCoordinateDeserializer::MccCoordinateDeserializer;
template <traits::mcc_input_char_range IR, mcc_celestial_point_c T>
std::error_code operator()(IR&& bytes, T& value)
{
@@ -808,6 +821,8 @@ public:
class MccEqtHrzCoordsSerializer : public MccCoordinateSerializer
{
public:
using MccCoordinateSerializer::MccCoordinateSerializer;
template <mcc_eqt_hrz_coord_c T, traits::mcc_output_char_range OR>
void operator()(const T& value, OR& bytes)
{
@@ -855,6 +870,8 @@ public:
class MccEqtHrzCoordsDeserializer : public MccCoordinateDeserializer
{
public:
using MccCoordinateDeserializer::MccCoordinateDeserializer;
template <traits::mcc_input_char_range IR, mcc_eqt_hrz_coord_c T>
std::error_code operator()(IR&& bytes, T& value)
{
@@ -1019,6 +1036,8 @@ public:
class MccTelemetryDataDeserializer : public MccCoordinateDeserializer
{
public:
using MccCoordinateDeserializer::MccCoordinateDeserializer;
template <traits::mcc_input_char_range IR, mcc_telemetry_data_c T>
std::error_code operator()(IR&& bytes, T& value)
{