From 5827e93507792dbbc33514d2c7c75a9ab7f7db89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc?= Date: Wed, 14 May 2025 15:40:33 +0200 Subject: [PATCH] refactor: use consistent size type for serialization template parameters --- src/serialize.h | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/serialize.h b/src/serialize.h index 98851056bdb..f72cb6fdf4b 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -244,7 +244,6 @@ const Out& AsBase(const In& x) // Templates for serializing to anything that looks like a stream, // i.e. anything that supports .read(std::span) and .write(std::span) // -// clang-format off // Typically int8_t and char are distinct types, but some systems may define int8_t // in terms of char. Forbid serialization of char in the typical case, but allow it if @@ -252,6 +251,7 @@ const Out& AsBase(const In& x) template concept CharNotInt8 = std::same_as && !std::same_as; +// clang-format off template void Serialize(Stream&, V) = delete; // char serialization forbidden. Use uint8_t or int8_t template void Serialize(Stream& s, std::byte a) { ser_writedata8(s, uint8_t(a)); } template inline void Serialize(Stream& s, int8_t a ) { ser_writedata8(s, a); } @@ -262,10 +262,11 @@ template inline void Serialize(Stream& s, int32_t a ) { ser_wri template inline void Serialize(Stream& s, uint32_t a) { ser_writedata32(s, a); } template inline void Serialize(Stream& s, int64_t a ) { ser_writedata64(s, a); } template inline void Serialize(Stream& s, uint64_t a) { ser_writedata64(s, a); } -template void Serialize(Stream& s, const B (&a)[N]) { s.write(MakeByteSpan(a)); } -template void Serialize(Stream& s, const std::array& a) { s.write(MakeByteSpan(a)); } -template void Serialize(Stream& s, std::span span) { s.write(std::as_bytes(span)); } -template void Serialize(Stream& s, std::span span) { s.write(std::as_bytes(span)); } + +template void Serialize(Stream& s, const B (&a)[N]) { s.write(MakeByteSpan(a)); } +template void Serialize(Stream& s, const std::array& a) { s.write(MakeByteSpan(a)); } +template void Serialize(Stream& s, std::span span) { s.write(std::as_bytes(span)); } +template void Serialize(Stream& s, std::span span) { s.write(std::as_bytes(span)); } template void Unserialize(Stream&, V) = delete; // char serialization forbidden. Use uint8_t or int8_t template void Unserialize(Stream& s, std::byte& a) { a = std::byte{ser_readdata8(s)}; } @@ -277,10 +278,11 @@ template inline void Unserialize(Stream& s, int32_t& a ) { a = template inline void Unserialize(Stream& s, uint32_t& a) { a = ser_readdata32(s); } template inline void Unserialize(Stream& s, int64_t& a ) { a = ser_readdata64(s); } template inline void Unserialize(Stream& s, uint64_t& a) { a = ser_readdata64(s); } -template void Unserialize(Stream& s, B (&a)[N]) { s.read(MakeWritableByteSpan(a)); } -template void Unserialize(Stream& s, std::array& a) { s.read(MakeWritableByteSpan(a)); } -template void Unserialize(Stream& s, std::span span) { s.read(std::as_writable_bytes(span)); } -template void Unserialize(Stream& s, std::span span) { s.read(std::as_writable_bytes(span)); } + +template void Unserialize(Stream& s, B (&a)[N]) { s.read(MakeWritableByteSpan(a)); } +template void Unserialize(Stream& s, std::array& a) { s.read(MakeWritableByteSpan(a)); } +template void Unserialize(Stream& s, std::span span) { s.read(std::as_writable_bytes(span)); } +template void Unserialize(Stream& s, std::span span) { s.read(std::as_writable_bytes(span)); } template inline void Serialize(Stream& s, bool a) { uint8_t f = a; ser_writedata8(s, f); } template inline void Unserialize(Stream& s, bool& a) { uint8_t f = ser_readdata8(s); a = f; }