Commit: 4a0b22d449004fa71b46fc9ab354f4a066b7ec9a
Author: Jacques Lucke
Date:   Sat Nov 2 19:12:46 2019 +0100
Branches: functions-experimental-refactor
https://developer.blender.org/rB4a0b22d449004fa71b46fc9ab354f4a066b7ec9a

cleanup

===================================================================

M       source/blender/functions2/intern/vtree_multi_function_network/builder.h
M       
source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc

===================================================================

diff --git 
a/source/blender/functions2/intern/vtree_multi_function_network/builder.h 
b/source/blender/functions2/intern/vtree_multi_function_network/builder.h
index d51d3a597c0..3c1c6cb21c1 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/builder.h
+++ b/source/blender/functions2/intern/vtree_multi_function_network/builder.h
@@ -209,6 +209,14 @@ class VTreeMFNetworkBuilder : BLI::NonCopyable, 
BLI::NonMovable {
     return *m_vtree_mappings.cpp_type_by_type_name.lookup(name);
   }
 
+  const CPPType &cpp_type_from_property(const VNode &vnode, StringRefNull 
prop_name) const
+  {
+    char *type_name = RNA_string_get_alloc(vnode.rna(), prop_name.data(), 
nullptr, 0);
+    const CPPType &type = this->cpp_type_by_name(type_name);
+    MEM_freeN(type_name);
+    return type;
+  }
+
   std::unique_ptr<VTreeMFNetwork> build()
   {
     // m_builder->to_dot__clipboard();
diff --git 
a/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
 
b/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
index aa0ed527907..2690c3581c3 100644
--- 
a/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
+++ 
b/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
@@ -86,10 +86,7 @@ static void INSERT_list_length(VTreeMFNetworkBuilder 
&builder,
                                OwnedResources &resources,
                                const VNode &vnode)
 {
-  char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 
0);
-  const CPPType &type = builder.cpp_type_by_name(type_name);
-  MEM_freeN(type_name);
-
+  const CPPType &type = builder.cpp_type_from_property(vnode, "active_type");
   const MultiFunction &fn = allocate_resource<FN::MF_ListLength>(
       "list length function", resources, type);
   builder.add_function(fn, {0}, {1}, vnode);
@@ -99,10 +96,7 @@ static void INSERT_get_list_element(VTreeMFNetworkBuilder 
&builder,
                                     OwnedResources &resources,
                                     const VNode &vnode)
 {
-  char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 
0);
-  const CPPType &type = builder.cpp_type_by_name(type_name);
-  MEM_freeN(type_name);
-
+  const CPPType &type = builder.cpp_type_from_property(vnode, "active_type");
   const MultiFunction &fn = allocate_resource<FN::MF_GetListElement>(
       "get list element function", resources, type);
   builder.add_function(fn, {0, 1, 2}, {3}, vnode);
@@ -151,10 +145,7 @@ static void INSERT_pack_list(VTreeMFNetworkBuilder 
&builder,
                              OwnedResources &resources,
                              const VNode &vnode)
 {
-  char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 
0);
-  const CPPType &type = builder.cpp_type_by_name(type_name);
-  MEM_freeN(type_name);
-
+  const CPPType &type = builder.cpp_type_from_property(vnode, "active_type");
   MFBuilderOutputSocket &packed_list_socket = build_pack_list_node(
       builder, resources, vnode, type, "variadic", 0);
   builder.map_sockets(vnode.output(0), packed_list_socket);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to