fields builder

This commit is contained in:
2025-02-06 18:01:27 +01:00
parent c3a54d8e5b
commit 8ecfb95167
5 changed files with 28 additions and 10 deletions

View File

@@ -13,4 +13,10 @@ using PacketMessage = Message<
option::Handler<PacketHandler> // add dispatch() operation
>;
#define DeclarePacket(packetName) class packetName##Packet : public sp::MessageBase<sp::PacketMessage,\
sp::option::StaticNumIdImpl<packetName>, \
sp::option::DispatchImpl<packetName##Packet>, \
sp::option::FieldsImpl<packetName##Fields> \
> {}
} // namespace sp

View File

@@ -1,6 +1,7 @@
#pragma once
#include <sp/common/DataBuffer.h>
#include <sp/protocol/Templates.h>
namespace sp {
@@ -62,4 +63,18 @@ class FieldWriter {
DataBuffer& m_Buffer;
};
template <typename... TFields>
struct FieldsBuilder {};
template <>
struct FieldsBuilder<> {
using Type = std::tuple<>;
};
template <typename TField, typename... TFields>
struct FieldsBuilder<TField, TFields...> {
using Type = sp::tuple_cat_t<std::tuple<Field<TField>>, typename FieldsBuilder<TFields...>::Type>;
};
} // namespace sp