Przeglądaj źródła

meta: move custom data to meta type node details (perf)

skypjack 6 miesięcy temu
rodzic
commit
3c75f7e2fd
3 zmienionych plików z 3 dodań i 3 usunięć
  1. 1 1
      src/entt/meta/factory.hpp
  2. 1 1
      src/entt/meta/meta.hpp
  3. 1 1
      src/entt/meta/node.hpp

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

@@ -108,7 +108,7 @@ protected:
 
     void custom(meta_custom_node node) {
         if(bucket == parent) {
-            meta_context::from(*ctx).value[bucket].custom = std::move(node);
+            meta_context::from(*ctx).value[bucket].details->custom = std::move(node);
         } else if(invoke == nullptr) {
             find_member_or_assert()->custom = std::move(node);
         } else {

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

@@ -1513,7 +1513,7 @@ public:
 
     /*! @copydoc meta_data::custom */
     [[nodiscard]] meta_custom custom() const noexcept {
-        return {node.custom};
+        return node.details ? meta_custom{node.details->custom} : meta_custom{};
     }
 
     /**

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

@@ -129,6 +129,7 @@ struct meta_type_descriptor {
     std::vector<meta_conv_node> conv;
     std::vector<meta_data_node> data;
     std::vector<meta_func_node> func;
+    meta_custom_node custom{};
 };
 
 struct meta_type_node {
@@ -144,7 +145,6 @@ struct meta_type_node {
     double (*conversion_helper)(void *, const void *){};
     meta_any (*from_void)(const meta_ctx &, void *, const void *){};
     meta_template_node templ{};
-    meta_custom_node custom{};
     std::shared_ptr<meta_type_descriptor> details;
 };