#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<const std::byte>) = 0; }; class BufferWriter : public IWriter { std::byte* m_buffer; int64_t m_size; int64_t m_written = 0; public: explicit BufferWriter(Span<std::byte> buffer) : m_buffer{buffer.begin()}, m_size{buffer.size()} {} void Write(Span<const std::byte>) override; constexpr Span<const std::byte> GetWritten() const { return { m_buffer, m_written }; } }; } // namespace deimos