#pragma once #include "deimos/core/base.h" namespace deimos { class IWriter { public: IWriter() = default; deimos_NO_COPY_MOVE(IWriter); virtual ~IWriter() = default; virtual void Write(Span) = 0; }; class BufferWriter : public IWriter { std::byte* m_buffer; int64_t m_size; int64_t m_written = 0; public: explicit BufferWriter(Span buffer) : m_buffer{buffer.begin()}, m_size{buffer.size()} {} void Write(Span) override; constexpr Span GetWritten() const { return { m_buffer, m_written }; } }; } // namespace deimos