Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
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
7namespace covellite
8{
9
10namespace api
11{
12
34class 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
64public:
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
75public:
76 class Renders;
77
78public:
79 static ComponentPtr_t Make(const SourceParams_t &);
80 static size_t GetHash(const Name_t &);
81
82public:
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
88private:
89 static size_t GetHashId(void);
90 static size_t GetHashType(void);
91 static size_t GetHashKind(void);
92
93private:
94 Params_t m_Params;
95
96public:
97 const Id_t Id;
98 const Type_t Type;
99 const Kind_t Kind;
100
101public:
102 Component(const Params_t &, ConstructorTag);
103};
104
105} // namespace api
106
107} // namespace covellite
Класс входит в проект Covellite.Api Класс компонента.
Definition Component.hpp:35
Component(const Params_t &, ConstructorTag)
Конструктор класса.
Definition Component.inl:74
Param & operator[](const Name_t &)
Оператор получения временной переменной для доступа к параметру компонента.
Definition Component.inl:253
static ComponentPtr_t Make(const SourceParams_t &)
Функция создания объектов компонентов.
Definition Component.inl:29
static size_t GetHash(const Name_t &)
Функция получения хеша для имени параметра.
Definition Component.inl:55
Класс входит в проект Covellite.Api Класс создания рендеров компонентов.
Definition Renders.hpp:28