diff options
Diffstat (limited to 'core/src/Utils/IO/Archive.cpp')
-rw-r--r-- | core/src/Utils/IO/Archive.cpp | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/core/src/Utils/IO/Archive.cpp b/core/src/Utils/IO/Archive.cpp index 559c476..b6f806b 100644 --- a/core/src/Utils/IO/Archive.cpp +++ b/core/src/Utils/IO/Archive.cpp @@ -10,23 +10,9 @@ constexpr uint8_t kByteOrderMark = []() { } }(); -std::optional<DataArchive> DataArchive::SaveFile(const std::filesystem::path& path) +std::optional<InputDataStream> DataArchive::LoadFile(const std::filesystem::path& path) { - auto archive = DataArchive(DataStream(std::fstream(path))); - auto& stream = archive.mStream; - - stream.WriteBytes(kMagicNumberCount, kMagicNumbers); - stream.Write(kByteOrderMark); - - stream.SetEndianness(std::endian::native); - - return archive; -} - -std::optional<DataArchive> DataArchive::LoadFile(const std::filesystem::path& path) -{ - auto archive = DataArchive(DataStream(std::fstream(path))); - auto& stream = archive.mStream; + auto stream = InputDataStream(std::fstream(path)); uint8_t magicNumbers[kMagicNumberCount]; stream.ReadBytes(kMagicNumberCount, magicNumbers); @@ -46,20 +32,17 @@ std::optional<DataArchive> DataArchive::LoadFile(const std::filesystem::path& pa default: std::abort(); } - return archive; + return stream; } -const DataStream& DataArchive::GetStream() const +std::optional<OutputDataStream> DataArchive::SaveFile(const std::filesystem::path& path) { - return mStream; -} + auto stream = OutputDataStream(std::fstream(path)); -DataStream& DataArchive::GetStream() -{ - return mStream; -} + stream.WriteBytes(kMagicNumberCount, kMagicNumbers); + stream.Write(kByteOrderMark); -DataArchive::DataArchive(DataStream stream) - : mStream(std::move(stream)) -{ + stream.SetEndianness(std::endian::native); + + return stream; } |