#pragma once #include namespace serialization { template static void writePod(std::ostream& os, const T& value) { os.write(reinterpret_cast(&value), sizeof(T)); } template static void readPod(std::istream& is, T& value) { is.read(reinterpret_cast(&value), sizeof(T)); } static void writeString(std::ostream& os, const std::string& s) { const uint32_t len = s.size(); writePod(os, len); os.write(s.data(), len); } static void readString(std::istream& is, std::string& s) { uint32_t len; readPod(is, len); s.resize(len); is.read(&s[0], len); } } // namespace serialization