🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ObjectNode.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/Object.hpp"
25#include <memory>
26
27AST_NAMESPACE_BEGIN
28
37class AST_UTIL_API ObjectNode
38{
39public:
40 ObjectNode() = default;
41 ObjectNode(Object* object)
42 : object_(object)
43 {}
44 friend class ObjectManager;
45 ~ObjectNode() = default;
46
49 Object* getObject() const {return object_.get();}
50
53 bool expired() const {return object_.expired();}
54
57 Object* getParentScope() const {return parentNode_?parentNode_->getObject():nullptr;}
58
61 ObjectNode* getParentNode() const {return parentNode_;}
62
65 std::vector<ObjectNode*>& getChildren(){return children_;}
66
69 errc_t addChild(ObjectNode* child);
70
73 errc_t setParent(ObjectNode* parent);
74
77 errc_t removeChild(ObjectNode* child);
78
80 void clearChildren();
81
83 void clear();
84
85protected:
86 void incRef();
87 void decRef();
88protected:
89 WeakPtr<Object> object_;
90 ObjectNode* parentNode_{nullptr};
91 std::vector<ObjectNode*> children_;
92};
93
96AST_NAMESPACE_END
对象管理器
定义 ObjectManager.hpp:38
对象节点
定义 ObjectNode.hpp:38
Object * getObject() const
获取对象节点的对象
定义 ObjectNode.hpp:49
bool expired() const
检查节点的对象是否过期
定义 ObjectNode.hpp:53
std::vector< ObjectNode * > & getChildren()
获取对象节点的子节点
定义 ObjectNode.hpp:65
ObjectNode * getParentNode() const
获取对象节点的父对象的父节点
定义 ObjectNode.hpp:61
Object * getParentScope() const
获取对象节点的父对象
定义 ObjectNode.hpp:57
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:81
弱引用指针
定义 WeakPtr.hpp:34