aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template/Template_Main.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-09-06 00:15:35 -0700
committerrtk0c <[email protected]>2021-09-06 00:15:35 -0700
commit04653742243e4bb6452108cfd0fef2f4afd8f23b (patch)
treea4a5e0cc8d16ffe78859fab9ee5e487a7d22d81e /core/src/Model/Template/Template_Main.cpp
parent70e00f817e9596a746800ba4afec2b7c4ca25142 (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.cpp32
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;
}