schema progress (does not compile)

This commit is contained in:
2025-12-31 11:56:12 +01:00
parent d104222fdd
commit ab2d39407c
65 changed files with 1355 additions and 922 deletions
+21 -2
View File
@@ -104,8 +104,7 @@ void repository::dump( std::ostream& os, const node_ptr& node ) {
}
}
utils::result<repository::node_ptr, utils::error> repository::attach_node(const std::shared_ptr<repository_node> &node,
const std::string &parent) {
utils::result<repository::node_ptr, utils::error> repository::attach_node(const std::shared_ptr<repository_node> &node, const std::string &parent) {
if (has_node(node)) {
return utils::failure(make_error(error_code::NodeAlreadyExists, "Node '" + node->name() + "' already exists."));
}
@@ -233,4 +232,24 @@ std::shared_ptr<object> repository::object_for_type(const std::type_index &ti) c
void repository::remove_object_for_type(const std::type_index &ti) {
object_by_type_.erase(ti);
}
bool repository::is_node_announced(const std::type_index &ti) const {
return announced_node_.count(ti) > 0;
}
void repository::push_announce_node(const std::type_index &ti, const node_ptr &node) {
announced_node_.insert({ti, node});
}
repository::node_ptr repository::announce_node(const std::type_index &ti) {
return announced_node_.find(ti)->second;
}
repository::node_ptr repository::pop_announce_node(const std::type_index &ti) {
const auto it = announced_node_.find(ti);
if (it != announced_node_.end()) {
announced_node_.erase(it);
}
return it->second;
}
} // namespace matador::object