#ifndef SHADOW_SCHEMA_HPP #define SHADOW_SCHEMA_HPP #include "matador/utils/result.hpp" #include "matador/utils/error.hpp" #include #include namespace matador::object { class repository; class repository_node; } namespace matador::object::internal { class shadow_repository { private: using node_ptr = std::shared_ptr; public: explicit shadow_repository(repository& s); [[nodiscard]] repository& repo() const; [[nodiscard]] bool contains(const std::type_index& ti) const; [[nodiscard]] utils::result find_node(const std::type_index &type_index) const; [[nodiscard]] utils::result find_node(const std::string &name) const; [[nodiscard]] utils::result attach_node(const std::shared_ptr &node) const; [[nodiscard]] utils::result detach_node(const std::shared_ptr &node) const; private: repository& repo_; }; } #endif //SHADOW_SCHEMA_HPP