NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::reflect::registry类 参考

反射类型注册表 更多...

#include <registry.hpp>

Public 成员函数

template<typename T>
meta_typeregister_type (string_view name)
 注册类型
meta_typefind_unlocked (string_view name)
 查找类型
meta_typefind (string_view name)
 查找类型
meta_typefind (type_id id)
 查找类型
template<typename Func>
void for_each (Func &&func)
 遍历所有注册的类型
void resolve_all_bases ()
 解析所有类型的基类关系

静态 Public 成员函数

static registry & instance ()
 获取单例实例
static bool dynamic_connect (void *sender_obj, string_view sender_type, string_view signal_name, size_t signal_offset, void *receiver_obj, string_view receiver_type, string_view slot_name)
 查找信号并连接到槽函数
static bool connect_signal_to_slot (signal_base *sig, const meta_function *slot, void *receiver)
 将信号连接至反射槽函数

详细描述

反射类型注册表

全局唯一的类型注册表,存储所有已注册的反射类型元数据。 提供类型查找、遍历和基类解析功能。

在文件 registry.hpp33 行定义.

成员函数说明

◆ connect_signal_to_slot()

bool neforce::reflect::registry::connect_signal_to_slot ( signal_base * sig,
const meta_function * slot,
void * receiver )
static

将信号连接至反射槽函数

参数
sig信号基类指针
slot槽函数元数据
receiver接收者对象指针
返回
总是返回 true(连接通过 signal::connect 维持)

通过 emit_dynamic 在信号触发时将参数转发至槽函数。

被这些函数引用 dynamic_connect().

◆ dynamic_connect()

bool neforce::reflect::registry::dynamic_connect ( void * sender_obj,
string_view sender_type,
string_view signal_name,
size_t signal_offset,
void * receiver_obj,
string_view receiver_type,
string_view slot_name )
inlinestatic

查找信号并连接到槽函数

参数
sender_obj发送者对象指针
sender_type发送者类型名称
signal_name信号名称
signal_offset信号成员在类中的字节偏移
receiver_obj接收者对象指针
receiver_type接收者类型名称
slot_name槽函数名称
返回
连接成功返回 true

通过类型和名称在注册表中查找对应的信号和槽, 利用信号基类 signal_basemeta_function 实现运行时动态连接。

注解
signal_offset 可通过 type_builder::signal_with_offset() 设置

在文件 registry.hpp155 行定义.

引用了 connect_signal_to_slot() , 以及 instance().

◆ find() [1/2]

meta_type * neforce::reflect::registry::find ( string_view name)
inline

查找类型

参数
name类型名称
返回
类型元数据指针,不存在返回nullptr

在文件 registry.hpp95 行定义.

引用了 find_unlocked().

◆ find() [2/2]

meta_type * neforce::reflect::registry::find ( type_id id)
inline

查找类型

参数
id类型ID
返回
类型元数据指针,不存在返回nullptr

在文件 registry.hpp105 行定义.

◆ find_unlocked()

meta_type * neforce::reflect::registry::find_unlocked ( string_view name)
inline

查找类型

参数
name类型名称
返回
类型元数据指针,不存在返回nullptr
注解
调用前需已持有互斥锁

在文件 registry.hpp80 行定义.

被这些函数引用 find().

◆ for_each()

template<typename Func>
void neforce::reflect::registry::for_each ( Func && func)
inline

遍历所有注册的类型

模板参数
Func回调函数类型
参数
func回调函数,接收meta_type&参数

对每个注册的类型调用回调函数。

在文件 registry.hpp119 行定义.

◆ instance()

◆ register_type()

template<typename T>
meta_type & neforce::reflect::registry::register_type ( string_view name)
inline

注册类型

模板参数
T要注册的类型
参数
name类型名称
返回
类型元数据引用

如果类型已注册,返回现有元数据;否则创建新的元数据。 使用 type_id_for<T>() 作为主键以与 meta_any 的类型 ID 保持一致。

在文件 registry.hpp58 行定义.

引用了 neforce::make_unique() , 以及 neforce::reflect::type_id_for().

◆ resolve_all_bases()

void neforce::reflect::registry::resolve_all_bases ( )
inline

解析所有类型的基类关系

遍历所有类型,解析其待解析的基类名称。 应在所有类型注册完成后调用。

在文件 registry.hpp132 行定义.


该类的文档由以下文件生成: