Sfoglia il codice sorgente

meta: reduce the size of the erased conversion function

Michele Caini 3 anni fa
parent
commit
bd62e817dc
3 ha cambiato i file con 6 aggiunte e 6 eliminazioni
  1. 4 4
      src/entt/meta/factory.hpp
  2. 1 1
      src/entt/meta/meta.hpp
  3. 1 1
      src/entt/meta/node.hpp

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

@@ -231,8 +231,8 @@ public:
         using conv_type = std::remove_cv_t<std::remove_reference_t<std::invoke_result_t<decltype(Candidate), Type &>>>;
 
         internal::meta_conv_node node{
-            +[](const meta_any &instance) {
-                return forward_as_meta(std::invoke(Candidate, *static_cast<const Type *>(instance.data())));
+            +[](const void *instance) {
+                return forward_as_meta(std::invoke(Candidate, *static_cast<const Type *>(instance)));
             }};
 
         internal::meta_extend(owner(), type_id<conv_type>().hash(), std::move(node));
@@ -253,8 +253,8 @@ public:
         using conv_type = std::remove_cv_t<std::remove_reference_t<To>>;
 
         internal::meta_conv_node node{
-            +[](const meta_any &instance) {
-                return forward_as_meta(static_cast<To>(*static_cast<const Type *>(instance.data())));
+            +[](const void *instance) {
+                return forward_as_meta(static_cast<To>(*static_cast<const Type *>(instance)));
             }};
 
         internal::meta_extend(owner(), type_id<conv_type>().hash(), std::move(node));

+ 1 - 1
src/entt/meta/meta.hpp

@@ -1449,7 +1449,7 @@ bool meta_any::set(const id_type id, Type &&value) {
 
     if(node.details) {
         if(auto it = node.details->conv.find(type.info().hash()); it != node.details->conv.cend()) {
-            return it->second.conv(*this);
+            return it->second.conv(data());
         }
     }
 

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

@@ -62,7 +62,7 @@ struct meta_base_node {
 };
 
 struct meta_conv_node {
-    meta_any (*conv)(const meta_any &){};
+    meta_any (*conv)(const void *){};
 };
 
 struct meta_ctor_node {