1#ifndef NEFORCE_CORE_REFLECT_REGISTRY_HPP__
2#define NEFORCE_CORE_REFLECT_REGISTRY_HPP__
14NEFORCE_BEGIN_NAMESPACE__
15NEFORCE_BEGIN_REFLECT__
60 auto it = types_.find(
id);
61 if (it != types_.end()) {
66 return *new_it->second;
77 auto it = types_.find(
name.to_hash());
78 return it != types_.end() ? it->second.get() :
nullptr;
98 auto it = types_.find(
id);
99 return it != types_.end() ? it->second.get() :
nullptr;
109 template <
typename Func>
112 for (
auto& type: types_) {
125 for (
auto& type: types_) {
126 type.second->resolve_bases_unlocked(
this);
136 for (
auto& base_name: pending_base_names_) {
138 auto* base = registry->
find(base_name.view());
140 base_types_.push_back(base);
144 pending_base_names_.clear();
148 for (
auto& base_name: pending_base_names_) {
152 base_types_.push_back(base);
156 pending_base_names_.clear();
162NEFORCE_END_NAMESPACE__
void for_each(Func &&func)
遍历所有注册的类型
meta_type * find(string_view name)
查找类型
meta_type * find_unlocked(string_view name)
查找类型
meta_type & register_type(string_view name)
注册类型
meta_type * find(type_id id)
查找类型
void resolve_all_bases()
解析所有类型的基类关系
static registry & instance()
获取单例实例
basic_string_view< char > string_view
字符字符串视图
NEFORCE_ALWAYS_INLINE_INLINE bool name(char *buffer, size_t size)
获取当前线程名称
NEFORCE_CONSTEXPR20 unique_ptr< T > make_unique(Args &&... args)
创建unique_ptr