|
NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
|
运行时类型反射系统 更多...
类 | |
| struct | neforce::reflect::type_name< T > |
| 类型名称获取器 更多... | |
| class | neforce::reflect::meta_any |
| 类型擦除容器 更多... | |
| struct | neforce::reflect::enum_entry |
| 枚举条目 更多... | |
| class | neforce::reflect::meta_enum |
| 枚举反射元数据类 更多... | |
| class | neforce::reflect::meta_function |
| 函数反射元数据类 更多... | |
| class | neforce::reflect::meta_property |
| 属性反射元数据类 更多... | |
| class | neforce::reflect::type_builder< T > |
| 类型反射构建器 更多... | |
| class | neforce::reflect::registry |
| 反射类型注册表 更多... | |
| class | neforce::reflect::meta_type |
| 类型反射元数据类 更多... | |
宏定义 | |
| #define | NEFORCE_REFLECT_REGISTER(Class) |
| 注册类型(无基类) | |
| #define | NEFORCE_REFLECT_REGISTER_DERIVED(Class, Base) |
| 注册类型(带基类) | |
| #define | NEFORCE_REFLECT_RESOLVE_BASES() |
| 统一解析所有待解析的基类引用 | |
| #define | NEFORCE_REFLECT_OBJ(Class) |
| 标记类需要反射注册 | |
| #define | NEFORCE_REFLECT_PROP(type, name) |
| 标记成员属性 | |
| #define | NEFORCE_REFLECT_PROP_ATTR(type, name, attrs) |
| 标记带注解的成员属性 | |
| #define | NEFORCE_REFLECT_FUNC(ret, name, ...) |
| 标记成员函数 | |
| #define | NEFORCE_REFLECT_SIGNAL(sig_type, name, ...) |
| 标记信号成员 | |
| #define | NEFORCE_REFLECT_ENUM(Enum, Underlying) |
| 标记枚举类型需要反射注册 | |
| #define | NEFORCE_REFLECT_ENUM_VAL(Enum, Name) |
| 标记枚举值条目 | |
| #define | NEFORCE_DB_TABLE(TableName) |
| 指定数据库表名 | |
类型定义 | |
| using | neforce::reflect::type_id = size_t |
| 类型标识符 | |
枚举 | |
| enum | neforce::reflect::property_attr : uint16_t { neforce::reflect::PROP_NONE = 0 , neforce::reflect::PROP_TRANSIENT = 1 << 0 , neforce::reflect::PROP_REQUIRED = 1 << 1 , neforce::reflect::PROP_READ_ONLY = 1 << 2 , neforce::reflect::PROP_OPTIONAL = 1 << 3 , neforce::reflect::PROP_VERSIONED = 1 << 4 , neforce::reflect::PROP_PRIMARY_KEY = 1 << 5 , neforce::reflect::PROP_AUTO_INC = 1 << 6 , neforce::reflect::PROP_UNIQUE = 1 << 7 , neforce::reflect::PROP_INDEX = 1 << 8 , neforce::reflect::PROP_FOREIGN_KEY = 1 << 9 } |
| 属性注解标志 更多... | |
| enum class | neforce::reflect::container_kind : uint8_t { container_kind::none , container_kind::sequential , container_kind::associative } |
| 容器类型标识 更多... | |
函数 | |
| template<typename T> | |
| constexpr type_id | neforce::reflect::type_id_for () noexcept |
| 计算类型 T 的运行时期类型标识 | |
| void | neforce::reflect::swap (meta_any &lhs, meta_any &rhs) noexcept |
| 交换两个 meta_any | |
| constexpr bool | neforce::reflect::prop_has_attr (const uint16_t attrs, const property_attr flag) noexcept |
| 检查属性注解是否包含指定标志 | |
| template<typename T, enable_if_t< is_class_v< T >, int > = 0> | |
| type_builder< T > | neforce::reflect::reflect (string_view name) |
| 创建类型反射构建器 | |
变量 | |
| template<typename T> | |
| constexpr string_view | neforce::reflect::type_name_v = type_name<T>::value |
| type_name 的便捷访问变量模板 | |
运行时类型反射系统
| #define NEFORCE_DB_TABLE | ( | TableName | ) |
指定数据库表名
| TableName | 数据库表名字符串字面量 |
当目标表名与类名不一致时,在类体内放置此宏指定表名映射。 扫描器会生成 table_name() 调用将表名写入 meta_type。
在文件 reflect_macros.hpp 第 95 行定义.
| #define NEFORCE_REFLECT_ENUM | ( | Enum, | |
| Underlying ) |
标记枚举类型需要反射注册
| Enum | 枚举类型名 |
| Underlying | 底层整数类型 |
此标记宏用于让扫描器识别枚举类型并生成反射注册代码。 功能版本在 reflect.hpp 中定义。
在文件 reflect_macros.hpp 第 77 行定义.
| #define NEFORCE_REFLECT_ENUM_VAL | ( | Enum, | |
| Name ) |
| #define NEFORCE_REFLECT_FUNC | ( | ret, | |
| name, | |||
| ... ) |
| #define NEFORCE_REFLECT_OBJ | ( | Class | ) |
| #define NEFORCE_REFLECT_PROP | ( | type, | |
| name ) |
标记成员属性
| type | 属性类型 |
| name | 属性名称 |
在类体内放置此宏标记需要反射的成员变量。 扫描器会检查类定义中对应的成员声明。
在文件 reflect_macros.hpp 第 36 行定义.
| #define NEFORCE_REFLECT_PROP_ATTR | ( | type, | |
| name, | |||
| attrs ) |
标记带注解的成员属性
| type | 属性类型 |
| name | 属性名称 |
| attrs | 属性注解(PROP_TRANSIENT | PROP_OPTIONAL 等) |
在文件 reflect_macros.hpp 第 45 行定义.
| #define NEFORCE_REFLECT_REGISTER | ( | Class | ) |
注册类型(无基类)
| Class | 类名 |
在文件 reflect.hpp 第 346 行定义.
| #define NEFORCE_REFLECT_REGISTER_DERIVED | ( | Class, | |
| Base ) |
注册类型(带基类)
| Class | 类名 |
| Base | 基类名 |
在文件 reflect.hpp 第 353 行定义.
| #define NEFORCE_REFLECT_RESOLVE_BASES | ( | ) |
统一解析所有待解析的基类引用
应在 main() 函数开始处调用,或在所有静态注册完成后调用。
在文件 reflect.hpp 第 361 行定义.
| #define NEFORCE_REFLECT_SIGNAL | ( | sig_type, | |
| name, | |||
| ... ) |
标记信号成员
| sig_type | 信号类型(如 neforce::signal<int>) |
| name | 信号成员名称 |
| ... | 信号参数类型列表(可选) |
在类体内放置此宏标记信号成员变量。 扫描器会识别并生成信号注册代码。
在文件 reflect_macros.hpp 第 66 行定义.
|
strong |
属性注解标志
用于控制属性在序列化/反序列化中的行为。
在文件 property.hpp 第 31 行定义.
|
nodiscardconstexprnoexcept |
检查属性注解是否包含指定标志
| attrs | 属性注解组合 |
| flag | 要检查的标志 |
在文件 property.hpp 第 52 行定义.
引用了 prop_has_attr().
被这些函数引用 neforce::reflect::meta_property::is_auto_increment(), neforce::reflect::meta_property::is_foreign_key(), neforce::reflect::meta_property::is_index(), neforce::reflect::meta_property::is_optional(), neforce::reflect::meta_property::is_primary_key(), neforce::reflect::meta_property::is_readonly(), neforce::reflect::meta_property::is_required(), neforce::reflect::meta_property::is_transient(), neforce::reflect::meta_property::is_unique(), neforce::reflect::meta_property::is_versioned() , 以及 prop_has_attr().
| type_builder< T > neforce::reflect::reflect | ( | string_view | name | ) |
创建类型反射构建器
| T | 要注册的类型 |
| name | 类型名称 |
在文件 reflect.hpp 第 337 行定义.
引用了 reflect().
被这些函数引用 reflect().