[Bf-blender-cvs] [8523b034737] functions-experimental-refactor: cleanup

Jacques Lucke noreply at git.blender.org
Sat Nov 2 21:32:57 CET 2019


Commit: 8523b034737adddcde6408c6213c82e25e5f9821
Author: Jacques Lucke
Date:   Sat Nov 2 19:22:05 2019 +0100
Branches: functions-experimental-refactor
https://developer.blender.org/rB8523b034737adddcde6408c6213c82e25e5f9821

cleanup

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

M	source/blender/functions2/intern/vtree_multi_function_network/builder.h
M	source/blender/functions2/intern/vtree_multi_function_network/generate.cc
M	source/blender/functions2/intern/vtree_multi_function_network/mappings.h
M	source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
M	source/blender/functions2/intern/vtree_multi_function_network/mappings_sockets.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 3c1c6cb21c1..79ebda47fef 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/builder.h
+++ b/source/blender/functions2/intern/vtree_multi_function_network/builder.h
@@ -10,15 +10,18 @@ class VTreeMFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
  private:
   const VirtualNodeTree &m_vtree;
   const VTreeMultiFunctionMappings &m_vtree_mappings;
+  OwnedResources &m_resources;
   Array<MFBuilderSocket *> m_socket_map;
   Array<MFDataType> m_type_by_vsocket;
   std::unique_ptr<MFNetworkBuilder> m_builder;
 
  public:
   VTreeMFNetworkBuilder(const VirtualNodeTree &vtree,
-                        const VTreeMultiFunctionMappings &vtree_mappings)
+                        const VTreeMultiFunctionMappings &vtree_mappings,
+                        OwnedResources &resources)
       : m_vtree(vtree),
         m_vtree_mappings(vtree_mappings),
+        m_resources(resources),
         m_socket_map(vtree.socket_count(), nullptr),
         m_type_by_vsocket(vtree.socket_count()),
         m_builder(BLI::make_unique<MFNetworkBuilder>())
@@ -87,6 +90,14 @@ class VTreeMFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
     m_builder->add_link(from, to);
   }
 
+  template<typename T, typename... Args> T &allocate(const char *name, Args &&... args)
+  {
+    std::unique_ptr<T> value = BLI::make_unique<T>(std::forward<Args>(args)...);
+    T &value_ref = *value;
+    m_resources.add(std::move(value), name);
+    return value_ref;
+  }
+
   MFDataType try_get_data_type(const VSocket &vsocket) const
   {
     return m_type_by_vsocket[vsocket.id()];
diff --git a/source/blender/functions2/intern/vtree_multi_function_network/generate.cc b/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
index c07fd35249b..54a841e1885 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
+++ b/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
@@ -10,7 +10,6 @@
 namespace FN {
 
 static bool insert_nodes(VTreeMFNetworkBuilder &builder,
-                         OwnedResources &resources,
                          const VTreeMultiFunctionMappings &mappings)
 {
   const VirtualNodeTree &vtree = builder.vtree();
@@ -20,7 +19,7 @@ static bool insert_nodes(VTreeMFNetworkBuilder &builder,
     const InsertVNodeFunction *inserter = mappings.vnode_inserters.lookup_ptr(idname);
 
     if (inserter != nullptr) {
-      (*inserter)(builder, resources, *vnode);
+      (*inserter)(builder, *vnode);
       BLI_assert(builder.data_sockets_of_vnode_are_mapped(*vnode));
     }
     else if (builder.has_data_sockets(*vnode)) {
@@ -32,7 +31,6 @@ static bool insert_nodes(VTreeMFNetworkBuilder &builder,
 }
 
 static bool insert_links(VTreeMFNetworkBuilder &builder,
-                         OwnedResources &resources,
                          const VTreeMultiFunctionMappings &mappings)
 {
   for (const VInputSocket *to_vsocket : builder.vtree().all_input_sockets()) {
@@ -62,7 +60,7 @@ static bool insert_links(VTreeMFNetworkBuilder &builder,
       if (inserter == nullptr) {
         return false;
       }
-      auto new_sockets = (*inserter)(builder, resources);
+      auto new_sockets = (*inserter)(builder);
       builder.add_link(from_socket, *new_sockets.first);
       builder.add_link(*new_sockets.second, to_socket);
     }
@@ -72,7 +70,6 @@ static bool insert_links(VTreeMFNetworkBuilder &builder,
 }
 
 static bool insert_unlinked_inputs(VTreeMFNetworkBuilder &builder,
-                                   OwnedResources &resources,
                                    const VTreeMultiFunctionMappings &mappings)
 {
   Vector<const VInputSocket *> unlinked_data_inputs;
@@ -91,7 +88,7 @@ static bool insert_unlinked_inputs(VTreeMFNetworkBuilder &builder,
     if (inserter == nullptr) {
       return false;
     }
-    MFBuilderOutputSocket &from_socket = (*inserter)(builder, resources, *vsocket);
+    MFBuilderOutputSocket &from_socket = (*inserter)(builder, *vsocket);
     MFBuilderInputSocket &to_socket = builder.lookup_socket(*vsocket);
     builder.add_link(from_socket, to_socket);
   }
@@ -104,14 +101,14 @@ std::unique_ptr<VTreeMFNetwork> generate_vtree_multi_function_network(const Virt
 {
   const VTreeMultiFunctionMappings &mappings = get_vtree_multi_function_mappings();
 
-  VTreeMFNetworkBuilder builder(vtree, mappings);
-  if (!insert_nodes(builder, resources, mappings)) {
+  VTreeMFNetworkBuilder builder(vtree, mappings, resources);
+  if (!insert_nodes(builder, mappings)) {
     BLI_assert(false);
   }
-  if (!insert_links(builder, resources, mappings)) {
+  if (!insert_links(builder, mappings)) {
     BLI_assert(false);
   }
-  if (!insert_unlinked_inputs(builder, resources, mappings)) {
+  if (!insert_unlinked_inputs(builder, mappings)) {
     BLI_assert(false);
   }
 
diff --git a/source/blender/functions2/intern/vtree_multi_function_network/mappings.h b/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
index b42e8c7ea51..e3a479824f6 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
+++ b/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
@@ -15,13 +15,12 @@ using BLI::StringMap;
 struct VTreeMultiFunctionMappings;
 class VTreeMFNetworkBuilder;
 
-using InsertVNodeFunction = std::function<void(
-    VTreeMFNetworkBuilder &builder, OwnedResources &resources, const VNode &vnode)>;
-using InsertUnlinkedInputFunction = std::function<MFBuilderOutputSocket &(
-    VTreeMFNetworkBuilder &builder, OwnedResources &resources, const VSocket &vsocket)>;
-using InsertImplicitConversionFunction =
-    std::function<std::pair<MFBuilderInputSocket *, MFBuilderOutputSocket *>(
-        VTreeMFNetworkBuilder &builder, OwnedResources &resources)>;
+using InsertVNodeFunction =
+    std::function<void(VTreeMFNetworkBuilder &builder, const VNode &vnode)>;
+using InsertUnlinkedInputFunction =
+    std::function<MFBuilderOutputSocket &(VTreeMFNetworkBuilder &builder, const VSocket &vsocket)>;
+using InsertImplicitConversionFunction = std::function<
+    std::pair<MFBuilderInputSocket *, MFBuilderOutputSocket *>(VTreeMFNetworkBuilder &builder)>;
 
 struct VTreeMultiFunctionMappings {
   StringMap<MFDataType> data_type_by_idname;
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 2690c3581c3..c411a6e5e22 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
@@ -5,27 +5,15 @@
 
 namespace FN {
 
-template<typename T, typename... Args>
-T &allocate_resource(const char *name, OwnedResources &resources, Args &&... args)
+static void INSERT_vector_math(VTreeMFNetworkBuilder &builder, const VNode &vnode)
 {
-  std::unique_ptr<T> value = BLI::make_unique<T>(std::forward<Args>(args)...);
-  T &value_ref = *value;
-  resources.add(std::move(value), name);
-  return value_ref;
-}
-
-static void INSERT_vector_math(VTreeMFNetworkBuilder &builder,
-                               OwnedResources &resources,
-                               const VNode &vnode)
-{
-  const MultiFunction &fn = allocate_resource<FN::MF_AddFloat3s>("vector math function",
-                                                                 resources);
+  const MultiFunction &fn = builder.allocate<FN::MF_AddFloat3s>("vector math function");
   builder.add_function(fn, {0, 1}, {2}, vnode);
 }
 
 static const MultiFunction &get_vectorized_function(
+    VTreeMFNetworkBuilder &builder,
     const MultiFunction &base_function,
-    OwnedResources &resources,
     PointerRNA *rna,
     ArrayRef<const char *> is_vectorized_prop_names)
 {
@@ -40,70 +28,56 @@ static const MultiFunction &get_vectorized_function(
   }
 
   if (input_is_vectorized.contains(true)) {
-    return allocate_resource<FN::MF_SimpleVectorize>(
-        "vectorized function", resources, base_function, input_is_vectorized);
+    return builder.allocate<FN::MF_SimpleVectorize>(
+        "vectorized function", base_function, input_is_vectorized);
   }
   else {
     return base_function;
   }
 }
 
-static void INSERT_float_math(VTreeMFNetworkBuilder &builder,
-                              OwnedResources &resources,
-                              const VNode &vnode)
+static void INSERT_float_math(VTreeMFNetworkBuilder &builder, const VNode &vnode)
 {
-  const MultiFunction &base_fn = allocate_resource<FN::MF_AddFloats>("float math function",
-                                                                     resources);
+  const MultiFunction &base_fn = builder.allocate<FN::MF_AddFloats>("float math function");
   const MultiFunction &fn = get_vectorized_function(
-      base_fn, resources, vnode.rna(), {"use_list__a", "use_list__b"});
+      builder, base_fn, vnode.rna(), {"use_list__a", "use_list__b"});
 
   builder.add_function(fn, {0, 1}, {2}, vnode);
 }
 
-static void INSERT_combine_vector(VTreeMFNetworkBuilder &builder,
-                                  OwnedResources &resources,
-                                  const VNode &vnode)
+static void INSERT_combine_vector(VTreeMFNetworkBuilder &builder, const VNode &vnode)
 {
-  const MultiFunction &base_fn = allocate_resource<FN::MF_CombineVector>("combine vector function",
-                                                                         resources);
+  const MultiFunction &base_fn = builder.allocate<FN::MF_CombineVector>("combine vector function");
   const MultiFunction &fn = get_vectorized_function(
-      base_fn, resources, vnode.rna(), {"use_list__x", "use_list__y", "use_list__z"});
+      builder, base_fn, vnode.rna(), {"use_list__x", "use_list__y", "use_list__z"});
   builder.add_function(fn, {0, 1, 2}, {3}, vnode);
 }
 
-static void INSERT_separate_vector(VTreeMFNetworkBuilder &builder,
-                                   OwnedResources &resources,
-                                   const VNode &vnode)
+static void INSE

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list