|
🛰️航天仿真算法库 SpaceAST 0.0.1
|
提供运行时类型信息功能,包括类元信息、属性元信息、对象的强弱引用计数。
类 | |
| class | ast::PropertyTimePoint |
| class | ast::ClonePtr< T > |
| class | ast::WeakPtr< _Object > |
| class | ast::AttributeBasic< ObjectType, PropertyType > |
| class | ast::Object |
| struct | ast::has_own_getType< T > |
| class | ast::ObjectCalculation |
| 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 |
| struct | ast::ObjectPrintConfig |
| class | ast::ScopedPtr< T > |
| class | ast::SharedPtr< _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< Object, Property > | ast::Attribute |
| using | ast::FPropertyGet = errc_t (*)(const void* obj, void* value) |
| using | ast::FPropertySet = errc_t (*)(void* obj, const void* value) |
| using | ast::FPropertyGetItemByString = errc_t (*)(const void* obj, StringView key, Object*& value) |
| using | ast::FPropertyGetItemByIndex = errc_t (*)(const void* obj, size_t key, Object*& value) |
枚举 | |
| enum | { ast::INVALID_ID = -1 } |
| enum class | ast::EObjectFlags : uint32_t { ast::EObjectFlags::eNone = 0 , ast::EObjectFlags::eReadOnly = 0x01 , ast::EObjectFlags::eInActive = 0x02 , ast::EObjectFlags::eComponent = 0x04 , ast::EObjectFlags::eEntity = 0x08 } |
| enum class | ast::EValueType { ast::EValueType::eBool , ast::EValueType::eInt , ast::EValueType::eDouble , ast::EValueType::eQuantity , ast::EValueType::eString , ast::EValueType::eObject , ast::EValueType::eTimePoint , ast::EValueType::eInvalid } |
函数 | |
| template<typename T , typename U > | |
| A_ALWAYS_INLINE T | ast::aobject_cast (U *obj) |
| template<typename T > | |
| SharedPtr< T > | ast::aMakeShared () |
| template<typename T > | |
| SharedPtr< T > | ast::aMakeShared (Object *parentScope) |
| template<typename T > | |
| SharedPtr< T > | ast::aMakeShared (StringView objectName) |
| template<typename T > | |
| SharedPtr< T > | ast::aMakeShared (Object *parentScope, StringView typeName) |
| template<typename T > | |
| T * | ast::aNewObject (Object *parentScope=nullptr) |
| template<typename T > | |
| T * | ast::aNewObject (StringView objectName) |
| template<typename T > | |
| T * | ast::aNewObject (Object *parentScope, StringView objectName) |
| errc_t | ast::aFakeGet (const void *container, void *value) |
| errc_t | ast::aFakeSet (void *container, const void *value) |
| template<> | |
| std::string | ast::Property::getValue< std::string > (const void *container) |
| Property * | ast::_aNewPropertyBool (FPropertyGet getter, FPropertySet setter) |
| Property * | ast::_aNewPropertyInt (FPropertyGet getter, FPropertySet setter) |
| Property * | ast::_aNewPropertyDouble (FPropertyGet getter, FPropertySet setter) |
| Property * | ast::_aNewPropertyString (FPropertyGet getter, FPropertySet setter) |
| Property * | ast::_aNewPropertyQuantity (FPropertyGet getter, FPropertySet setter, Dimension dimension) |
| Property * | ast::_aNewPropertyObject (FPropertyGet getter, FPropertySet setter, Class *cls) |
| template<typename T > | |
| Property * | ast::_aNewProperty (FPropertyGet getter, FPropertySet setter) |
| template<> | |
| Property * | ast::_aNewProperty< bool > (FPropertyGet getter, FPropertySet setter) |
| template<> | |
| Property * | ast::_aNewProperty< int > (FPropertyGet getter, FPropertySet setter) |
| template<> | |
| Property * | ast::_aNewProperty< double > (FPropertyGet getter, FPropertySet setter) |
| template<> | |
| Property * | ast::_aNewProperty< std::string > (FPropertyGet getter, FPropertySet setter) |
| template<typename T , typename MemberType , MemberType T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyMem () |
| template<typename T , typename Ret , Ret(T::*)() const Getter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyReadOnly () |
| template<typename T , typename Ret , Ret(T::*)() const Getter, void(T::*)(Ret) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewProperty () |
| template<typename T , typename Ret , Ret(T::*)() const Getter, errc_t(T::*)(Ret) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyWithError () |
| template<typename T , double T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyQuantity (Dimension dim) |
| template<typename T , double(T::*)() const Getter, void(T::*)(double) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyQuantity (Dimension dim) |
| template<typename T , double(T::*)() const Getter, errc_t(T::*)(double) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyQuantityWithError (Dimension dim) |
| template<typename T , typename ObjectType , ObjectType *T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyObject () |
| template<typename T , typename ObjectType , ObjectType *(T::*)() const Getter, void(T::*)(ObjectType *) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyObject () |
| template<typename T , typename ObjectType , ObjectType *(T::*)() const Getter, errc_t(T::*)(ObjectType *) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyObjectWithError () |
| template<typename T , bool T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyBoolMem () |
| template<typename T , int T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyIntMem () |
| template<typename T , double T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyDoubleMem () |
| template<typename T , std::string T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyStringMem () |
| template<typename T , bool T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyBool () |
| template<typename T , int T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyInt () |
| template<typename T , double T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyDouble () |
| template<typename T , std::string T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyString () |
| template<typename T , double T::* Member> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyQuantityMem (Dimension dim) |
| template<typename T , bool(T::*)() const Getter, void(T::*)(bool) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyBool () |
| template<typename T , int(T::*)() const Getter, void(T::*)(int) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyInt () |
| template<typename T , double(T::*)() const Getter, void(T::*)(double) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyDouble () |
| template<typename T , const std::string &(T::*)() const Getter, void(T::*)(StringView) Setter> | |
| A_ALWAYS_INLINE Property * | ast::aNewPropertyString () |
| void | ast::aGetAllClassNames (std::vector< std::string > &names) |
| const std::unordered_map< std::string, Class * > & | ast::aGetAllClasses () |
| Class * | ast::aGetClass (StringView name) |
| bool | ast::aIsVirtualClass (StringView name) |
| void | ast::aRegisterClass (Class *cls, StringView name=StringView()) |
| Object * | ast::aGetClassDefaultObject (StringView name) |
| Object * | ast::aGetClassDefaultObject (Class *cls) |
| Object * | ast::aNewObject (StringView typeName, Object *parentScope=nullptr) |
| void | ast::aDeleteObject (Object *obj) |
| SharedPtr< Object > | ast::aMakeObject (StringView typeName, Object *parentScope=nullptr) |
| Object * | ast::aResolveObject (StringView value, Class *cls=nullptr) |
| template<typename T > | |
| T | ast::aResolveObject (StringView value) |
| Object * | ast::aGetObject (uint32_t id) |
| uint32_t | ast::aAddObject (Object *object) |
| errc_t | ast::aRemoveObject (Object *object) |
| void | ast::aRemoveAllObjects () |
| int | ast::aGetObjectCount () |
| std::vector< Object * > | ast::aFindObjects (Class *cls, StringView name=StringView()) |
| Object * | ast::aFindObject (Class *cls, StringView name=StringView()) |
| template<typename T > | |
| T | ast::aFindObject (StringView name=StringView()) |
| errc_t | ast::aSetParentScope (Object *obj, Object *parentScope) |
| Object * | ast::aGetParentScope (Object *obj) |
| Object * | ast::aGetAncestorScope (Object *obj, Class *cls) |
| template<typename T > | |
| T | ast::aGetAncestorScope (Object *obj) |
| std::vector< Object * > | ast::aGetAllObjects () |
| void | ast::aPrintAllObjects () |
| Object * | ast::aFindChild (Object *parentScope, Class *cls=nullptr, StringView name=StringView()) |
| template<typename T > | |
| T | ast::aFindChild (Object *parentScope, StringView name=StringView()) |
| errc_t | ast::aFindChildren (Object *parentScope, Class *cls, StringView name, std::vector< Object * > &children) |
| std::vector< Object * > | ast::aFindChildren (Object *parentScope, Class *cls=nullptr, StringView name=StringView()) |
| void | ast::aPrintObject (Object *obj, int indent=0, const ObjectPrintConfig &config=ObjectPrintConfig()) |
| void | ast::aPrintObjectTree (Object *root, int indent=0) |
| void | ast::aPrintObjectTree (Object *root, int indent, const ObjectPrintConfig &config) |
| template<typename T > | |
| bool | ast::Object::isOfType () const |
| template<typename T > | |
| T | ast::Object::getParent () const |
| template<> | |
| double | ast::Property::getValue (const void *container) |
| #define _AST_IMPL_OBJECT | ( | TYPE | ) |
| #define aPropertyName | ( | CLASS, | |
| NAME ) |
| #define AST_OBJECT | ( | TYPE | ) |
| #define AST_PROPERT | ( | NAME | ) |
| #define AST_PROPERT_NAME | ( | CLASS, | |
| NAME ) |
|
strong |
|
strong |
| AST_UTIL_CAPI uint32_t ast::aAddObject | ( | Object * | object | ) |
获取对象的索引/对象ID
obj 对象指针
添加对象到对象管理器
将对象添加到对象管理器中,返回对象的索引/对象ID, 如果对象已存在则返回已存在的索引/对象ID
| object | 对象指针 |
| AST_UTIL_CAPI void ast::aDeleteObject | ( | Object * | obj | ) |
删除对象
用于释放对象裸指针对应的内存
| obj | 对象指针 |
| AST_UTIL_API errc_t ast::aFakeGet | ( | const void * | container, |
| void * | value ) |
模拟获取属性值的函数
| container | 对象指针 |
| value | 指向属性值的指针 |
| AST_UTIL_API errc_t ast::aFakeSet | ( | void * | container, |
| const void * | value ) |
模拟设置属性值的函数
| container | 对象指针 |
| value | 指向属性值的指针 |
| AST_UTIL_API Object * ast::aFindChild | ( | Object * | parentScope, |
| Class * | cls = nullptr, | ||
| StringView | name = StringView() ) |
查找对象的子对象
根据父对象、类指针和子对象名查找子对象
| parentScope | 父对象指针 |
| cls | 类指针,如果为空则匹配所有类型 |
| name | 子对象名,如果为空则匹配所有名称 |
| AST_UTIL_API errc_t ast::aFindChildren | ( | Object * | parentScope, |
| Class * | cls, | ||
| StringView | name, | ||
| std::vector< Object * > & | children ) |
查找对象的子对象
根据父对象、类指针和子对象名查找子对象
| parentScope | 父对象指针 |
| cls | 类指针,如果为空则匹配所有类型 |
| name | 子对象名,如果为空则匹配所有名称 |
| children | 输出参数,用于存储子对象指针 |
| AST_UTIL_API std::vector< Object * > ast::aFindChildren | ( | Object * | parentScope, |
| Class * | cls = nullptr, | ||
| StringView | name = StringView() ) |
查找对象的子对象
根据父对象、类指针和子对象名查找子对象
| parentScope | 父对象指针 |
| cls | 类指针,如果为空则匹配所有类型 |
| name | 子对象名,如果为空则匹配所有名称 |
| AST_UTIL_API Object * ast::aFindObject | ( | Class * | cls, |
| StringView | name = StringView() ) |
查找对象
根据类指针和对象名查找对象
| cls | 类指针,如果为空则匹配所有类型 |
| name | 对象名,如果为空则匹配所有名称 |
| AST_UTIL_API std::vector< Object * > ast::aFindObjects | ( | Class * | cls, |
| StringView | name = StringView() ) |
查找对象
根据类指针和对象名查找对象
| cls | 类指针,如果为空则匹配所有类型 |
| name | 对象名,如果为空则匹配所有名称 |
| AST_UTIL_API const std::unordered_map< std::string, Class * > & ast::aGetAllClasses | ( | ) |
获取所有已注册的类
返回所有已注册的类的指针
| AST_UTIL_CAPI void ast::aGetAllClassNames | ( | std::vector< std::string > & | names | ) |
获取所有已注册的类名
names 输出参数,用于存储所有已注册的类名
| AST_UTIL_API std::vector< Object * > ast::aGetAllObjects | ( | ) |
获取所有对象
获取所有已添加的对象
获取对象的祖先作用域
obj 对象指针
| cls | 类指针,如果为空则匹配所有类型 |
| AST_UTIL_CAPI Class * ast::aGetClass | ( | StringView | name | ) |
获取类的元数据
根据类名获取类的元数据
| name | 类名 |
根据类指针获取类的默认对象(CDO)
CDO是类的默认构造函数创建的对象,用于存储类的默认属性值等信息,参考了Unreal Engine的设计
| cls | 类指针 |
| AST_UTIL_API Object * ast::aGetClassDefaultObject | ( | StringView | name | ) |
根据类名获取类的默认对象(CDO)
CDO是类的默认构造函数创建的对象,用于存储类的默认属性值等信息,参考了Unreal Engine的设计
| name | 类名 |
| AST_UTIL_CAPI Object * ast::aGetObject | ( | uint32_t | id | ) |
根据索引获取对象
根据对象的索引获取对象
| id | 对象索引/对象ID |
| AST_UTIL_CAPI int ast::aGetObjectCount | ( | ) |
获取对象管理器中已添加的对象数量
获取对象管理器中已添加的对象数量
| AST_UTIL_CAPI bool ast::aIsVirtualClass | ( | StringView | name | ) |
检查类是否为虚类
| cls | 类指针 |
| AST_UTIL_API SharedPtr< Object > ast::aMakeObject | ( | StringView | typeName, |
| Object * | parentScope = nullptr ) |
创建对象,返回智能指针
根据类名创建对象
| typeName | 类名 |
| parentScope | 父作用域指针 |
| AST_UTIL_CAPI Object * ast::aNewObject | ( | StringView | typeName, |
| Object * | parentScope = nullptr ) |
创建对象,返回裸指针
根据类名创建对象
| typeName | 类名 |
| parentScope | 父作用域指针 |
| AST_UTIL_API void ast::aPrintAllObjects | ( | ) |
打印所有对象
打印所有已添加的对象,包括对象名称、类型等信息
| AST_UTIL_API void ast::aPrintObject | ( | Object * | obj, |
| int | indent = 0, | ||
| const ObjectPrintConfig & | config = ObjectPrintConfig() ) |
打印对象信息
打印对象的名称、类型、引用计数等信息
| obj | 对象指针 |
| indent | 缩进级别,默认为0 |
| config | 配置结构体,默认为数 |
| AST_UTIL_API void ast::aPrintObjectTree | ( | Object * | root, |
| int | indent = 0 ) |
打印对象树的结构
递归打印对象树的结构,包括对象名称、类型等信息
| root | 根对象指针 |
| indent | 缩进级别,默认为0 |
| config | 配置结构体,默认为不打印引用计数 |
| AST_UTIL_CAPI void ast::aRegisterClass | ( | Class * | cls, |
| StringView | name = StringView() ) |
注册类
注册类的元数据,用于后续的反射操作
| cls | 类指针 |
| AST_UTIL_CAPI void ast::aRemoveAllObjects | ( | ) |
移除所有对象
从对象管理器中移除所有对象,包括子对象
| AST_UTIL_CAPI errc_t ast::aRemoveObject | ( | Object * | object | ) |
移除对象
从对象管理器中移除对象,包括子对象
| object | 对象指针 |
| AST_UTIL_API Object * ast::aResolveObject | ( | StringView | value, |
| Class * | cls = nullptr ) |
解析对象
根据对象路径/名称/表达式解析对象
| value | 对象路径/名称/表达式 |
| cls | 对象类型,默认 nullptr 表示不指定类型 |
设置对象的父作用域
obj 对象指针
| parentScope | 父作用域指针 |
| bool ast::Object::isOfType | ( | ) | const |
判断对象是否为指定类型的实例
| T | 类型参数 |