24#include "AstUtil/SharedPtr.hpp"
25#include "AstUtil/Object.hpp"
26#include "AstUtil/StringView.hpp"
49AST_UTIL_API
const std::unordered_map<std::string, Class*>&
aGetAllClasses();
55AST_UTIL_CAPI Class*
aGetClass(StringView name);
66AST_UTIL_CAPI
void aRegisterClass(Class* cls, StringView name=StringView());
86AST_UTIL_CAPI Object* aNewObject(StringView typeName, Object* parentScope=
nullptr);
100AST_UTIL_API SharedPtr<Object>
aMakeObject(StringView typeName, Object* parentScope=
nullptr);
110AST_UTIL_API Object*
aResolveObject(StringView value, Class* cls =
nullptr);
116 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
117 static_assert(has_own_getType<ObjectType>::value,
"aResolveObject requires the type to has a AST_OBJECT macro");
118 return static_cast<T
>(
aResolveObject(value, ObjectType::StaticType()));
142AST_UTIL_CAPI uint32_t
aAddObject(Object*
object);
167AST_UTIL_API std::vector<Object*>
aFindObjects(Class* cls, StringView name=StringView());
175AST_UTIL_API Object*
aFindObject(Class* cls, StringView name=StringView());
181 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
182 static_assert(has_own_getType<ObjectType>::value,
"aFindObject requires the type to has a AST_OBJECT macro");
183 return static_cast<T
>(
aFindObject(ObjectType::StaticType(), name));
209 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
210 static_assert(has_own_getType<ObjectType>::value,
"aGetAncestorScope requires the type to has a AST_OBJECT macro");
232AST_UTIL_API Object*
aFindChild(Object* parentScope, Class* cls=
nullptr, StringView name=StringView());
236T
aFindChild(Object* parentScope, StringView name=StringView())
239 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
240 static_assert(has_own_getType<ObjectType>::value,
"aFindChild requires the type to has a AST_OBJECT macro");
241 return static_cast<T
>(
aFindChild(parentScope, ObjectType::StaticType(), name));
251AST_UTIL_API errc_t
aFindChildren(Object* parentScope, Class* cls, StringView name, std::vector<Object*>& children);
260AST_UTIL_API std::vector<Object*>
aFindChildren(Object* parentScope, Class* cls=
nullptr, StringView name=StringView());
264 bool printRefCount =
false;
265 bool printWeakRefCount =
false;
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
Object * aResolveObject(StringView value, Class *cls)
解析对象
定义 RTTIAPI.cpp:94
SharedPtr< Object > aMakeObject(StringView name, Object *parentScope)
创建对象,返回智能指针
定义 RTTIAPI.cpp:88
bool aIsVirtualClass(StringView name)
检查类是否为虚类
定义 RTTIAPI.cpp:49
Object * aFindChild(Object *parentScope, Class *cls, StringView name)
查找对象的子对象
定义 RTTIAPI.cpp:240
Object * aFindObject(Class *cls, StringView name)
查找对象
定义 RTTIAPI.cpp:206
Object * aGetParentScope(Object *obj)
获取对象的父作用域
定义 RTTIAPI.cpp:216
void aPrintObject(Object *obj, int indent, const ObjectPrintConfig &config)
打印对象信息
定义 RTTIAPI.cpp:355
errc_t aRemoveObject(Object *object)
移除对象
定义 RTTIAPI.cpp:185
uint32_t aAddObject(Object *object)
获取对象的索引/对象ID
定义 RTTIAPI.cpp:180
Class * aGetClass(StringView name)
获取类的元数据
定义 RTTIAPI.cpp:44
int aGetObjectCount()
获取对象管理器中已添加的对象数量
定义 RTTIAPI.cpp:195
Object * aGetObject(uint32_t id)
根据索引获取对象
定义 RTTIAPI.cpp:175
void aRegisterClass(Class *cls, StringView name)
注册类
定义 RTTIAPI.cpp:55
Object * aGetAncestorScope(Object *obj, Class *cls)
获取对象的祖先作用域
定义 RTTIAPI.cpp:221
const std::unordered_map< std::string, Class * > & aGetAllClasses()
获取所有已注册的类
定义 RTTIAPI.cpp:39
errc_t aSetParentScope(Object *obj, Object *parentScope)
设置对象的父作用域
定义 RTTIAPI.cpp:211
errc_t aFindChildren(Object *parentScope, Class *cls, StringView name, std::vector< Object * > &children)
查找对象的子对象
定义 RTTIAPI.cpp:292
void aDeleteObject(Object *obj)
删除对象
定义 RTTIAPI.cpp:83
void aGetAllClassNames(std::vector< std::string > &names)
获取所有已注册的类名
定义 RTTIAPI.cpp:34
Object * aGetClassDefaultObject(StringView name)
根据类名获取类的默认对象(CDO)
定义 RTTIAPI.cpp:62
void aPrintAllObjects()
打印所有对象
定义 RTTIAPI.cpp:231
std::vector< Object * > aGetAllObjects()
获取所有对象
定义 RTTIAPI.cpp:226
void aRemoveAllObjects()
移除所有对象
定义 RTTIAPI.cpp:190
void aPrintObjectTree(Object *root, int indent)
打印对象树的结构
定义 RTTIAPI.cpp:386
std::string aFindObjects(const JsonValue &arguments)
查找对象
打印对象树的配置结构体
定义 RTTIAPI.hpp:263