36 template<
typename T, u
int64_t UID>
43 operator bool() {
return _v != 0; }
51 template<
typename T, u
int64_t UID>
81 _nameDebug =
typeid(
T).name();
92 if (std::type_index(
typeid(
T)) == _id)
121 return "Debug版本才有此字段!";
129 std::string _nameDebug;
158 for (
auto& iter : _vec)
160 if (iter._id == std::type_index(
typeid(
T)))
162 ret.push_back((
T*)iter._p);
175 for (
auto& iter : _vec)
177 if (iter._id == std::type_index(
typeid(
T)))
180 return (
T*)(iter._p);
196 std::vector<AnyType>::iterator
begin() {
return _vec.begin(); }
198 std::vector<AnyType>::iterator
end() {
return _vec.end(); }
203 std::vector<AnyType> _vec;
211 template <
typename T>
215 _nameDebug = _any.GetNameDebug();
226 template <
typename T>
232 template <
typename T>
233 T*
Get(
size_t index = 0) {
return _vec.Get<
T>(index); }
271 return _any.IsNull();
278 std::string _nameDebug;
284 Components* ret =
new Components((
int*)
nullptr);
295 std::vector<T*>
GetComp(std::vector<Components*>& vec)
300 VectorAny& vec_any = cpt->GetVectorAny();
301 std::vector<T*> mul = vec_any.
GetMulti<
T>();
302 ret.insert(ret.end(), mul.begin(), mul.end());
315 T* p = cpt->GetSelf().Cast<
T>();
325 T*
GetN(std::vector<Components*>& vec,
size_t n)
329 T* p = cpt->GetSelf().Cast<
T>();
std::type_index GetId()
返回类型id
bool operator==(const AnyType &b)
bool operator!=(const AnyType &b)
std::string GetNameDebug()
T * Get(size_t index=0)
返回第n个类型对象,失败返回nullptr
void SetName(std::string_view name)
设置自定义名字
bool operator==(const Components &b)
bool operator!=(const Components &b)
Components(T *p)
any表示实际的对象(比如UI::Text),any为空则为Components
void PushBack(AnyType any)
添加一个任意对象
VectorAny & GetVectorAny()
bool IsPure()
单纯的Componets,any为空
std::function< bool()> Call
void operator=(const T &func)
T * Get(size_t index=0)
返回第n个类型对象,失败返回nullptr
std::vector< AnyType >::iterator begin()
void PushBack(AnyType any)
添加一个任意对象
std::vector< T * > GetMulti()
返回所有指定类型的对象
std::vector< AnyType >::iterator end()
T * GetN(std::vector< Components * > &vec, size_t n)
从vector<Components*>返回指定类型的第n个元素
std::vector< T * > GetComp(std::vector< Components * > &vec)
从vector<Components*>返回指定类型的所有组件
T * GetFirst(std::vector< Components * > &vec)
从vector<Components*>返回指定类型的第一个元素
Components * createComponents(std::string_view name={})