20 #ifndef ANTKEEPER_RESOURCES_SERIALIZE_CONTEXT_HPP
21 #define ANTKEEPER_RESOURCES_SERIALIZE_CONTEXT_HPP
36 [[nodiscard]]
virtual const std::filesystem::path&
path() const noexcept = 0;
41 [[nodiscard]] virtual
bool error() const noexcept = 0;
53 virtual std::
size_t write8(const std::
byte* data, std::
size_t count) noexcept(false) = 0;
65 virtual std::
size_t write16_le(const std::
byte* data, std::
size_t count) noexcept(false) = 0;
77 virtual std::
size_t write16_be(const std::
byte* data, std::
size_t count) noexcept(false) = 0;
91 template <std::endian Endian>
92 inline std::
size_t write16(const std::
byte* data, std::
size_t count) noexcept(false)
94 if constexpr (Endian == std::endian::little)
114 virtual std::size_t
write32_le(
const std::byte* data, std::size_t
count) noexcept(
false) = 0;
126 virtual std::size_t
write32_be(
const std::byte* data, std::size_t
count) noexcept(
false) = 0;
140 template <std::endian Endian>
141 inline std::size_t
write32(
const std::byte* data, std::size_t
count) noexcept(
false)
143 if constexpr (Endian == std::endian::little)
163 virtual std::size_t
write64_le(
const std::byte* data, std::size_t
count) noexcept(
false) = 0;
175 virtual std::size_t
write64_be(
const std::byte* data, std::size_t
count) noexcept(
false) = 0;
189 template <std::endian Endian>
190 inline std::size_t
write64(
const std::byte* data, std::size_t
count) noexcept(
false)
192 if constexpr (Endian == std::endian::little)
constexpr int count(T x) noexcept
Returns the number of set bits in a value, known as a population count or Hamming weight.
Provides access to a serialization state.
virtual std::size_t write32_le(const std::byte *data, std::size_t count) noexcept(false)=0
Writes 32-bit (double word) little-endian data.
std::size_t write16(const std::byte *data, std::size_t count) noexcept(false)
Writes 16-bit (word) data.
virtual std::size_t write64_le(const std::byte *data, std::size_t count) noexcept(false)=0
Writes 64-bit (quad word) little-endian data.
virtual std::size_t write64_be(const std::byte *data, std::size_t count) noexcept(false)=0
Writes 64-bit (quad word) big-endian data.
virtual std::size_t write16_be(const std::byte *data, std::size_t count) noexcept(false)=0
Writes 16-bit (word) big-endian data.
virtual std::size_t write8(const std::byte *data, std::size_t count) noexcept(false)=0
Writes 8-bit (byte) data.
std::size_t write32(const std::byte *data, std::size_t count) noexcept(false)
Writes 32-bit (double word) data.
virtual std::size_t write32_be(const std::byte *data, std::size_t count) noexcept(false)=0
Writes 32-bit (double word) big-endian data.
virtual std::size_t write16_le(const std::byte *data, std::size_t count) noexcept(false)=0
Writes 16-bit (word) little-endian data.
virtual const std::filesystem::path & path() const noexcept=0
Returns the path associated with this serialize context.
std::size_t write64(const std::byte *data, std::size_t count) noexcept(false)
Writes 64-bit (quad word) data.
virtual bool error() const noexcept=0
Returns true if an error occured during a write operation or initialization, false otherwise.