diff --git a/tree.cc b/tree.cc index 7a198f2..1706f7a 100644 --- a/tree.cc +++ b/tree.cc @@ -4,7 +4,6 @@ #include #include #include -#include class INode; class ILink; @@ -134,7 +133,8 @@ private: mutable std::mutex lock_; }; -// Типизированная связь один ко многим +// Note: TypedOneToManyLink ensures type-safety on child linkage + template class TypedOneToManyLink : public OneToManyLink { public: @@ -149,7 +149,8 @@ public: } }; -// Базовая реализация LinkMixin +// Note: BaseLinkMixin is used for direct eager link composition (non-lazy) + class BaseLinkMixin : public ILinkMixin { public: explicit BaseLinkMixin(NodePtr self) { @@ -182,7 +183,8 @@ protected: LinkPtr link_; }; -// Ленивый LinkMixin с выбором стратегии по типу +// Note: LazyLinkMixin starts with LeafLink and upgrades dynamically + template class LazyLinkMixin : public ILinkMixin { public: @@ -243,7 +245,6 @@ private: LinkPtr link_; }; -// Пример узла class SimpleNode : public INode, public std::enable_shared_from_this { public: static std::shared_ptr create(std::string name) { @@ -273,7 +274,6 @@ private: LinkMixinPtr mixin_; }; -// Пример использования void printTree(const LinkPtr& link, int indent = 0) { for (int i = 0; i < indent; ++i) std::cout << " "; auto node = link->getNode();