🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ast::ObjectManager类 参考

#include <ObjectManager.hpp>

Public 成员函数

ObjectgetObject (uint32_t index)
 
uint32_t addObject (Object *object)
 
errc_t removeObject (Object *object)
 
void removeAllObjects ()
 
errc_t setParentScope (Object *obj, Object *parentScope)
 
ObjectgetParentScope (Object *obj)
 
ObjectgetAncestorScope (Object *obj, Class *cls)
 
size_t getNodeCount () const
 
uint32_t getMaxObjectCount () const
 
errc_t setMaxObjectCount (uint32_t maxCount)
 
uint32_t getObjectCount () const
 
std::vector< Object * > findObjects (Class *cls, StringView name=StringView())
 
ObjectfindObject (Class *cls, StringView name=StringView())
 
ObjectNodegetObjectNode (Object *obj)
 
std::vector< Object * > getAllObjects ()
 

静态 Public 成员函数

static ObjectManagerCurrentInstance ()
 

Protected 成员函数

errc_t removeNode (uint32_t index)
 
void advanceIndex ()
 

Protected 属性

std::vector< ObjectNode * > objects_
 
uint32_t nextIndex_ {0}
 
uint32_t maxObjectCount_ {kDefaultMaxObjectCount}
 

静态 Protected 属性

static constexpr uint32_t kDefaultMaxObjectCount = static_cast<uint32_t>(-1) - 1
 

友元

class Object
 

详细描述

对象管理器

成员函数说明

◆ addObject()

uint32_t ast::ObjectManager::addObject ( Object * object)

添加对象到对象管理器

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

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

◆ findObject()

Object * ast::ObjectManager::findObject ( Class * cls,
StringView name = StringView() )

查找对象

根据类指针和对象名查找对象

参数
cls类指针,如果为空则匹配所有类型
name对象名,如果为空则匹配所有名称
返回
对象指针

◆ findObjects()

std::vector< Object * > ast::ObjectManager::findObjects ( Class * cls,
StringView name = StringView() )

查找对象

根据类指针和对象名查找对象

参数
cls类指针,如果为空则匹配所有类型
name对象名,如果为空则匹配所有名称
返回
对象指针向量

◆ getAllObjects()

std::vector< Object * > ast::ObjectManager::getAllObjects ( )

获取所有对象

返回
所有对象指针向量

◆ getAncestorScope()

Object * ast::ObjectManager::getAncestorScope ( Object * obj,
Class * cls )

获取对象的祖先作用域

obj 对象指针

参数
cls类指针,如果为空则匹配所有类型
返回
祖先作用域指针

◆ getMaxObjectCount()

uint32_t ast::ObjectManager::getMaxObjectCount ( ) const
inline

获取可以管理的最大对象数量

返回
最大对象数量

◆ getNodeCount()

size_t ast::ObjectManager::getNodeCount ( ) const
inline

获取对象节点数量

警告
对象节点数量可能大于对象数量,因为对象节点对应的对象可能已被删除
返回
对象节点数量

◆ getObject()

Object * ast::ObjectManager::getObject ( uint32_t index)

根据索引获取对象

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

◆ getObjectCount()

uint32_t ast::ObjectManager::getObjectCount ( ) const

获取当前对象数量

警告
这个函数会遍历所有对象节点判断对象是否存活,时间复杂度为O(n),请谨慎使用
返回
当前对象数量

◆ getObjectNode()

ObjectNode * ast::ObjectManager::getObjectNode ( Object * obj)

获取对象对应的对象节点

参数
obj对象指针
返回
对象节点指针

◆ getParentScope()

Object * ast::ObjectManager::getParentScope ( Object * obj)

获取对象的父作用域

obj 对象指针

返回
父作用域指针

◆ removeAllObjects()

void ast::ObjectManager::removeAllObjects ( )

移除所有对象

从对象管理器中移除所有对象,包括子对象

◆ removeObject()

errc_t ast::ObjectManager::removeObject ( Object * object)

移除对象

从对象管理器中移除对象,包括子对象

参数
object对象指针
返回
错误码

◆ setMaxObjectCount()

errc_t ast::ObjectManager::setMaxObjectCount ( uint32_t maxCount)

设置可以管理的最大对象数量

如果最大对象数量小于当前对象数量,则设置失败

参数
maxCount最大对象数量
警告
这个函数会限制对象管理器中最大对象数量,请谨慎使用

◆ setParentScope()

errc_t ast::ObjectManager::setParentScope ( Object * obj,
Object * parentScope )

设置对象的父作用域

obj 对象指针

参数
parentScope父作用域指针

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