From 5c045b693427f35b13b40f586fa63bd1d08e06ed Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sun, 2 Apr 2023 13:00:05 -0400 Subject: [PATCH] AK: Add templated Span and Span constructors for C-arrays This helper constructor exists on the unspecialized Span class also, and is convenient for e.g. creating Bytes from: u8 buffer[64]; Bytes bytes { buffer }; --- AK/Span.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/AK/Span.h b/AK/Span.h index 4399dcc136..6c77ce04f4 100644 --- a/AK/Span.h +++ b/AK/Span.h @@ -64,12 +64,20 @@ public: , m_size(size) { } + ALWAYS_INLINE Span(void* values, size_t size) : m_values(reinterpret_cast(values)) , m_size(size) { } + template + ALWAYS_INLINE constexpr Span(u8 (&values)[size]) + : m_values(values) + , m_size(size) + { + } + protected: u8* m_values { nullptr }; size_t m_size { 0 }; @@ -85,17 +93,26 @@ public: , m_size(size) { } + ALWAYS_INLINE Span(void const* values, size_t size) : m_values(reinterpret_cast(values)) , m_size(size) { } + ALWAYS_INLINE Span(char const* values, size_t size) : m_values(reinterpret_cast(values)) , m_size(size) { } + template + ALWAYS_INLINE constexpr Span(u8 const (&values)[size]) + : m_values(values) + , m_size(size) + { + } + protected: u8 const* m_values { nullptr }; size_t m_size { 0 };