🛰️航天仿真算法库 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
42 ObjectNode(const ObjectNode&) = delete;
43 ObjectNode& operator=(const ObjectNode&) = delete;
44
45 explicit ObjectNode(Object* object)
46 : object_(object)
47 , children_()
48 {}
49 friend class ObjectManager;
50 ~ObjectNode() = default;
51
54 Object* getObject() const {return object_.get();}
55
58 bool expired() const {return object_.expired();}
59
62 Object* getParentScope() const {return parentNode_?parentNode_->getObject():nullptr;}
63
66 ObjectNode* getParentNode() const {return parentNode_;}
67
70 std::vector<ObjectNode*>& getChildren(){return children_;}
71
74 errc_t addChild(ObjectNode* child);
75
78 errc_t setParent(ObjectNode* parent);
79
82 errc_t removeChild(ObjectNode* child);
83
85 void clearChildren();
86
88 void clear();
89
90protected:
91 void incRef();
92 void decRef();
93protected:
94 WeakPtr<Object> object_;
95 ObjectNode* parentNode_{nullptr};
96 std::vector<ObjectNode*> children_;
97};
98
101AST_NAMESPACE_END
对象管理器
定义 ObjectManager.hpp:38
对象节点
定义 ObjectNode.hpp:38
Object * getObject() const
获取对象节点的对象
定义 ObjectNode.hpp:54
bool expired() const
检查节点的对象是否过期
定义 ObjectNode.hpp:58
std::vector< ObjectNode * > & getChildren()
获取对象节点的子节点
定义 ObjectNode.hpp:70
ObjectNode * getParentNode() const
获取对象节点的父对象的父节点
定义 ObjectNode.hpp:66
Object * getParentScope() const
获取对象节点的父对象
定义 ObjectNode.hpp:62
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
弱引用指针
定义 WeakPtr.hpp:35