aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-06-03 10:06:55 -0700
committerrtk0c <[email protected]>2021-06-03 10:06:55 -0700
commit7a325e1b3be04bc54941431458903022da1643ac (patch)
treeaa76ab5b243fb351693645bfe2d2841019a45c5a /core/src/Model/Template
parent016d58996db755630f8b41ddbef67516fe0c13b2 (diff)
Create template inheritance hierarchy, object value RTTI system
Diffstat (limited to 'core/src/Model/Template')
-rw-r--r--core/src/Model/Template/TableTemplate.cpp10
-rw-r--r--core/src/Model/Template/TableTemplate.hpp3
-rw-r--r--core/src/Model/Template/Template.hpp8
-rw-r--r--core/src/Model/Template/Template_Main.cpp10
-rw-r--r--core/src/Model/Template/Template_RTTI.cpp15
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;
}