From 74bb9cd27242b9320f99ff4d2b50c3051576cc14 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 8 Feb 2022 16:53:51 +0800 Subject: ... --- include/cru/ui/mapper/Mapper.hpp | 92 ---------------------------------------- 1 file changed, 92 deletions(-) delete mode 100644 include/cru/ui/mapper/Mapper.hpp (limited to 'include/cru/ui/mapper/Mapper.hpp') diff --git a/include/cru/ui/mapper/Mapper.hpp b/include/cru/ui/mapper/Mapper.hpp deleted file mode 100644 index c52bec70..00000000 --- a/include/cru/ui/mapper/Mapper.hpp +++ /dev/null @@ -1,92 +0,0 @@ -#pragma once -#include "../Base.hpp" - -#include "cru/common/ClonablePtr.hpp" -#include "cru/common/Exception.hpp" -#include "cru/xml/XmlNode.hpp" - -#include -#include -#include -#include - -namespace cru::ui::mapper { -template -class BasicMapper; - -class CRU_UI_API MapperBase : public Object { - public: - explicit MapperBase(std::type_index type_index); - - CRU_DELETE_COPY(MapperBase) - CRU_DELETE_MOVE(MapperBase) - - ~MapperBase() override = default; - - public: - std::type_index GetTypeIndex() const { return type_index_; } - - template - BasicMapper* StaticCast() { - return static_cast*>(this); - } - - template - BasicMapper* DynamicCast() { - return dynamic_cast*>(this); - } - - virtual bool SupportMapFromString() { return false; } - virtual bool SupportMapFromXml() { return false; } - virtual bool XmlElementIsOfThisType(xml::XmlElementNode* node) { - return false; - } - - private: - std::type_index type_index_; -}; - -template -class CRU_UI_API BasicMapper : public MapperBase { - public: - static_assert(std::is_default_constructible_v, - "T must be default constructible."); - - BasicMapper() : MapperBase(typeid(T)) {} - - CRU_DELETE_COPY(BasicMapper) - CRU_DELETE_MOVE(BasicMapper) - - ~BasicMapper() override = default; - - virtual T MapFromString(String str) { - if (!SupportMapFromString()) { - throw Exception(u"This mapper does not support map from string."); - } - - return DoMapFromString(str); - } - - T MapFromXml(xml::XmlElementNode* node) { - if (!SupportMapFromXml()) { - throw Exception(u"This mapper does not support map from xml."); - } - - if (!XmlElementIsOfThisType(node)) { - throw Exception(u"This xml element is not of mapping type."); - } - - return DoMapFromXml(node); - } - - protected: - virtual T DoMapFromString(String str) { return {}; } - virtual T DoMapFromXml(xml::XmlElementNode* node) { return {}; } -}; - -template -using BasicRefMapper = BasicMapper>; - -template -using BasicPtrMapper = BasicMapper>; -} // namespace cru::ui::mapper -- cgit v1.2.3