AK: Add copy_to() and move_to() methods to AK::Span.

This commit is contained in:
asynts 2020-08-12 11:44:20 +02:00 committed by Andreas Kling
parent 8e7dfebf11
commit 78849bbb48

View file

@ -154,6 +154,28 @@ public:
return this->m_values + start;
}
ALWAYS_INLINE void copy_to(Span other) const
{
ASSERT(other.size() >= size());
__builtin_memcpy(other.data(), data(), sizeof(T) * size());
}
ALWAYS_INLINE void copy_trimmed_to(Span other) const
{
__builtin_memcpy(other.data(), data(), sizeof(T) * min(size(), other.size()));
}
ALWAYS_INLINE void move_to(Span other) const
{
ASSERT(other.size() >= size());
__builtin_memmove(other.data(), data(), sizeof(T) * size());
}
ALWAYS_INLINE void move_trimmed_to(Span other) const
{
__builtin_memmove(other.data(), data(), sizeof(T) * min(size(), other.size()));
}
ALWAYS_INLINE const T& at(size_t index) const
{
ASSERT(index < this->m_size);