Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
Component.hpp
1 
2 #pragma once
3 #include <alicorn/std/string.hpp>
4 #include <alicorn/std.fast/unordered-map.hpp>
5 #include <Covellite/Predefined.hpp>
6 
7 namespace covellite
8 {
9 
10 namespace api
11 {
12 
34 class Component final
35 {
36  template<bool>
37  class Convertor;
38  class ConstructorTag {};
39 
40  class Param final
41  {
42  public:
43  template<class T>
44  bool IsType(void) const;
45  template<class T>
46  Param & Default(const T &);
47  template<class T>
48  operator T & (void);
49  template<class T>
50  operator const T & (void) const;
51  template<class T>
52  Param & operator= (const T &);
53 
54  private:
55  template<class T>
56  void Set(const T &);
57 
58  private:
59  friend Component;
60  ::covellite::Any_t Value;
61  size_t hType;
62  };
63 
64 public:
65  using String_t = ::alicorn::extension::std::String;
66  using Name_t = String_t;
67  using Hasher_t = ::std::hash<Name_t>;
68  using Params_t = ::alicorn::extension::std::fast::unordered_map<size_t, Param>;
69  using SourceParams_t = ::std::map<Name_t, ::covellite::Any_t>;
70  using Id_t = String_t;
71  using Type_t = String_t;
72  using Kind_t = String_t;
73  using ComponentPtr_t = ::std::shared_ptr<Component>;
74 
75 public:
76  class Renders;
77 
78 public:
79  static ComponentPtr_t Make(const SourceParams_t &);
80  static size_t GetHash(const Name_t &);
81 
82 public:
83  Param & operator[] (const Name_t &);
84  Param & operator[] (const size_t &);
85  const Param & operator[] (const Name_t &) const;
86  const Param & operator[] (const size_t &) const;
87 
88 private:
89  static size_t GetHashId(void);
90  static size_t GetHashType(void);
91  static size_t GetHashKind(void);
92 
93 private:
94  Params_t m_Params;
95 
96 public:
97  const Id_t Id;
98  const Type_t Type;
99  const Kind_t Kind;
100 
101 public:
102  Component(const Params_t &, ConstructorTag);
103 };
104 
105 } // namespace api
106 
107 } // namespace covellite
covellite::api::Component::operator[]
Param & operator[](const Name_t &)
Оператор получения временной переменной для доступа к параметру компонента.
Definition: Component.inl:253
covellite::api::Component::Renders
Класс входит в проект Covellite.Api Класс создания рендеров компонентов.
Definition: Renders.hpp:28
covellite::api::Component::Make
static ComponentPtr_t Make(const SourceParams_t &)
Функция создания объектов компонентов.
Definition: Component.inl:29
covellite::api::Component
Класс входит в проект Covellite.Api Класс компонента.
Definition: Component.hpp:35
covellite::api::Component::Component
Component(const Params_t &, ConstructorTag)
Конструктор класса.
Definition: Component.inl:74
covellite::api::Component::GetHash
static size_t GetHash(const Name_t &)
Функция получения хеша для имени параметра.
Definition: Component.inl:55