Просмотр исходного кода

meta: make meta_type_node partially context aware

Michele Caini 3 лет назад
Родитель
Сommit
6e254fb39d
2 измененных файлов с 5 добавлено и 4 удалено
  1. 3 2
      src/entt/meta/meta.hpp
  2. 2 2
      src/entt/meta/node.hpp

+ 3 - 2
src/entt/meta/meta.hpp

@@ -1071,7 +1071,7 @@ public:
      * @return True if the underlying type is a pointer, false otherwise.
      */
     [[nodiscard]] bool is_pointer() const noexcept {
-        return node.info && (node.info->hash() != node.remove_pointer().info->hash());
+        return node.info && (node.info->hash() != remove_pointer().info().hash());
     }
 
     /**
@@ -1080,7 +1080,8 @@ public:
      * doesn't refer to a pointer type.
      */
     [[nodiscard]] meta_type remove_pointer() const noexcept {
-        return node.remove_pointer();
+        const auto &ctx_TODO = internal::meta_context::from(locator<meta_ctx>::value_or());
+        return node.remove_pointer(ctx_TODO);
     }
 
     /**

+ 2 - 2
src/entt/meta/node.hpp

@@ -122,7 +122,7 @@ struct meta_type_node {
     id_type id{};
     meta_traits traits{meta_traits::is_none};
     size_type size_of{0u};
-    meta_type_node (*remove_pointer)() noexcept {};
+    meta_type_node (*remove_pointer)(const meta_context &) noexcept {};
     meta_any (*default_constructor)(){};
     double (*conversion_helper)(void *, const void *){};
     meta_any (*from_void)(void *, const void *){};
@@ -192,7 +192,7 @@ template<typename Type>
             | (is_complete_v<meta_sequence_container_traits<Type>> ? meta_traits::is_meta_sequence_container : meta_traits::is_none)
             | (is_complete_v<meta_associative_container_traits<Type>> ? meta_traits::is_meta_associative_container : meta_traits::is_none),
         size_of_v<Type>,
-        &resolve_TODO<std::remove_cv_t<std::remove_pointer_t<Type>>>};
+        &resolve<std::remove_cv_t<std::remove_pointer_t<Type>>>};
 
     if constexpr(std::is_default_constructible_v<Type>) {
         node.default_constructor = +[]() { return meta_any{std::in_place_type<Type>}; };