#pragma once #include #include #include "ifaces/ILinkMixin.h" template class ILink { public: virtual ~ILink() = default; virtual std::shared_ptr getNode() const = 0; virtual std::shared_ptr getParent() const = 0; virtual void setParent(const std::shared_ptr& parent) = 0; virtual const std::vector>& getChildren() const = 0; virtual void addChild(const std::shared_ptr& child) = 0; virtual void removeChild(const std::shared_ptr& child) = 0; virtual void replaceChild(const std::shared_ptr& oldChild, const std::shared_ptr& newChild) = 0; };