1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 05:27:46 +00:00

StringBuilder: Use a ByteBuffer internally instead of a Vector<String>.

This commit is contained in:
Andreas Kling 2019-01-18 03:27:51 +01:00
parent 074edffc44
commit 9d7da26b4e
6 changed files with 58 additions and 37 deletions

View file

@ -47,6 +47,8 @@ public:
m_size = size;
}
void grow(size_t size);
private:
enum ConstructionMode { Uninitialized, Copy, Wrap, Adopt };
explicit Buffer(size_t); // For ConstructionMode=Uninitialized
@ -87,7 +89,19 @@ inline Buffer<T>::Buffer(T* elements, size_t size, ConstructionMode mode)
} else if (mode == Wrap) {
m_owned = false;
}
}
template<typename T>
inline void Buffer<T>::grow(size_t size)
{
ASSERT(size > m_size);
ASSERT(m_owned);
T* new_elements = static_cast<T*>(kmalloc(size * sizeof(T)));
memcpy(new_elements, m_elements, m_size * sizeof(T));
T* old_elements = m_elements;
m_elements = new_elements;
m_size = size;
kfree(old_elements);
}
template<typename T>