Files
Acrux/include/acrux/buffers/BufferBase.hpp
T
2026-09-19 23:00:15 -03:00

41 lines
1010 B
C++

#pragma once
#include <cstddef>
#include <istream>
#include <ostream>
#include "acrux/memory/Endian.hpp"
namespace acrux::buffers
{
class IBuffer
{
public:
[[nodiscard]] virtual size_t byteLength() const = 0;
[[nodiscard]] virtual size_t bitLength() const = 0;
[[nodiscard]] virtual size_t byteCapacity() const = 0;
[[nodiscard]] virtual size_t bitCapacity() const = 0;
virtual bool copyTo(std::ostream& stream) const = 0;
virtual bool copyFrom(std::istream& stream) = 0;
[[nodiscard]] virtual bool hasBytesLeft(size_t count) const = 0;
[[nodiscard]] virtual bool hasBitsLeft(size_t count) const = 0;
void setendianness(acrux::memory::Endian endianness);
acrux::memory::Endian endianness();
~IBuffer() = default;
IBuffer(const IBuffer&) = default;
IBuffer(IBuffer&&) noexcept = default;
IBuffer& operator=(IBuffer&&) noexcept = default;
IBuffer& operator=(const IBuffer&) = default;
private:
acrux::memory::Endian m_endianness{acrux::memory::Endian::None};
};
}