#pragma once #include #include "BufferBase.hpp" #include "acrux/memory/Endian.hpp" namespace acrux::buffers { class BufferReader : public IBuffer { public: [[nodiscard]] virtual bool read(void* s, size_t bitCount) = 0; template [[nodiscard]] bool read(T& value, acrux::memory::Endian endianness); [[nodiscard]] const IBuffer* getBuffer() const; IBuffer* getBuffer(); BufferReader(IBuffer* buffer); ~BufferReader() = default; BufferReader(const BufferReader&) = default; BufferReader(BufferReader&&) noexcept = default; BufferReader& operator=(BufferReader&&) noexcept = default; BufferReader& operator=(const BufferReader&) = default; private: IBuffer* m_buffer{nullptr}; }; }