#pragma once #include #include #include "ifaces/ILinkMixin.h" #include "Logger.h" class BaseLinkMixin : public virtual ILinkMixin, public std::enable_shared_from_this { public: void linkChild(const MixinPtr& child) override { getLink()->addChild(child); LinkPtr childLink = child->getLink(); childLink->setParent(getNode()); } void unlinkParent() override { LinkPtr link = getLink(); MixinPtr parent = link->getParent(); if (!parent) throw std::logic_error("Have no parent!"); LinkPtr parentLink = parent->getLink(); parentLink->removeChild(getNode()); getLink()->setParent(nullptr); } ~BaseLinkMixin() override { Logger::get("Mixin").dbg("--- Destructor called for: BaseLinkMixin"); } protected: MixinPtr getNode() { return shared_from_this(); } };