progress on combining foreign_node_completer and relation_completer

This commit is contained in:
Sascha Kühl
2025-12-05 15:38:35 +01:00
parent 98da0884f1
commit 2e354b435c
20 changed files with 195 additions and 108 deletions
+11 -1
View File
@@ -45,7 +45,7 @@ public:
if (auto result = attach_node(node, parent); !result) {
return utils::failure(result.err());
}
foreign_node_completer::complete<Type>(node);
foreign_node_completer<Type>::template complete<Type>(node);
relation_completer<Type>::complete(node);
} else if (!has_node(name)) {
it->second->update_name(name);
@@ -177,10 +177,19 @@ private:
static void insert_node(const node_ptr &parent, const node_ptr &child);
void remove_node(const node_ptr &node);
bool expecting_relation_node(const std::string &name) const;
template<typename NodeType>
void expect_relation_node(const std::string &name) {
expected_relation_nodes_[name] = std::type_index(typeid(NodeType));
}
void remove_expected_relation_node(const std::string &name);
private:
friend class internal::shadow_repository;
friend class repository_node;
friend class attribute_generator;
template < typename NodeType >
friend class foreign_node_completer;
std::string name_;
std::shared_ptr<repository_node> root_;
@@ -190,6 +199,7 @@ private:
logger::logger log_;
std::unordered_map<std::type_index, attribute*> missing_references_;
std::unordered_map<std::string, std::type_index> expected_relation_nodes_;
};
}