Reviewed-on: #1 Co-authored-by: Persson-dev <sim16.prib@gmail.com> Co-committed-by: Persson-dev <sim16.prib@gmail.com>
94 lines
2.5 KiB
C++
94 lines
2.5 KiB
C++
#pragma once
|
|
|
|
namespace sp {
|
|
namespace details {
|
|
|
|
|
|
|
|
// id impl
|
|
template <typename TBase, typename ParsedImplOptions, bool TImplement>
|
|
struct MessageImplProcessStaticNumId;
|
|
|
|
template <typename TBase, typename ParsedImplOptions>
|
|
struct MessageImplProcessStaticNumId<TBase, ParsedImplOptions, true> {
|
|
using Type = MessageImplStaticNumIdBase<TBase, ParsedImplOptions::MsgId>;
|
|
};
|
|
|
|
template <typename TBase, typename ParsedImplOptions>
|
|
struct MessageImplProcessStaticNumId<TBase, ParsedImplOptions, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// dispatch impl
|
|
template <typename TBase, typename ParsedImplOptions, bool TImplement>
|
|
struct MessageImplProcessDispatch;
|
|
|
|
template <typename TBase, typename ParsedImplOptions>
|
|
struct MessageImplProcessDispatch<TBase, ParsedImplOptions, true> {
|
|
using Type = MessageImplDispatchBase<TBase, typename ParsedImplOptions::ActualMessage>;
|
|
};
|
|
|
|
template <typename TBase, typename ParsedImplOptions>
|
|
struct MessageImplProcessDispatch<TBase, ParsedImplOptions, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// fields impl
|
|
template <typename TBase, typename ParsedImplOptions, bool TImplement>
|
|
struct MessageImplProcessFields;
|
|
|
|
template <typename TBase, typename ParsedImplOptions>
|
|
struct MessageImplProcessFields<TBase, ParsedImplOptions, true> {
|
|
using Type = MessageImplFieldsBase<TBase, typename ParsedImplOptions::Fields>;
|
|
};
|
|
|
|
template <typename TBase, typename ParsedImplOptions>
|
|
struct MessageImplProcessFields<TBase, ParsedImplOptions, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// read impl
|
|
template <typename TBase, bool TImplement>
|
|
struct MessageImplProcessReadFields;
|
|
|
|
template <typename TBase>
|
|
struct MessageImplProcessReadFields<TBase, true> {
|
|
using Type = MessageImplFieldsReadBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageImplProcessReadFields<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// write impl
|
|
template <typename TBase, bool TImplement>
|
|
struct MessageImplProcessWriteFields;
|
|
|
|
template <typename TBase>
|
|
struct MessageImplProcessWriteFields<TBase, true> {
|
|
using Type = MessageImplFieldsWriteBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageImplProcessWriteFields<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
// valid impl
|
|
template <typename TBase, bool TImplement>
|
|
struct MessageImplProcessValidFields;
|
|
|
|
template <typename TBase>
|
|
struct MessageImplProcessValidFields<TBase, true> {
|
|
using Type = MessageImplFieldsValidBase<TBase>;
|
|
};
|
|
|
|
template <typename TBase>
|
|
struct MessageImplProcessValidFields<TBase, false> {
|
|
using Type = TBase;
|
|
};
|
|
|
|
} // namespace details
|
|
} // namespace sp
|