119 lines
3.0 KiB
C++
119 lines
3.0 KiB
C++
#pragma once
|
|
|
|
namespace sp {
|
|
namespace details {
|
|
|
|
// Build message Id
|
|
template <typename TBase, typename TParsedOptions, bool THasMsgIdType>
|
|
struct MessageInterfaceProcessMsgId;
|
|
|
|
template <typename TBase, typename TParsedOptions>
|
|
struct MessageInterfaceProcessMsgId<TBase, TParsedOptions, true> {
|
|
using Type = MessageInterfaceIdTypeBase<TBase, typename TParsedOptions::MsgIdType>;
|
|
};
|
|
|
|
template <typename TBase, typename TParsedOptions>
|
|
struct MessageInterfaceProcessMsgId<TBase, TParsedOptions, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// Build endianess
|
|
template <typename TBase, bool THasLittleEndian>
|
|
struct MessageInterfaceProcessEndian;
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessEndian<TBase, true> {
|
|
using Type = MessageInterfaceLittleEndian<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessEndian<TBase, false> {
|
|
using Type = MessageInterfaceBigEndian<TBase>;
|
|
};
|
|
|
|
// Build read
|
|
template <typename TBase, bool THasRead>
|
|
struct MessageInterfaceProcessRead;
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessRead<TBase, true> {
|
|
using Type = MessageInterfaceReadBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessRead<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// Build write
|
|
template <typename TBase, bool THasWrite>
|
|
struct MessageInterfaceProcessWrite;
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessWrite<TBase, true> {
|
|
using Type = MessageInterfaceWriteBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessWrite<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// Build handler
|
|
template <typename TBase, typename TParsedOptions, bool THasHandler>
|
|
struct MessageInterfaceProcessHandler;
|
|
|
|
template <typename TBase, typename TParsedOptions>
|
|
struct MessageInterfaceProcessHandler<TBase, TParsedOptions, true> {
|
|
using Type = MessageInterfaceHandlerBase<TBase, typename TParsedOptions::HandlerType>;
|
|
};
|
|
|
|
template <typename TBase, typename TParsedOptions>
|
|
struct MessageInterfaceProcessHandler<TBase, TParsedOptions, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// Build valid
|
|
template <typename TBase, bool THasValid>
|
|
struct MessageInterfaceProcessValid;
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessValid<TBase, true> {
|
|
using Type = MessageInterfaceValidityBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessValid<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// Build id writing
|
|
template <typename TBase, bool THasValid>
|
|
struct MessageInterfaceProcessWriteId;
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessWriteId<TBase, true> {
|
|
using Type = MessageInterfaceWriteIdBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessWriteId<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// Build to string
|
|
template <typename TBase, bool THasToString>
|
|
struct MessageInterfaceProcessToString;
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessToString<TBase, true> {
|
|
using Type = MessageInterfaceToStringBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageInterfaceProcessToString<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
} // namespace details
|
|
} // namespace sp
|