Przeglądaj źródła

meta_data::meta is no longer available

Michele Caini 6 lat temu
rodzic
commit
21810f3b39
2 zmienionych plików z 12 dodań i 33 usunięć
  1. 4 16
      src/entt/meta/factory.hpp
  2. 8 17
      src/entt/meta/meta.hpp

+ 4 - 16
src/entt/meta/factory.hpp

@@ -555,10 +555,7 @@ public:
                 true,
                 true,
                 &internal::meta_info<Type>::resolve,
                 &internal::meta_info<Type>::resolve,
                 [](meta_handle, meta_any, meta_any) { return false; },
                 [](meta_handle, meta_any, meta_any) { return false; },
-                [](meta_handle, meta_any) -> meta_any { return Data; },
-                []() ENTT_NOEXCEPT -> meta_data {
-                    return &node;
-                }
+                [](meta_handle, meta_any) -> meta_any { return Data; }
             };
             };
 
 
             node.prop = properties<std::integral_constant<Type, Data>>(std::forward<Property>(property)...);
             node.prop = properties<std::integral_constant<Type, Data>>(std::forward<Property>(property)...);
@@ -575,10 +572,7 @@ public:
                 !std::is_member_object_pointer_v<decltype(Data)>,
                 !std::is_member_object_pointer_v<decltype(Data)>,
                 &internal::meta_info<data_type>::resolve,
                 &internal::meta_info<data_type>::resolve,
                 &internal::setter<std::is_const_v<data_type>, Type, Data>,
                 &internal::setter<std::is_const_v<data_type>, Type, Data>,
-                &internal::getter<Type, Data, Policy>,
-                []() ENTT_NOEXCEPT -> meta_data {
-                    return &node;
-                }
+                &internal::getter<Type, Data, Policy>
             };
             };
 
 
             node.prop = properties<std::integral_constant<decltype(Data), Data>>(std::forward<Property>(property)...);
             node.prop = properties<std::integral_constant<decltype(Data), Data>>(std::forward<Property>(property)...);
@@ -596,10 +590,7 @@ public:
                 !std::is_member_object_pointer_v<decltype(Data)>,
                 !std::is_member_object_pointer_v<decltype(Data)>,
                 &internal::meta_info<data_type>::resolve,
                 &internal::meta_info<data_type>::resolve,
                 &internal::setter<std::is_const_v<data_type>, Type, Data>,
                 &internal::setter<std::is_const_v<data_type>, Type, Data>,
-                &internal::getter<Type, Data, Policy>,
-                []() ENTT_NOEXCEPT -> meta_data {
-                    return &node;
-                }
+                &internal::getter<Type, Data, Policy>
             };
             };
 
 
             node.prop = properties<std::integral_constant<decltype(Data), Data>>(std::forward<Property>(property)...);
             node.prop = properties<std::integral_constant<decltype(Data), Data>>(std::forward<Property>(property)...);
@@ -653,10 +644,7 @@ public:
             false,
             false,
             &internal::meta_info<underlying_type>::resolve,
             &internal::meta_info<underlying_type>::resolve,
             &internal::setter<false, Type, Setter>,
             &internal::setter<false, Type, Setter>,
-            &internal::getter<Type, Getter, Policy>,
-            []() ENTT_NOEXCEPT -> meta_data {
-                return &node;
-            }
+            &internal::getter<Type, Getter, Policy>
         };
         };
 
 
         node.identifier = identifier;
         node.identifier = identifier;

+ 8 - 17
src/entt/meta/meta.hpp

@@ -17,7 +17,6 @@ namespace entt {
 class meta_any;
 class meta_any;
 class meta_handle;
 class meta_handle;
 class meta_prop;
 class meta_prop;
-class meta_data;
 class meta_func;
 class meta_func;
 class meta_type;
 class meta_type;
 
 
@@ -85,7 +84,6 @@ struct meta_data_node {
     meta_type_node *(* const type)() ENTT_NOEXCEPT;
     meta_type_node *(* const type)() ENTT_NOEXCEPT;
     bool(* const set)(meta_handle, meta_any, meta_any);
     bool(* const set)(meta_handle, meta_any, meta_any);
     meta_any(* const get)(meta_handle, meta_any);
     meta_any(* const get)(meta_handle, meta_any);
-    meta_data(* const meta)() ENTT_NOEXCEPT;
 };
 };
 
 
 
 
@@ -1127,20 +1125,15 @@ inline bool operator!=(const meta_dtor &lhs, const meta_dtor &rhs) ENTT_NOEXCEPT
  * A meta data is an opaque container for a data member associated with a given
  * A meta data is an opaque container for a data member associated with a given
  * type.
  * type.
  */
  */
-class meta_data {
-    /*! @brief A meta factory is allowed to create meta objects. */
-    template<typename> friend class meta_factory;
-
-    meta_data(const internal::meta_data_node *curr) ENTT_NOEXCEPT
+struct meta_data {
+    /**
+     * @brief Constructs an instance from a given node.
+     * @param curr The underlying node with which to construct the instance.
+     */
+    meta_data(const internal::meta_data_node *curr = nullptr) ENTT_NOEXCEPT
         : node{curr}
         : node{curr}
     {}
     {}
 
 
-public:
-    /*! @brief Default constructor. */
-    meta_data() ENTT_NOEXCEPT
-        : node{nullptr}
-    {}
-
     /**
     /**
      * @brief Returns the identifier assigned to a given meta data.
      * @brief Returns the identifier assigned to a given meta data.
      * @return The identifier assigned to the meta data.
      * @return The identifier assigned to the meta data.
@@ -1735,7 +1728,7 @@ public:
     std::enable_if_t<std::is_invocable_v<Op, meta_data>, void>
     std::enable_if_t<std::is_invocable_v<Op, meta_data>, void>
     data(Op op) const ENTT_NOEXCEPT {
     data(Op op) const ENTT_NOEXCEPT {
         internal::iterate<&internal::meta_type_node::data>([op = std::move(op)](auto *curr) {
         internal::iterate<&internal::meta_type_node::data>([op = std::move(op)](auto *curr) {
-            op(curr->meta());
+            op(meta_data{curr});
         }, node);
         }, node);
     }
     }
 
 
@@ -1750,11 +1743,9 @@ public:
      * @return The meta data associated with the given identifier, if any.
      * @return The meta data associated with the given identifier, if any.
      */
      */
     meta_data data(const ENTT_ID_TYPE identifier) const ENTT_NOEXCEPT {
     meta_data data(const ENTT_ID_TYPE identifier) const ENTT_NOEXCEPT {
-        const auto * const curr = internal::find_if<&internal::meta_type_node::data>([identifier](auto *candidate) {
+        return internal::find_if<&internal::meta_type_node::data>([identifier](auto *candidate) {
             return candidate->identifier == identifier;
             return candidate->identifier == identifier;
         }, node);
         }, node);
-
-        return curr ? curr->meta() : meta_data{};
     }
     }
 
 
     /**
     /**