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);
105AST_UTIL_CAPI
void aDeleteObject(Object* obj);
112AST_UTIL_API SharedPtr<Object> aMakeObject(StringView name, Object* parentScope=
nullptr);
122AST_UTIL_API Object* aResolveObject(StringView value, Class* cls =
nullptr);
126T aResolveObject(StringView value)
128 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
129 static_assert(has_own_getType<ObjectType>::value,
"aResolveObject requires the type to has a AST_OBJECT macro");
130 return static_cast<T
>(aResolveObject(value, ObjectType::StaticType()));
154AST_UTIL_CAPI uint32_t
aAddObject(Object*
object);
179AST_UTIL_API std::vector<Object*>
aFindObjects(Class* cls, StringView name=StringView());
187AST_UTIL_API Object*
aFindObject(Class* cls, StringView name=StringView());
193 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
194 static_assert(has_own_getType<ObjectType>::value,
"aFindObject requires the type to has a AST_OBJECT macro");
195 return static_cast<T
>(
aFindObject(ObjectType::StaticType(), name));
221 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
222 static_assert(has_own_getType<ObjectType>::value,
"aGetAncestorScope requires the type to has a AST_OBJECT macro");
244AST_UTIL_API Object*
aFindChild(Object* parentScope, Class* cls=
nullptr, StringView name=StringView());
248T
aFindChild(Object* parentScope, StringView name=StringView())
251 using ObjectType =
typename std::decay<typename std::remove_pointer<T>::type>::type;
252 static_assert(has_own_getType<ObjectType>::value,
"aFindChild requires the type to has a AST_OBJECT macro");
253 return static_cast<T
>(
aFindChild(parentScope, ObjectType::StaticType(), name));
263AST_UTIL_API errc_t
aFindChildren(Object* parentScope, Class* cls, StringView name, std::vector<Object*>& children);
272AST_UTIL_API std::vector<Object*>
aFindChildren(Object* parentScope, Class* cls=
nullptr, StringView name=StringView());
276 bool printRefCount =
false;
277 bool printWeakRefCount =
false;
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:86
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
Object * aNewObject(StringView name, Object *parentScope)
创建对象,返回裸指针
定义 RTTIAPI.cpp:75
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 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:275