#pragma once #include #include namespace sp { class PacketHandler; using PacketMessage = Message< option::MsgIdType, // add id() operation option::ReadOperations, // add read() operation option::WriteOperations, // add write() operation option::WriteId, // write id before data option::Handler, // add dispatch() operation option::DebugPrint // add ToString() operator >; #define PacketConstructor(packetName) \ packetName##Packet() {} \ template \ packetName##Packet(Args... args) { \ Construct(args...); \ } #define DeclarePacket(packetName) \ class packetName##Packet : public sp::MessageBase, \ sp::option::DispatchImpl, sp::option::FieldsImpl>, \ sp::option::ToStringImpl } // namespace sp