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

属性反射元数据类 更多...

#include <property.hpp>

Public 类型

using getter = function<meta_any(const void*)>
 属性读取器类型
using setter = function<void(void*, const meta_any&)>
 属性写入器类型

Public 成员函数

 meta_property (string_view name, reflect::type_id type_id, getter getter, setter setter, const uint16_t attrs=PROP_NONE)
 构造函数
string_view name () const noexcept
 获取属性名称
reflect::type_id type_id () const noexcept
 获取属性类型ID
uint16_t attributes () const noexcept
 获取属性注解
void set_attributes (const uint16_t attrs) noexcept
 设置属性注解
bool is_transient () const noexcept
 是否为暂态属性(不参与序列化)
bool is_required () const noexcept
 是否为必填属性(反序列化时必须存在)
bool is_readonly () const noexcept
 是否为只读属性
bool is_optional () const noexcept
 是否为可选属性
bool is_versioned () const noexcept
 是否启用版本追踪
bool is_primary_key () const noexcept
 是否为主键列
bool is_auto_increment () const noexcept
 是否为自增列
bool is_unique () const noexcept
 是否有唯一约束
bool is_index () const noexcept
 是否有索引
bool is_foreign_key () const noexcept
 是否为外键列
void set_notify_signal (string_view signal_name)
 设置变更通知信号名称
string_view notify_signal () const noexcept
 获取变更通知信号名称
bool has_notify_signal () const noexcept
 是否有变更通知信号
uint32_t version () const noexcept
 获取版本号
void set_version (const uint32_t ver) noexcept
 设置版本号
meta_any get (const void *obj) const
 获取属性值
bool set (void *obj, const meta_any &value) const
 设置属性值
template<typename T, enable_if_t<!is_same_v< meta_any, decay_t< T > >, int > = 0>
bool set (void *obj, T &&value) const
 设置属性值(直接值版本)

详细描述

属性反射元数据类

描述一个成员变量的元信息,支持通过反射读写属性值。

在文件 property.hpp62 行定义.

构造及析构函数说明

◆ meta_property()

neforce::reflect::meta_property::meta_property ( string_view name,
reflect::type_id type_id,
getter getter,
setter setter,
const uint16_t attrs = PROP_NONE )
inline

构造函数

参数
name属性名称
type_id属性类型ID
getter读取器
setter写入器
attrs属性注解

在文件 property.hpp85 行定义.

引用了 neforce::move(), name(), neforce::reflect::PROP_NONE , 以及 type_id().

成员函数说明

◆ attributes()

uint16_t neforce::reflect::meta_property::attributes ( ) const
inlinenodiscardnoexcept

获取属性注解

返回
注解标志组合

在文件 property.hpp109 行定义.

◆ get()

meta_any neforce::reflect::meta_property::get ( const void * obj) const
inlinenodiscard

获取属性值

参数
obj对象指针
返回
属性值(包装为any)

在文件 property.hpp199 行定义.

◆ name()

string_view neforce::reflect::meta_property::name ( ) const
inlinenodiscardnoexcept

获取属性名称

返回
名称视图

在文件 property.hpp97 行定义.

被这些函数引用 neforce::repository< T, Connect >::find_by_id() , 以及 meta_property().

◆ set() [1/2]

bool neforce::reflect::meta_property::set ( void * obj,
const meta_any & value ) const
inline

设置属性值

参数
obj对象指针
value要设置的值
返回
设置成功返回true

在文件 property.hpp212 行定义.

被这些函数引用 set().

◆ set() [2/2]

template<typename T, enable_if_t<!is_same_v< meta_any, decay_t< T > >, int > = 0>
bool neforce::reflect::meta_property::set ( void * obj,
T && value ) const
inline

设置属性值(直接值版本)

模板参数
T值类型
参数
obj对象指针
value要设置的值
返回
设置成功返回true

在文件 property.hpp232 行定义.

引用了 neforce::forward() , 以及 set().

◆ set_attributes()

void neforce::reflect::meta_property::set_attributes ( const uint16_t attrs)
inlinenoexcept

设置属性注解

参数
attrs注解标志组合

在文件 property.hpp115 行定义.

◆ set_notify_signal()

void neforce::reflect::meta_property::set_notify_signal ( string_view signal_name)
inline

设置变更通知信号名称

参数
signal_name信号名称

在文件 property.hpp171 行定义.

◆ set_version()

void neforce::reflect::meta_property::set_version ( const uint32_t ver)
inlinenoexcept

设置版本号

参数
ver版本号

在文件 property.hpp192 行定义.

◆ type_id()

reflect::type_id neforce::reflect::meta_property::type_id ( ) const
inlinenodiscardnoexcept

获取属性类型ID

返回
类型ID

在文件 property.hpp103 行定义.

被这些函数引用 meta_property().


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