LibIPC: Add a generic encoder for spans

This commit is contained in:
Timothy Flynn 2025-03-08 09:34:02 -05:00 committed by Tim Flynn
commit a5b996c079
Notes: github-actions[bot] 2025-03-09 15:16:14 +00:00
2 changed files with 17 additions and 11 deletions

View file

@ -116,26 +116,27 @@ ErrorOr<void> encode(Encoder&, File const&);
template<>
ErrorOr<void> encode(Encoder&, Empty const&);
template<typename T, size_t N>
ErrorOr<void> encode(Encoder& encoder, Array<T, N> const& array)
template<Concepts::Span T>
ErrorOr<void> encode(Encoder& encoder, T const& span)
{
TRY(encoder.encode_size(array.size()));
TRY(encoder.encode_size(span.size()));
for (auto const& value : array)
for (auto const& value : span)
TRY(encoder.encode(value));
return {};
}
template<typename T, size_t N>
ErrorOr<void> encode(Encoder& encoder, Array<T, N> const& array)
{
return encoder.encode(array.span());
}
template<Concepts::Vector T>
ErrorOr<void> encode(Encoder& encoder, T const& vector)
{
TRY(encoder.encode_size(vector.size()));
for (auto const& value : vector)
TRY(encoder.encode(value));
return {};
return encoder.encode(vector.span());
}
template<Concepts::HashMap T>