diff options
author | rtk0c <[email protected]> | 2021-06-03 10:06:55 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2021-06-03 10:06:55 -0700 |
commit | 7a325e1b3be04bc54941431458903022da1643ac (patch) | |
tree | aa76ab5b243fb351693645bfe2d2841019a45c5a /core/src/Model/Template | |
parent | 016d58996db755630f8b41ddbef67516fe0c13b2 (diff) |
Create template inheritance hierarchy, object value RTTI system
Diffstat (limited to 'core/src/Model/Template')
-rw-r--r-- | core/src/Model/Template/TableTemplate.cpp | 10 | ||||
-rw-r--r-- | core/src/Model/Template/TableTemplate.hpp | 3 | ||||
-rw-r--r-- | core/src/Model/Template/Template.hpp | 8 | ||||
-rw-r--r-- | core/src/Model/Template/Template_Main.cpp | 10 | ||||
-rw-r--r-- | core/src/Model/Template/Template_RTTI.cpp | 15 |
5 files changed, 42 insertions, 4 deletions
diff --git a/core/src/Model/Template/TableTemplate.cpp b/core/src/Model/Template/TableTemplate.cpp index b8444b7..28a4d6e 100644 --- a/core/src/Model/Template/TableTemplate.cpp +++ b/core/src/Model/Template/TableTemplate.cpp @@ -58,6 +58,16 @@ const TableTemplate& TableInstanciationParameters::GetTable() const return *mTable; } +bool TableTemplate::IsInstance(const Template* tmpl) +{ + return tmpl->GetKind() == KD_Table; +} + +TableTemplate::TableTemplate() + : Template(KD_Table) +{ +} + int TableTemplate::GetTableWidth() const { return mColumnWidths.size(); diff --git a/core/src/Model/Template/TableTemplate.hpp b/core/src/Model/Template/TableTemplate.hpp index f7a79e9..ed1a96f 100644 --- a/core/src/Model/Template/TableTemplate.hpp +++ b/core/src/Model/Template/TableTemplate.hpp @@ -137,6 +137,9 @@ private: std::vector<int> mColumnWidths; public: + static bool IsInstance(const Template* tmpl); + TableTemplate(); + int GetTableWidth() const; int GetTableHeight() const; void Resize(int newWidth, int newHeight); diff --git a/core/src/Model/Template/Template.hpp b/core/src/Model/Template/Template.hpp index f7dd898..131a6ac 100644 --- a/core/src/Model/Template/Template.hpp +++ b/core/src/Model/Template/Template.hpp @@ -18,12 +18,20 @@ public: KindCount = InvalidKind, }; +private: + Kind mKind; + public: static const char* FormatKind(Kind kind); static std::unique_ptr<Template> CreateByKind(Kind kind); + static bool IsInstance(const Template* tmpl); + + Template(Kind kind); virtual ~Template() = default; + Kind GetKind() const; + enum class ReadResult { RR_Success, diff --git a/core/src/Model/Template/Template_Main.cpp b/core/src/Model/Template/Template_Main.cpp index 08437b7..35da52b 100644 --- a/core/src/Model/Template/Template_Main.cpp +++ b/core/src/Model/Template/Template_Main.cpp @@ -1,5 +1,15 @@ #include "Template.hpp" +Template::Template(Kind kind) + : mKind{ kind } +{ +} + +Template::Kind Template::GetKind() const +{ + return mKind; +} + std::unique_ptr<Template> TemplateInfo::LoadFromDisk() const { // TODO diff --git a/core/src/Model/Template/Template_RTTI.cpp b/core/src/Model/Template/Template_RTTI.cpp index 042aaec..1475e02 100644 --- a/core/src/Model/Template/Template_RTTI.cpp +++ b/core/src/Model/Template/Template_RTTI.cpp @@ -2,20 +2,27 @@ #include "Model/Template/TableTemplate.hpp" -inline const char* Template::FormatKind(Kind kind) +const char* Template::FormatKind(Kind kind) { switch (kind) { case KD_Table: return "Table template"; - case InvalidKind: return "<invalid kind>"; + case InvalidKind: break; } + return "<invalid kind>"; } -inline std::unique_ptr<Template> Template::CreateByKind(Kind kind) +std::unique_ptr<Template> Template::CreateByKind(Kind kind) { switch (kind) { case KD_Table: return std::make_unique<TableTemplate>(); - case InvalidKind: return nullptr; + case InvalidKind: break; } + return nullptr; +} + +bool Template::IsInstance(const Template* tmpl) +{ + return true; } |