aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template/Template.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/Model/Template/Template.hpp')
-rw-r--r--core/src/Model/Template/Template.hpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/core/src/Model/Template/Template.hpp b/core/src/Model/Template/Template.hpp
new file mode 100644
index 0000000..0901a1b
--- /dev/null
+++ b/core/src/Model/Template/Template.hpp
@@ -0,0 +1,45 @@
+#pragma once
+
+#include "cplt_fwd.hpp"
+
+#include <filesystem>
+#include <iosfwd>
+#include <memory>
+#include <string>
+
+class Template
+{
+public:
+ enum Kind
+ {
+ KD_Table,
+
+ InvalidKind,
+ KindCount = InvalidKind,
+ };
+
+public:
+ static const char* FormatKind(Kind kind);
+ static std::unique_ptr<Template> CreateByKind(Kind kind);
+
+ virtual ~Template() = default;
+
+ enum class ReadResult
+ {
+ RR_Success,
+ RR_InvalidFormat,
+ };
+ ReadResult ReadFrom(std::istream& stream) = 0;
+ void WriteTo(std::ostream& stream) const = 0;
+};
+
+class TemplateInfo
+{
+public:
+ std::filesystem::path Path;
+ std::string Name;
+ std::string PathStringCache = Path.string();
+ Template::Kind Kind;
+
+ std::unique_ptr<Template> LoadFromDisk() const;
+};