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_coordinate.h"
|
||||
#include "mcc_deserializer.h"
|
||||
#include "mcc_serializer.h"
|
||||
|
||||
namespace mcc::impl
|
||||
{
|
||||
@@ -131,6 +133,48 @@ static constexpr std::string_view mccDefaultPCMTypeString(MccDefaultPCMType type
|
||||
: "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>
|
||||
class MccDefaultPCM : public mcc_pcm_interface_t<std::error_code>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user