fixed object generation on nested objects

This commit is contained in:
Sascha Kühl
2025-12-11 15:41:45 +01:00
parent 571cfd52ae
commit 79c46bbd38
8 changed files with 97 additions and 34 deletions
@@ -1,6 +1,8 @@
#ifndef SHADOW_SCHEMA_HPP
#define SHADOW_SCHEMA_HPP
#include "matador/object/basic_object_info.hpp"
#include "matador/utils/result.hpp"
#include "matador/utils/error.hpp"
@@ -10,6 +12,7 @@
namespace matador::object {
class repository;
class repository_node;
class object;
}
namespace matador::object::internal {
@@ -22,6 +25,7 @@ public:
[[nodiscard]] repository& repo() const;
[[nodiscard]] bool contains(const std::type_index& ti) const;
[[nodiscard]] utils::result<basic_object_info_ref, utils::error> basic_info(const std::type_index& ti) const;
[[nodiscard]] utils::result<node_ptr, utils::error> find_node(const std::type_index &type_index) const;
[[nodiscard]] utils::result<node_ptr, utils::error> find_node(const std::string &name) const;
[[nodiscard]] utils::result<node_ptr, utils::error> attach_node(const std::shared_ptr<repository_node> &node) const;
@@ -31,6 +35,11 @@ public:
void expect_relation_node(const std::string &name, const std::type_index &ti) const;
void remove_expected_relation_node(const std::string &name) const;
[[nodiscard]] std::shared_ptr<object> provide_object_in_advance(const std::type_index &ti, const std::shared_ptr<object>& obj) const;
[[nodiscard]] bool has_object_for_type(const std::type_index &ti) const;
[[nodiscard]] std::shared_ptr<object> object_for_type(const std::type_index &ti) const;
void remove_object_for_type(const std::type_index &ti) const;
private:
repository& repo_;
};