AK: Span: Allow slicing with zero length.

Previously, the following would not work:

    Bytes{}.slice(0);

because it was asserted that `start < size()`.
This commit is contained in:
asynts 2020-08-18 18:02:04 +02:00 committed by Andreas Kling
parent 413db2d6d5
commit df21487794

View file

@ -142,16 +142,20 @@ public:
ALWAYS_INLINE bool is_empty() const { return this->m_size == 0; }
ALWAYS_INLINE Span slice(size_t start, size_t size) const
ALWAYS_INLINE Span slice(size_t start, size_t length) const
{
ASSERT(start + size <= this->m_size);
return { this->m_values + start, size };
ASSERT(start + length <= size());
return { this->m_values + start, length };
}
ALWAYS_INLINE Span slice(size_t start) const
{
ASSERT(start < this->m_size);
return { this->m_values + start, this->m_size - start };
ASSERT(start <= size());
return { this->m_values + start, size() - start };
}
ALWAYS_INLINE Span trim(size_t length) const
{
return { this->m_values, min(size(), length) };
}
ALWAYS_INLINE T* offset(size_t start) const