34 lines
738 B
C++
34 lines
738 B
C++
#pragma once
|
|
#include <cstddef>
|
|
|
|
#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 <typename T>
|
|
[[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};
|
|
};
|
|
}
|
|
|