|
NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
|
反射类型注册表 更多...
#include <registry.hpp>
Public 成员函数 | |
| template<typename T> | |
| meta_type & | register_type (string_view name) |
| 注册类型 | |
| meta_type * | find_unlocked (string_view name) |
| 查找类型 | |
| meta_type * | find (string_view name) |
| 查找类型 | |
| meta_type * | find (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) |
| 将信号连接至反射槽函数 | |
|
static |
将信号连接至反射槽函数
| sig | 信号基类指针 |
| slot | 槽函数元数据 |
| receiver | 接收者对象指针 |
通过 emit_dynamic 在信号触发时将参数转发至槽函数。
被这些函数引用 dynamic_connect().
|
inlinestatic |
查找信号并连接到槽函数
| sender_obj | 发送者对象指针 |
| sender_type | 发送者类型名称 |
| signal_name | 信号名称 |
| signal_offset | 信号成员在类中的字节偏移 |
| receiver_obj | 接收者对象指针 |
| receiver_type | 接收者类型名称 |
| slot_name | 槽函数名称 |
通过类型和名称在注册表中查找对应的信号和槽, 利用信号基类 signal_base 和 meta_function 实现运行时动态连接。
在文件 registry.hpp 第 155 行定义.
引用了 connect_signal_to_slot() , 以及 instance().
|
inline |
|
inline |
|
inline |
|
static |
|
inline |
注册类型
| T | 要注册的类型 |
| name | 类型名称 |
如果类型已注册,返回现有元数据;否则创建新的元数据。 使用 type_id_for<T>() 作为主键以与 meta_any 的类型 ID 保持一致。
在文件 registry.hpp 第 58 行定义.
引用了 neforce::make_unique() , 以及 neforce::reflect::type_id_for().
|
inline |