|
|
|
|
@ -11,7 +11,7 @@ class LazyLinkMixin : public virtual ILinkMixin {
|
|
|
|
|
public:
|
|
|
|
|
void linkChild(const NodePtr& childNode) override {
|
|
|
|
|
LinkPtr childLink = childNode->getLink();
|
|
|
|
|
childLink->setParent(getSelf());
|
|
|
|
|
childLink->setParent(getNode());
|
|
|
|
|
|
|
|
|
|
getLink()->addChild(childNode);
|
|
|
|
|
}
|
|
|
|
|
@ -27,7 +27,7 @@ public:
|
|
|
|
|
|
|
|
|
|
LinkPtr parentLink = parent->getLink();
|
|
|
|
|
|
|
|
|
|
parentLink->removeChild(getSelf());
|
|
|
|
|
parentLink->removeChild(getNode());
|
|
|
|
|
getLink()->setParent(nullptr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -41,13 +41,12 @@ public:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual NodePtr getShared() = 0;
|
|
|
|
|
NodePtr getSelf() override { return getShared(); }
|
|
|
|
|
virtual NodePtr getNode() = 0;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void lazyInit() {
|
|
|
|
|
if (!link_) {
|
|
|
|
|
link_ = std::make_shared<TLink>(getSelf());
|
|
|
|
|
link_ = std::make_shared<TLink>(getNode());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|