[Bf-blender-cvs] [2c8ad4ef0b8] functions-experimental-refactor: cleanup

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


Commit: 2c8ad4ef0b839446e0cf2cc7ae9e63afa88b162d
Author: Jacques Lucke
Date:   Sat Nov 2 19:07:37 2019 +0100
Branches: functions-experimental-refactor
https://developer.blender.org/rB2c8ad4ef0b839446e0cf2cc7ae9e63afa88b162d

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 f54cac6c961..d51d3a597c0 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/builder.h
+++ b/source/blender/functions2/intern/vtree_multi_function_network/builder.h
@@ -2,22 +2,32 @@
 
 #include "FN_vtree_multi_function_network.h"
 
+#include "mappings.h"
+
 namespace FN {
 
-class VTreeMFNetworkBuilder {
+class VTreeMFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
  private:
   const VirtualNodeTree &m_vtree;
-  Vector<MFBuilderSocket *> m_socket_map;
-  Vector<MFDataType> m_type_by_vsocket;
+  const VTreeMultiFunctionMappings &m_vtree_mappings;
+  Array<MFBuilderSocket *> m_socket_map;
+  Array<MFDataType> m_type_by_vsocket;
   std::unique_ptr<MFNetworkBuilder> m_builder;
 
  public:
-  VTreeMFNetworkBuilder(const VirtualNodeTree &vtree, Vector<MFDataType> type_by_vsocket)
+  VTreeMFNetworkBuilder(const VirtualNodeTree &vtree,
+                        const VTreeMultiFunctionMappings &vtree_mappings)
       : m_vtree(vtree),
+        m_vtree_mappings(vtree_mappings),
         m_socket_map(vtree.socket_count(), nullptr),
-        m_type_by_vsocket(std::move(type_by_vsocket)),
+        m_type_by_vsocket(vtree.socket_count()),
         m_builder(BLI::make_unique<MFNetworkBuilder>())
   {
+    for (const VSocket *vsocket : vtree.all_sockets()) {
+      MFDataType data_type = vtree_mappings.data_type_by_idname.lookup_default(
+          vsocket->idname(), MFDataType::ForNone());
+      m_type_by_vsocket[vsocket->id()] = data_type;
+    }
   }
 
   const VirtualNodeTree &vtree() const
@@ -194,6 +204,11 @@ class VTreeMFNetworkBuilder {
     return socket->as_input();
   }
 
+  const CPPType &cpp_type_by_name(StringRef name) const
+  {
+    return *m_vtree_mappings.cpp_type_by_type_name.lookup(name);
+  }
+
   std::unique_ptr<VTreeMFNetwork> build()
   {
     // m_builder->to_dot__clipboard();
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 6b8bc9390c9..c07fd35249b 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
+++ b/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
@@ -5,6 +5,7 @@
 #include "BLI_string_map.h"
 
 #include "mappings.h"
+#include "builder.h"
 
 namespace FN {
 
@@ -19,7 +20,7 @@ static bool insert_nodes(VTreeMFNetworkBuilder &builder,
     const InsertVNodeFunction *inserter = mappings.vnode_inserters.lookup_ptr(idname);
 
     if (inserter != nullptr) {
-      (*inserter)(builder, resources, mappings, *vnode);
+      (*inserter)(builder, resources, *vnode);
       BLI_assert(builder.data_sockets_of_vnode_are_mapped(*vnode));
     }
     else if (builder.has_data_sockets(*vnode)) {
@@ -103,14 +104,7 @@ std::unique_ptr<VTreeMFNetwork> generate_vtree_multi_function_network(const Virt
 {
   const VTreeMultiFunctionMappings &mappings = get_vtree_multi_function_mappings();
 
-  Vector<MFDataType> type_by_vsocket{vtree.socket_count()};
-  for (const VSocket *vsocket : vtree.all_sockets()) {
-    MFDataType data_type = mappings.data_type_by_idname.lookup_default(vsocket->idname(),
-                                                                       MFDataType::ForNone());
-    type_by_vsocket[vsocket->id()] = data_type;
-  }
-
-  VTreeMFNetworkBuilder builder(vtree, std::move(type_by_vsocket));
+  VTreeMFNetworkBuilder builder(vtree, mappings);
   if (!insert_nodes(builder, resources, 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 6af29056a9f..b42e8c7ea51 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
+++ b/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
@@ -1,10 +1,11 @@
 #pragma once
 
-#include "builder.h"
-
 #include "BLI_map.h"
+#include "BLI_string_map.h"
 #include "BLI_owned_resources.h"
 
+#include "FN_vtree_multi_function_network.h"
+
 namespace FN {
 
 using BLI::Map;
@@ -12,11 +13,10 @@ using BLI::OwnedResources;
 using BLI::StringMap;
 
 struct VTreeMultiFunctionMappings;
+class VTreeMFNetworkBuilder;
 
-using InsertVNodeFunction = std::function<void(VTreeMFNetworkBuilder &builder,
-                                               OwnedResources &resources,
-                                               const VTreeMultiFunctionMappings &mappings,
-                                               const VNode &vnode)>;
+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 =
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 ca648087614..aa0ed527907 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
@@ -1,4 +1,6 @@
 #include "mappings.h"
+#include "builder.h"
+
 #include "FN_multi_functions.h"
 
 namespace FN {
@@ -14,7 +16,6 @@ T &allocate_resource(const char *name, OwnedResources &resources, Args &&... arg
 
 static void INSERT_vector_math(VTreeMFNetworkBuilder &builder,
                                OwnedResources &resources,
-                               const VTreeMultiFunctionMappings &UNUSED(mappings),
                                const VNode &vnode)
 {
   const MultiFunction &fn = allocate_resource<FN::MF_AddFloat3s>("vector math function",
@@ -49,7 +50,6 @@ static const MultiFunction &get_vectorized_function(
 
 static void INSERT_float_math(VTreeMFNetworkBuilder &builder,
                               OwnedResources &resources,
-                              const VTreeMultiFunctionMappings &UNUSED(mappings),
                               const VNode &vnode)
 {
   const MultiFunction &base_fn = allocate_resource<FN::MF_AddFloats>("float math function",
@@ -62,7 +62,6 @@ static void INSERT_float_math(VTreeMFNetworkBuilder &builder,
 
 static void INSERT_combine_vector(VTreeMFNetworkBuilder &builder,
                                   OwnedResources &resources,
-                                  const VTreeMultiFunctionMappings &UNUSED(mappings),
                                   const VNode &vnode)
 {
   const MultiFunction &base_fn = allocate_resource<FN::MF_CombineVector>("combine vector function",
@@ -74,7 +73,6 @@ static void INSERT_combine_vector(VTreeMFNetworkBuilder &builder,
 
 static void INSERT_separate_vector(VTreeMFNetworkBuilder &builder,
                                    OwnedResources &resources,
-                                   const VTreeMultiFunctionMappings &UNUSED(mappings),
                                    const VNode &vnode)
 {
   const MultiFunction &base_fn = allocate_resource<FN::MF_SeparateVector>(
@@ -86,11 +84,10 @@ static void INSERT_separate_vector(VTreeMFNetworkBuilder &builder,
 
 static void INSERT_list_length(VTreeMFNetworkBuilder &builder,
                                OwnedResources &resources,
-                               const VTreeMultiFunctionMappings &mappings,
                                const VNode &vnode)
 {
   char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 0);
-  const CPPType &type = *mappings.cpp_type_by_type_name.lookup(type_name);
+  const CPPType &type = builder.cpp_type_by_name(type_name);
   MEM_freeN(type_name);
 
   const MultiFunction &fn = allocate_resource<FN::MF_ListLength>(
@@ -100,11 +97,10 @@ static void INSERT_list_length(VTreeMFNetworkBuilder &builder,
 
 static void INSERT_get_list_element(VTreeMFNetworkBuilder &builder,
                                     OwnedResources &resources,
-                                    const VTreeMultiFunctionMappings &mappings,
                                     const VNode &vnode)
 {
   char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 0);
-  const CPPType &type = *mappings.cpp_type_by_type_name.lookup(type_name);
+  const CPPType &type = builder.cpp_type_by_name(type_name);
   MEM_freeN(type_name);
 
   const MultiFunction &fn = allocate_resource<FN::MF_GetListElement>(
@@ -153,11 +149,10 @@ static MFBuilderOutputSocket &build_pack_list_node(VTreeMFNetworkBuilder &builde
 
 static void INSERT_pack_list(VTreeMFNetworkBuilder &builder,
                              OwnedResources &resources,
-                             const VTreeMultiFunctionMappings &mappings,
                              const VNode &vnode)
 {
   char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 0);
-  const CPPType &type = *mappings.cpp_type_by_type_name.lookup(type_name);
+  const CPPType &type = builder.cpp_type_by_name(type_name);
   MEM_freeN(type_name);
 
   MFBuilderOutputSocket &packed_list_socket = build_pack_list_node(
@@ -167,7 +162,6 @@ static void INSERT_pack_list(VTreeMFNetworkBuilder &builder,
 
 static void INSERT_object_location(VTreeMFNetworkBuilder &builder,
                                    OwnedResources &resources,
-                                   const VTreeMultiFunctionMappings &UNUSED(mappings),
                                    const VNode &vnode)
 {
   const MultiFunction &fn = allocate_resource<FN::MF_ObjectWorldLocation>(
@@ -177,7 +171,6 @@ static void INSERT_object_location(VTreeMFNetworkBuilder &builder,
 
 static void INSERT_text_length(VTreeMFNetworkBuilder &builder,
                                OwnedResources &resources,
-                               const VTreeMultiFunctionMappings &UNUSED(mappings),
                                const VNode &vnode)
 {
   const MultiFunction &fn = allocate_resource<FN::MF_TextLength>("text length function",
diff --git a/source/blender/f

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list