diff options
Diffstat (limited to 'core/src/Model/Template/Template.hpp')
-rw-r--r-- | core/src/Model/Template/Template.hpp | 45 |
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; +}; |