#pragma once #include #include "Serialization.hpp" namespace tw::net { #define SERIALIZER(class_name, buffer, message) \ template<> bool tw::net::Serializer::serialize(Serialization& buffer, class_name& message) template class VectorSerializer final { public: static bool serialize(tw::net::Serialization& buffer, std::vector& values) { uint32_t size = values.size(); buffer.serialize(&size); if(buffer.is_reading()) { values = std::vector(size); } for(int i = 0; i < values.size(); i++) { buffer.serialize(values[i]); } return true; } }; template<> class Serializer final { public: static bool serialize(tw::net::Serialization& buffer, std::string& value) { uint32_t length = value.length(); buffer.serialize(&length); if(buffer.is_reading()) { value = std::string(); value.resize(length); } buffer.serialize(value.data(), length); return true; } }; }