mcc_pcm.h: add serializer and deserializer of the MccDefaultPCM enum
This commit is contained in:
@@ -21,6 +21,8 @@
|
|||||||
|
|
||||||
#include "mcc_concepts.h"
|
#include "mcc_concepts.h"
|
||||||
#include "mcc_coordinate.h"
|
#include "mcc_coordinate.h"
|
||||||
|
#include "mcc_deserializer.h"
|
||||||
|
#include "mcc_serializer.h"
|
||||||
|
|
||||||
namespace mcc::impl
|
namespace mcc::impl
|
||||||
{
|
{
|
||||||
@@ -131,6 +133,48 @@ static constexpr std::string_view mccDefaultPCMTypeString(MccDefaultPCMType type
|
|||||||
: "UNKNOWN";
|
: "UNKNOWN";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct MccSerializer<MccDefaultPCMType> : MccSerializerBase {
|
||||||
|
constexpr static std::string_view serializerName{"MCC-DEFAULT-PCMTYPE-SERIALIZER"};
|
||||||
|
|
||||||
|
template <mcc_serialization_params_c ParamsT = mcc_serialization_params_t>
|
||||||
|
error_t operator()(traits::mcc_output_char_range auto& output,
|
||||||
|
MccDefaultPCMType const& value,
|
||||||
|
ParamsT const& params = mcc_serialization_params_t{})
|
||||||
|
{
|
||||||
|
std::ranges::copy(mccDefaultPCMTypeString(value), std::back_inserter(output));
|
||||||
|
|
||||||
|
return MccSerializerErrorCode::ERROR_OK;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct MccDeserializer<MccDefaultPCMType> : MccDeserializerBase {
|
||||||
|
static constexpr std::string_view deserializerName{"MCC-COORD-EPOCH-DESERIALIZER"};
|
||||||
|
|
||||||
|
template <mcc_serialization_params_c ParamsT = mcc_serialization_params_t>
|
||||||
|
error_t operator()(traits::mcc_input_char_range auto const& input,
|
||||||
|
MccDefaultPCMType& value,
|
||||||
|
ParamsT const& params = mcc_serialization_params_t{})
|
||||||
|
{
|
||||||
|
auto s = mcc::utils::trimSpaces(input);
|
||||||
|
|
||||||
|
if (s == mcc::impl::MccDefaultPCMTypeString<mcc::impl::MccDefaultPCMType::PCM_TYPE_GEOMETRY>) {
|
||||||
|
value = mcc::impl::MccDefaultPCMType::PCM_TYPE_GEOMETRY;
|
||||||
|
} else if (s == mcc::impl::MccDefaultPCMTypeString<mcc::impl::MccDefaultPCMType::PCM_TYPE_GEOMETRY_BSPLINE>) {
|
||||||
|
value = mcc::impl::MccDefaultPCMType::PCM_TYPE_GEOMETRY;
|
||||||
|
} else if (s == mcc::impl::MccDefaultPCMTypeString<mcc::impl::MccDefaultPCMType::PCM_TYPE_BSPLINE>) {
|
||||||
|
value = mcc::impl::MccDefaultPCMType::PCM_TYPE_BSPLINE;
|
||||||
|
} else {
|
||||||
|
return MccDeserializerErrorCode::ERROR_INVALID_SERIALIZED_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return MccDeserializerErrorCode::ERROR_OK;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
template <MccMountType MOUNT_TYPE>
|
template <MccMountType MOUNT_TYPE>
|
||||||
class MccDefaultPCM : public mcc_pcm_interface_t<std::error_code>
|
class MccDefaultPCM : public mcc_pcm_interface_t<std::error_code>
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user