#pragma once #include #include namespace blitz { namespace protocol { #define DeclarePacket(PacketName, ...) \ virtual void Visit(const packets::PacketName&) {} class PacketVisitor { protected: PacketVisitor() {} virtual ~PacketVisitor() {} public: void Check(const Packet& packet); DeclareAllPacket() }; #undef DeclarePacket } // namespace protocol } // namespace blitz