iters
Сергей Маринкевич 5 months ago
parent b9cf6623d1
commit dc9bfe51ab

@ -4,7 +4,6 @@
#include <mutex>
#include <algorithm>
#include <stdexcept>
#include <type_traits>
class INode;
class ILink;
@ -134,7 +133,8 @@ private:
mutable std::mutex lock_;
};
// Типизированная связь один ко многим
// Note: TypedOneToManyLink ensures type-safety on child linkage
template <typename TChild>
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 <typename TNode>
class LazyLinkMixin : public ILinkMixin {
public:
@ -243,7 +245,6 @@ private:
LinkPtr link_;
};
// Пример узла
class SimpleNode : public INode, public std::enable_shared_from_this<SimpleNode> {
public:
static std::shared_ptr<SimpleNode> 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();

Loading…
Cancel
Save