From f330c305bbe62db28f4bd1a0b900f689987bda05 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Fri, 29 Nov 2024 12:08:09 +0100 Subject: [PATCH] meta: self contained meta_factory, prepare to deprecate meta --- src/entt/meta/factory.hpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/entt/meta/factory.hpp b/src/entt/meta/factory.hpp index 37214f91c..074c55922 100644 --- a/src/entt/meta/factory.hpp +++ b/src/entt/meta/factory.hpp @@ -119,17 +119,16 @@ protected: } public: - basic_meta_factory(const id_type id, meta_ctx &area) + basic_meta_factory(meta_ctx &area, meta_type_node node) : ctx{&area}, - parent{id}, - bucket{id} { - auto &&elem = meta_context::from(*ctx).value[parent]; - - if(!elem.details) { - elem.details = std::make_shared(); + parent{node.info->hash()}, + bucket{parent} { + if(!node.details) { + node.details = std::make_shared(); } - details = elem.details.get(); + details = node.details.get(); + meta_context::from(*ctx).value.try_emplace(parent, std::move(node)); } private: @@ -172,14 +171,14 @@ class meta_factory: private internal::basic_meta_factory { public: /*! @brief Default constructor. */ meta_factory() noexcept - : internal::basic_meta_factory{type_id().hash(), locator::value_or()} {} + : meta_factory{locator::value_or()} {} /** * @brief Context aware constructor. * @param area The context into which to construct meta types. */ meta_factory(meta_ctx &area) noexcept - : internal::basic_meta_factory{type_id().hash(), area} {} + : base_type{area, internal::resolve(internal::meta_context::from(area))} {} /** * @brief Assigns a custom unique identifier to a meta type.