aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-11-10 20:44:52 -0800
committerrtk0c <[email protected]>2021-11-10 20:44:52 -0800
commit816bbe7993adf4a41ace7bae06bfe6a5921308b8 (patch)
treeb10decb90b27b11a66a6089f2ebcf5b62aa8b643 /core/src/Model/Template
parent04653742243e4bb6452108cfd0fef2f4afd8f23b (diff)
Switch more IO to use DataArchive
Diffstat (limited to 'core/src/Model/Template')
-rw-r--r--core/src/Model/Template/Template_Main.cpp29
1 files changed, 15 insertions, 14 deletions
diff --git a/core/src/Model/Template/Template_Main.cpp b/core/src/Model/Template/Template_Main.cpp
index 49187d3..4d6b67c 100644
--- a/core/src/Model/Template/Template_Main.cpp
+++ b/core/src/Model/Template/Template_Main.cpp
@@ -4,8 +4,7 @@
#include "Model/Project.hpp"
#include "UI/UI.hpp"
#include "Utils/I18n.hpp"
-#include "Utils/IO/DataStream.hpp"
-#include "Utils/IO/FileStream.hpp"
+#include "Utils/IO/Archive.hpp"
#include "Utils/UUID.hpp"
#include <imgui.h>
@@ -35,17 +34,14 @@ void TemplateAssetList::DiscoverFiles(const std::function<void(SavedAsset)>& cal
std::string TemplateAssetList::RetrieveNameFromFile(const fs::path& file) const
{
- std::ifstream ifs(file);
- if (!ifs) return "";
+ auto res = DataArchive::LoadFile(file);
+ if (!res) return "";
+ auto& stream = res.value();
- uint64_t len;
- ifs >> len;
-
- std::string name;
- name.reserve(len);
- std::copy_n(std::istreambuf_iterator(ifs), len, std::back_inserter(name));
+ SavedAsset assetInfo;
+ stream.ReadObject(assetInfo);
- return name;
+ return assetInfo.Name;
}
uuids::uuid TemplateAssetList::RetrieveUuidFromFile(const fs::path& file) const
@@ -62,10 +58,13 @@ 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));
+ auto res = DataArchive::SaveFile(path);
+ if (!res) return false;
+ auto& stream = res.value();
stream.WriteObject(assetInfo);
- if (auto tmpl = static_cast<const Template*>(asset)) {
+ // This cast is fine: calls to this class will always be wrapped in TypedAssetList<T>, which will ensure `asset` points to some Template
+ if (auto tmpl = static_cast<const Template*>(asset)) { // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
stream.WriteObject(*tmpl);
}
@@ -74,7 +73,9 @@ bool TemplateAssetList::SaveInstance(const SavedAsset& assetInfo, const Asset* a
static std::unique_ptr<Template> LoadTemplateFromFile(const fs::path& path)
{
- auto stream = InputDataStream(InputFileStream(path));
+ auto res = DataArchive::LoadFile(path);
+ if (!res) return nullptr;
+ auto& stream = res.value();
SavedAsset assetInfo;
stream.ReadObject(assetInfo);