fup
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user