diff options
author | rtk0c <[email protected]> | 2021-09-06 00:15:35 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2021-09-06 00:15:35 -0700 |
commit | 04653742243e4bb6452108cfd0fef2f4afd8f23b (patch) | |
tree | a4a5e0cc8d16ffe78859fab9ee5e487a7d22d81e /core/src/Model/Template/Template_Main.cpp | |
parent | 70e00f817e9596a746800ba4afec2b7c4ca25142 (diff) |
Fix all compile errors, remove OperateIOProxy requirement from DataStream api
Diffstat (limited to 'core/src/Model/Template/Template_Main.cpp')
-rw-r--r-- | core/src/Model/Template/Template_Main.cpp | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/core/src/Model/Template/Template_Main.cpp b/core/src/Model/Template/Template_Main.cpp index 19803aa..49187d3 100644 --- a/core/src/Model/Template/Template_Main.cpp +++ b/core/src/Model/Template/Template_Main.cpp @@ -4,6 +4,8 @@ #include "Model/Project.hpp" #include "UI/UI.hpp" #include "Utils/I18n.hpp" +#include "Utils/IO/DataStream.hpp" +#include "Utils/IO/FileStream.hpp" #include "Utils/UUID.hpp" #include <imgui.h> @@ -60,15 +62,11 @@ fs::path TemplateAssetList::RetrievePathFromAsset(const SavedAsset& asset) const bool TemplateAssetList::SaveInstance(const SavedAsset& assetInfo, const Asset* asset) const { auto path = RetrievePathFromAsset(assetInfo); + auto stream = OutputDataStream(OutputFileStream(path, OutputFileStream::TruncateFile)); - std::ofstream ofs(path, std::ios::binary); - if (!ofs) return false; - ofs << (uint64_t)assetInfo.Name.size(); - ofs << assetInfo.Name; - ofs << static_cast<Template::Kind>(assetInfo.Payload); - + stream.WriteObject(assetInfo); if (auto tmpl = static_cast<const Template*>(asset)) { - tmpl->WriteTo(ofs); + stream.WriteObject(*tmpl); } return true; @@ -76,24 +74,14 @@ bool TemplateAssetList::SaveInstance(const SavedAsset& assetInfo, const Asset* a static std::unique_ptr<Template> LoadTemplateFromFile(const fs::path& path) { - std::ifstream ifs(path, std::ios::binary); - if (!ifs) return nullptr; - - // TODO fix serialization - uint64_t nameSize; - ifs >> nameSize; - ifs.seekg(nameSize, std::ios::end); + auto stream = InputDataStream(InputFileStream(path)); - uint32_t iKind; - ifs >> iKind; + SavedAsset assetInfo; + stream.ReadObject(assetInfo); - auto kind = static_cast<Template::Kind>(iKind); + auto kind = static_cast<Template::Kind>(assetInfo.Payload); auto tmpl = Template::CreateByKind(kind); - - auto res = tmpl->ReadFrom(ifs); - if (res != Template::RR_Success) { - return nullptr; - } + stream.ReadObject(*tmpl); return tmpl; } |