diff options
Diffstat (limited to 'core/src/Utils/IO/Archive.cpp')
-rw-r--r-- | core/src/Utils/IO/Archive.cpp | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/core/src/Utils/IO/Archive.cpp b/core/src/Utils/IO/Archive.cpp deleted file mode 100644 index f6e7b27..0000000 --- a/core/src/Utils/IO/Archive.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include "Archive.hpp" - -constexpr uint8_t kMagicNumbers[] = { 0x98, 0xd8, 0xa4, 0x65, 0x18, 0xa2, 0xd6, 0xa0 }; -constexpr size_t kMagicNumberCount = std::size(kMagicNumbers); - -constexpr uint8_t kByteOrderMark = []() { - switch (std::endian::native) { - case std::endian::little: return 0; - case std::endian::big: return 1; - } -}(); - -std::span<const uint8_t, 8> DataArchive::GetMagicNumbers() -{ - return std::span<const uint8_t, 8>{ kMagicNumbers }; -} - -std::optional<InputDataStream> DataArchive::LoadFile(const std::filesystem::path& path) -{ - InputFileStream fileStream(path); - fileStream.SetReadInSize(1024); - InputDataStream stream(std::move(fileStream)); - - uint8_t magicNumbers[kMagicNumberCount]; - stream.ReadBytes(kMagicNumberCount, magicNumbers); - - for (size_t i = 0; i < kMagicNumberCount; ++i) { - if (magicNumbers[i] != kMagicNumbers[i]) { - return {}; - } - } - - uint8_t byteOrderMark; - stream.Read(byteOrderMark); - - switch (byteOrderMark) { - case 0: stream.SetEndianness(std::endian::little); break; - case 1: stream.SetEndianness(std::endian::big); break; - default: std::abort(); - } - - return stream; -} - -std::optional<OutputDataStream> DataArchive::SaveFile(const std::filesystem::path& path) -{ - OutputFileStream fileStream(path, OutputFileStream::TruncateFile); - fileStream.SetMaxBufferSize(1024); - OutputDataStream stream(std::move(fileStream)); - - stream.WriteBytes(kMagicNumberCount, kMagicNumbers); - stream.Write(kByteOrderMark); - - stream.SetEndianness(std::endian::native); - - return stream; -} |