progress on combining foreign_node_completer and relation_completer
This commit is contained in:
@@ -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_;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user