🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ObjectManager.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "ObjectNode.hpp"
25#include <vector>
26#include <limits>
27
28AST_NAMESPACE_BEGIN
29
37class AST_UTIL_API ObjectManager
38{
39public:
40 static ObjectManager& CurrentInstance();
41
42 ObjectManager() = default;
43 ~ObjectManager() = default;
44public:
48 Object* getObject(uint32_t index);
49
56 uint32_t addObject(Object* object);
57
62 errc_t removeObject(Object* object);
63
66 void removeAllObjects();
67
71 errc_t setParentScope(Object* obj, Object* parentScope);
72
73
77 Object* getParentScope(Object* obj);
78
79
84 Object* getAncestorScope(Object* obj, Class* cls);
85
89 size_t getNodeCount() const {return objects_.size();}
90
93 uint32_t getMaxObjectCount() const{return maxObjectCount_;}
94
99 errc_t setMaxObjectCount(uint32_t maxCount);
100
104 uint32_t getObjectCount() const;
105
111 std::vector<Object*> findObjects(Class* cls, StringView name=StringView());
112
118 Object* findObject(Class* cls, StringView name=StringView());
119
123 ObjectNode* getObjectNode(Object* obj);
124
127 std::vector<Object*> getAllObjects();
128protected:
129 friend class Object;
130 errc_t removeNode(uint32_t index);
131
132 void advanceIndex();
133protected:
134 constexpr static uint32_t kDefaultMaxObjectCount = static_cast<uint32_t>(-1) - 1;
135
136 std::vector<ObjectNode*> objects_;
137 uint32_t nextIndex_{0};
138 uint32_t maxObjectCount_{kDefaultMaxObjectCount};
139};
140
143AST_NAMESPACE_END
类元信息
定义 Class.hpp:40
对象管理器
定义 ObjectManager.hpp:38
uint32_t getMaxObjectCount() const
获取可以管理的最大对象数量
定义 ObjectManager.hpp:93
size_t getNodeCount() const
获取对象节点数量
定义 ObjectManager.hpp:89
std::vector< ObjectNode * > objects_
所有对象节点
定义 ObjectManager.hpp:136
对象节点
定义 ObjectNode.hpp:38
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:86