This commit is contained in:
Сергей Маринкевич
2025-07-22 19:18:03 +07:00
parent 3801a5dc0b
commit f5f78308bd
11 changed files with 136 additions and 143 deletions
+7 -7
View File
@@ -10,11 +10,11 @@ using LinkPtr = std::shared_ptr<ILink>;
class ILink {
public:
virtual ~ILink() = default;
virtual NodePtr getNode() const = 0;
virtual LinkPtr getParent() const = 0;
virtual void setParent(const LinkPtr& parent) = 0;
virtual const std::vector<LinkPtr>& getChildren() const = 0;
virtual void addChild(const LinkPtr& child) = 0;
virtual void removeChild(const LinkPtr& child) = 0;
virtual ~ILink() = default;
virtual NodePtr getNode() const = 0;
virtual NodePtr getParent() const = 0;
virtual void setParent(const NodePtr& parent) = 0;
virtual const std::vector<NodePtr>& getChildren() const = 0;
virtual void addChild(const NodePtr& child) = 0;
virtual void removeChild(const NodePtr& child) = 0;
};
+5 -4
View File
@@ -9,8 +9,9 @@ using LinkPtr = std::shared_ptr<ILink>;
class ILinkMixin {
public:
virtual ~ILinkMixin() = default;
virtual void linkChild(const NodePtr& child) = 0;
virtual void unlinkParent() = 0;
virtual LinkPtr getLink() = 0;
virtual ~ILinkMixin() = default;
virtual void linkChild(const NodePtr& child) = 0;
virtual void unlinkParent() = 0;
virtual LinkPtr getLink() = 0;
virtual NodePtr getSelf() = 0;
};
+3 -3
View File
@@ -5,7 +5,7 @@
// INode является ILinkMixin, поэтому полный #include здесь оправдан
class INode : public ILinkMixin {
public:
~INode() override = default;
virtual const std::string& name() const = 0;
virtual NodePtr getSelf() = 0;
~INode() override = default;
virtual const std::string& name() const = 0;
virtual NodePtr getSelf() = 0;
};