🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
运行时类型信息

详细描述

提供运行时类型信息功能,包括类元信息、属性元信息、对象的强弱引用计数。

class  ast::PropertyTimePoint
 
class  ast::AttributeBasic< ObjectPtrType, PropertyType >
 
class  ast::Object
 
class  ast::Class
 
class  ast::Field
 
class  ast::Property
 
class  ast::PropertyBool
 
class  ast::PropertyDouble
 
class  ast::PropertyInt
 
class  ast::PropertyObject
 
class  ast::PropertyPOD
 
class  ast::PropertyQuantity
 
class  ast::PropertyString
 
class  ast::PropertyStruct
 
struct  ast::property_trait< T >
 
struct  ast::property_trait< std::string >
 
struct  ast::property_trait< TimePoint >
 
class  ast::Struct
 
class  ast::SharedPtr< _Object >
 
class  ast::WeakPtr< _Object >
 

宏定义

#define AST_OBJECT(TYPE)
 
#define AST_PROPERT(NAME)
 
#define AST_PROPERT_NAME(CLASS, NAME)
 
#define aPropertyName(CLASS, NAME)
 
#define _AST_IMPL_OBJECT(TYPE)
 

类型定义

typedef AttributeBasic< WeakPtr< Object >, Propertyast::Attribute
 
typedef errc_t(* ast::FPropertyGet) (const void *obj, void *value)
 
typedef errc_t(* ast::FPropertySet) (void *obj, void const *value)
 

枚举

enum  { ast::INVALID_ID = -1 }
 
enum  ast::EValueType { ast::eDouble , ast::eInt , ast::eBool , ast::eString }
 

函数

errc_t ast::aFakeGet (const void *container, void *value)
 
errc_t ast::aFakeSet (void *container, const void *value)
 
Propertyast::_aNewPropertyBool (FPropertyGet getter, FPropertySet setter)
 
Propertyast::_aNewPropertyInt (FPropertyGet getter, FPropertySet setter)
 
Propertyast::_aNewPropertyDouble (FPropertyGet getter, FPropertySet setter)
 
Propertyast::_aNewPropertyString (FPropertyGet getter, FPropertySet setter)
 
Propertyast::_aNewPropertyQuantity (FPropertyGet getter, FPropertySet setter, Dimension dimension)
 
template<typename T >
A_ALWAYS_INLINE Propertyast::_aNewProperty (FPropertyGet getter, FPropertySet setter)
 
template<>
A_ALWAYS_INLINE Propertyast::_aNewProperty< bool > (FPropertyGet getter, FPropertySet setter)
 
template<>
A_ALWAYS_INLINE Propertyast::_aNewProperty< int > (FPropertyGet getter, FPropertySet setter)
 
template<>
A_ALWAYS_INLINE Propertyast::_aNewProperty< double > (FPropertyGet getter, FPropertySet setter)
 
template<>
A_ALWAYS_INLINE Propertyast::_aNewProperty< std::string > (FPropertyGet getter, FPropertySet setter)
 
template<typename T , bool T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyBoolMem ()
 
template<typename T , bool T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyBool ()
 
template<typename T , int T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyIntMem ()
 
template<typename T , int T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyInt ()
 
template<typename T , double T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyDoubleMem ()
 
template<typename T , double T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyDouble ()
 
template<typename T , double T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyQuantityMem (Dimension dimension)
 
template<typename T , double T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyQuantity (Dimension dimension)
 
template<typename T , std::string T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyStringMem ()
 
template<typename T , std::string T::* Member>
A_ALWAYS_INLINE Propertyast::aNewPropertyString ()
 
template<typename T , bool(T::*)() const Getter, void(T::*)(bool) Setter>
A_ALWAYS_INLINE Propertyast::aNewPropertyBool ()
 
template<typename T , int(T::*)() const Getter, void(T::*)(int) Setter>
A_ALWAYS_INLINE Propertyast::aNewPropertyInt ()
 
template<typename T , double(T::*)() const Getter, void(T::*)(double) Setter>
A_ALWAYS_INLINE Propertyast::aNewPropertyDouble ()
 
template<typename T , double(T::*)() const Getter, void(T::*)(double) Setter>
A_ALWAYS_INLINE Propertyast::aNewPropertyQuantity (Dimension dimension)
 
template<typename T , const std::string &(T::*)() const Getter, void(T::*)(StringView) Setter>
A_ALWAYS_INLINE Propertyast::aNewPropertyString ()
 
void ast::aGetAllClassNames (std::vector< std::string > &names)
 
Classast::aGetClass (StringView name)
 
void ast::aRegisterClass (Class *cls)
 
Objectast::aGetClassDefaultObject (StringView name)
 
Objectast::aGetClassDefaultObject (Class *cls)
 
Objectast::aNewObject (StringView name, Object *parentScope=nullptr)
 
void ast::aDeleteObject (Object *obj)
 
SharedPtr< Objectast::aMakeObject (StringView name, Object *parentScope=nullptr)
 
Objectast::aGetObject (uint32_t id)
 
AST_UTIL_CAPI uint32_t ast::aGetObjectID (Object *obj)
 
uint32_t ast::aAddObject (Object *object)
 
errc_t ast::aSetParentScope (Object *obj, Object *parentScope)
 
Objectast::aGetParentScope (Object *obj)
 
AST_UTIL_API Objectast::aFindChild (Object *parentScope, Class *cls, StringView name)
 

宏定义说明

◆ _AST_IMPL_OBJECT

#define _AST_IMPL_OBJECT ( TYPE)
值:
Class TYPE::staticType;\

◆ aPropertyName

#define aPropertyName ( CLASS,
NAME )
值:
AST_PROPERT_NAME(CLASS, NAME)

◆ AST_OBJECT

#define AST_OBJECT ( TYPE)
值:
static Class staticType;\
static inline Class* getStaticType(){return &staticType;}\
Class* getType() const override{return &staticType;} \
static void ClassInit(Class* cls);\

◆ AST_PROPERT

#define AST_PROPERT ( NAME)
值:
static constexpr const char* _prop_##NAME = #NAME;

◆ AST_PROPERT_NAME

#define AST_PROPERT_NAME ( CLASS,
NAME )
值:
CLASS::_prop_##NAME

枚举类型说明

◆ anonymous enum

anonymous enum
枚举值
INVALID_ID 

无效对象ID

◆ EValueType

枚举值
eDouble 

double类型

eInt 

int类型

eBool 

bool类型

eString 

std::string类型

函数说明

◆ _aNewProperty< bool >()

template<>
A_ALWAYS_INLINE Property * ast::_aNewProperty< bool > ( FPropertyGet getter,
FPropertySet setter )

创建一个布尔属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针
返回
Property* 属性指针

◆ _aNewProperty< double >()

template<>
A_ALWAYS_INLINE Property * ast::_aNewProperty< double > ( FPropertyGet getter,
FPropertySet setter )

创建一个双精度属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针
返回
Property* 属性指针

◆ _aNewProperty< int >()

template<>
A_ALWAYS_INLINE Property * ast::_aNewProperty< int > ( FPropertyGet getter,
FPropertySet setter )

创建一个整数属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针
返回
Property* 属性指针

◆ _aNewProperty< std::string >()

template<>
A_ALWAYS_INLINE Property * ast::_aNewProperty< std::string > ( FPropertyGet getter,
FPropertySet setter )

创建一个字符串属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针
返回
Property* 属性指针

◆ _aNewPropertyBool()

AST_UTIL_CAPI Property * ast::_aNewPropertyBool ( FPropertyGet getter,
FPropertySet setter )

创建一个布尔属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针

◆ _aNewPropertyDouble()

AST_UTIL_CAPI Property * ast::_aNewPropertyDouble ( FPropertyGet getter,
FPropertySet setter )

创建一个双精度属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针
返回
Property* 属性指针

◆ _aNewPropertyInt()

AST_UTIL_CAPI Property * ast::_aNewPropertyInt ( FPropertyGet getter,
FPropertySet setter )

创建一个整数属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针

◆ _aNewPropertyQuantity()

AST_UTIL_CAPI Property * ast::_aNewPropertyQuantity ( FPropertyGet getter,
FPropertySet setter,
Dimension dimension )

创建一个量纲属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针
dimension量纲
返回
Property* 属性指针

◆ _aNewPropertyString()

AST_UTIL_CAPI Property * ast::_aNewPropertyString ( FPropertyGet getter,
FPropertySet setter )

创建一个字符串属性

警告
本函数为内部函数,不建议直接调用。
参数
getter获取属性值的函数指针
setter设置属性值的函数指针
返回
Property* 属性指针

◆ aAddObject()

AST_UTIL_CAPI uint32_t ast::aAddObject ( Object * object)

添加对象到对象管理器

将对象添加到对象管理器中,返回对象的索引/对象ID, 如果对象已存在则返回已存在的索引/对象ID

参数
object对象指针
返回
对象的索引/对象ID

◆ aDeleteObject()

AST_UTIL_CAPI void ast::aDeleteObject ( Object * obj)

删除对象

用于释放对象裸指针对应的内存

警告
不要用于智能指针管理的对象,否则会导致未定义行为
参数
obj对象指针

◆ aFakeGet()

AST_UTIL_CAPI errc_t ast::aFakeGet ( const void * container,
void * value )

模拟获取属性值的函数

参数
container对象指针
value指向属性值的指针
返回
errc_t 错误码

◆ aFakeSet()

AST_UTIL_CAPI errc_t ast::aFakeSet ( void * container,
const void * value )

模拟设置属性值的函数

参数
container对象指针
value指向属性值的指针
返回
errc_t 错误码

◆ aFindChild()

AST_UTIL_API Object * ast::aFindChild ( Object * parentScope,
Class * cls,
StringView name )

查找对象的子对象

根据父对象、类指针和子对象名查找子对象

参数
parentScope父对象指针
cls类指针
name子对象名
返回
子对象指针

◆ aGetAllClassNames()

AST_UTIL_CAPI void ast::aGetAllClassNames ( std::vector< std::string > & names)

获取所有已注册的类名

names 输出参数,用于存储所有已注册的类名

返回

◆ aGetClass()

AST_UTIL_CAPI Class * ast::aGetClass ( StringView name)

获取类的元数据

根据类名获取类的元数据

参数
name类名
返回
类的元数据指针

◆ aGetClassDefaultObject() [1/2]

AST_UTIL_API Object * ast::aGetClassDefaultObject ( Class * cls)

根据类指针获取类的默认对象(CDO)

CDO是类的默认构造函数创建的对象,用于存储类的默认属性值等信息,参考了Unreal Engine的设计

参数
cls类指针
返回
类的默认对象指针

◆ aGetClassDefaultObject() [2/2]

AST_UTIL_API Object * ast::aGetClassDefaultObject ( StringView name)

根据类名获取类的默认对象(CDO)

CDO是类的默认构造函数创建的对象,用于存储类的默认属性值等信息,参考了Unreal Engine的设计

参数
name类名
返回
类的默认对象指针

◆ aGetObject()

AST_UTIL_CAPI Object * ast::aGetObject ( uint32_t id)

根据索引获取对象

根据对象的索引获取对象

参数
id对象索引/对象ID
返回
对象指针

◆ aGetObjectID()

AST_UTIL_CAPI uint32_t ast::aGetObjectID ( Object * obj)

获取对象的索引/对象ID

obj 对象指针

返回
对象的索引/对象ID

◆ aGetParentScope()

AST_UTIL_CAPI Object * ast::aGetParentScope ( Object * obj)

获取对象的父作用域

obj 对象指针

返回
父作用域指针

◆ aMakeObject()

AST_UTIL_API SharedPtr< Object > ast::aMakeObject ( StringView name,
Object * parentScope = nullptr )

创建对象,返回智能指针

根据类名创建对象

参数
name类名
parentScope父作用域指针
返回
对象智能指针

◆ aNewObject()

AST_UTIL_CAPI Object * ast::aNewObject ( StringView name,
Object * parentScope = nullptr )

创建对象,返回裸指针

根据类名创建对象

警告
创建的对象需要手动管理生命周期(手动释放内存)
参数
name类名
parentScope父作用域指针
返回
对象指针

◆ aNewPropertyBool() [1/2]

template<typename T , bool T::* Member>
A_ALWAYS_INLINE Property * ast::aNewPropertyBool ( )

创建一个布尔属性

本函数创建一个布尔属性,属性值通过访问对象的成员变量获取。

模板参数
T类类型
参数
member布尔属性成员指针
返回
Property* 属性指针

本函数创建一个布尔属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter布尔属性获取函数指针
返回
Property* 属性指针

◆ aNewPropertyBool() [2/2]

template<typename T , bool(T::*)() const Getter, void(T::*)(bool) Setter>
A_ALWAYS_INLINE Property * ast::aNewPropertyBool ( )

创建一个布尔属性

本函数创建一个布尔属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter布尔属性获取函数指针
Setter布尔属性设置函数指针
返回
Property* 属性指针

◆ aNewPropertyBoolMem()

template<typename T , bool T::* Member>
A_ALWAYS_INLINE Property * ast::aNewPropertyBoolMem ( )

创建一个布尔属性

本函数创建一个布尔属性,属性值通过访问对象的成员变量获取。

模板参数
T类类型
参数
member布尔属性成员指针
返回
Property* 属性指针

◆ aNewPropertyDouble() [1/2]

template<typename T , double T::* Member>
A_ALWAYS_INLINE Property * ast::aNewPropertyDouble ( )

创建一个双精度属性

本函数创建一个双精度属性,属性值通过访问对象的成员变量获取。

模板参数
T类类型
参数
member双精度属性成员指针
返回
Property* 属性指针

本函数创建一个双精度属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter双精度属性获取函数指针
返回
Property* 属性指针

◆ aNewPropertyDouble() [2/2]

template<typename T , double(T::*)() const Getter, void(T::*)(double) Setter>
A_ALWAYS_INLINE Property * ast::aNewPropertyDouble ( )

创建一个双精度属性

本函数创建一个双精度属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter双精度属性获取函数指针
Setter双精度属性设置函数指针
返回
Property* 属性指针

◆ aNewPropertyInt()

template<typename T , int(T::*)() const Getter, void(T::*)(int) Setter>
A_ALWAYS_INLINE Property * ast::aNewPropertyInt ( )

创建一个整数属性

本函数创建一个整数属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter整数属性获取函数指针
Setter整数属性设置函数指针
返回
Property* 属性指针

◆ aNewPropertyQuantity() [1/2]

template<typename T , double T::* Member>
A_ALWAYS_INLINE Property * ast::aNewPropertyQuantity ( Dimension dimension)

创建一个数量值属性

本函数创建一个数量值属性,属性值通过访问对象的成员变量获取。

模板参数
T类类型
参数
member数量值属性成员指针
返回
Property* 属性指针

本函数创建一个数量值属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter数量值属性获取函数指针
返回
Property* 属性指针

◆ aNewPropertyQuantity() [2/2]

template<typename T , double(T::*)() const Getter, void(T::*)(double) Setter>
A_ALWAYS_INLINE Property * ast::aNewPropertyQuantity ( Dimension dimension)

创建一个数量值属性

本函数创建一个数量值属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter数量值属性获取函数指针
Setter数量值属性设置函数指针
返回
Property* 属性指针

◆ aNewPropertyString() [1/2]

template<typename T , std::string T::* Member>
A_ALWAYS_INLINE Property * ast::aNewPropertyString ( )

创建一个字符串属性

本函数创建一个字符串属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter字符串属性获取函数指针
返回
Property* 属性指针

◆ aNewPropertyString() [2/2]

template<typename T , const std::string &(T::*)() const Getter, void(T::*)(StringView) Setter>
A_ALWAYS_INLINE Property * ast::aNewPropertyString ( )

创建一个字符串属性

本函数创建一个字符串属性,属性值通过调用对象的成员函数获取。

模板参数
T类类型
Getter字符串属性获取函数指针
Setter字符串属性设置函数指针
返回
Property* 属性指针

◆ aRegisterClass()

AST_UTIL_CAPI void ast::aRegisterClass ( Class * cls)

注册类

注册类的元数据,用于后续的反射操作

参数
cls类指针
返回
类的元数据指针

◆ aSetParentScope()

AST_UTIL_CAPI errc_t ast::aSetParentScope ( Object * obj,
Object * parentScope )

设置对象的父作用域

obj 对象指针

参数
parentScope父作用域指针
返回
错误码