AK: Add templated Span<u8> and Span<u8 const> constructors for C-arrays

This helper constructor exists on the unspecialized Span<T> class also,
and is convenient for e.g. creating Bytes from:

    u8 buffer[64];
    Bytes bytes { buffer };
This commit is contained in:
Timothy Flynn 2023-04-02 13:00:05 -04:00 committed by Andreas Kling
parent f7960ffbe3
commit 5c045b6934

View file

@ -64,12 +64,20 @@ public:
, m_size(size)
{
}
ALWAYS_INLINE Span(void* values, size_t size)
: m_values(reinterpret_cast<u8*>(values))
, m_size(size)
{
}
template<size_t size>
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<u8 const*>(values))
, m_size(size)
{
}
ALWAYS_INLINE Span(char const* values, size_t size)
: m_values(reinterpret_cast<u8 const*>(values))
, m_size(size)
{
}
template<size_t size>
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 };