#include #include Buffer::Buffer() { } Buffer::Buffer(u8* data, usize size) : m_data(data), m_size(size) { } Buffer::Buffer(Buffer&& other) : m_data(other.data()), m_size(other.size()) { other.m_data = nullptr; } Buffer::~Buffer() { if (m_data) free_impl(m_data); } Result Buffer::create_sized(usize size) { u8* data = (u8*)TRY(malloc_impl(size)); return Buffer { data, size }; } Result Buffer::try_resize(usize new_size) { m_data = (u8*)TRY(realloc_impl(m_data, new_size)); m_size = new_size; return {}; } Result Buffer::create_slice_at_end(usize size) { usize old_size = m_size; TRY(try_resize(m_size + size)); return m_data + old_size; }