[Bf-blender-cvs] [b92b1a4fe56] functions: Use new LinearAllocatedVector in various places

Jacques Lucke noreply at git.blender.org
Sun Feb 23 17:38:47 CET 2020


Commit: b92b1a4fe56338c7a66dda4f27426c10e070b11c
Author: Jacques Lucke
Date:   Sun Feb 23 17:37:15 2020 +0100
Branches: functions
https://developer.blender.org/rBb92b1a4fe56338c7a66dda4f27426c10e070b11c

Use new LinearAllocatedVector in various places

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

M	source/blender/blenkernel/BKE_virtual_node_tree.h
M	source/blender/blenkernel/intern/virtual_node_tree.cc
M	source/blender/functions/FN_multi_function_network.h
M	source/blender/functions/FN_node_tree.h
M	source/blender/functions/intern/multi_function_network.cc
M	source/blender/functions/intern/node_tree.cc

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

diff --git a/source/blender/blenkernel/BKE_virtual_node_tree.h b/source/blender/blenkernel/BKE_virtual_node_tree.h
index d253e149cb8..86d96e569f6 100644
--- a/source/blender/blenkernel/BKE_virtual_node_tree.h
+++ b/source/blender/blenkernel/BKE_virtual_node_tree.h
@@ -8,6 +8,7 @@
 #include "BLI_string_map.h"
 #include "BLI_resource_collector.h"
 #include "BLI_string_multi_map.h"
+#include "BLI_linear_allocated_vector.h"
 
 #include "DNA_node_types.h"
 
@@ -17,6 +18,7 @@ namespace BKE {
 
 using BLI::Array;
 using BLI::ArrayRef;
+using BLI::LinearAllocatedVector;
 using BLI::ResourceCollector;
 using BLI::StringMap;
 using BLI::StringMultiMap;
@@ -35,8 +37,8 @@ class VirtualNodeTree;
 
 class VSocket : BLI::NonCopyable, BLI::NonMovable {
  protected:
-  Vector<VSocket *> m_linked_sockets;
-  Vector<VSocket *> m_directly_linked_sockets;
+  LinearAllocatedVector<VSocket *> m_linked_sockets;
+  LinearAllocatedVector<VSocket *> m_directly_linked_sockets;
   VNode *m_node;
   bool m_is_input;
   bNodeSocket *m_bsocket;
@@ -89,8 +91,8 @@ class VOutputSocket final : public VSocket {
 class VNode : BLI::NonCopyable, BLI::NonMovable {
  private:
   VirtualNodeTree *m_vtree;
-  Vector<VInputSocket *> m_inputs;
-  Vector<VOutputSocket *> m_outputs;
+  LinearAllocatedVector<VInputSocket *> m_inputs;
+  LinearAllocatedVector<VOutputSocket *> m_outputs;
   bNode *m_bnode;
   uint m_id;
   PointerRNA m_rna;
@@ -146,7 +148,8 @@ class VirtualNodeTree : BLI::NonCopyable, BLI::NonMovable {
   bNodeTree *btree() const;
 
  private:
-  void find_targets_skipping_reroutes(VOutputSocket &vsocket, Vector<VSocket *> &r_targets);
+  void find_targets_skipping_reroutes(VOutputSocket &vsocket,
+                                      LinearAllocatedVector<VSocket *> &r_targets);
 };
 
 /* Virtual Node Tree inline functions
diff --git a/source/blender/blenkernel/intern/virtual_node_tree.cc b/source/blender/blenkernel/intern/virtual_node_tree.cc
index 7fb60c8510e..81698d0e524 100644
--- a/source/blender/blenkernel/intern/virtual_node_tree.cc
+++ b/source/blender/blenkernel/intern/virtual_node_tree.cc
@@ -35,7 +35,7 @@ VirtualNodeTree::VirtualNodeTree(bNodeTree *btree) : m_btree(btree)
       VInputSocket &vsocket = *vtree.m_allocator.construct<VInputSocket>();
 
       vsocket.m_node = &vnode;
-      vsocket.m_index = vnode.m_inputs.append_and_get_index(&vsocket);
+      vsocket.m_index = vnode.m_inputs.append_and_get_index(&vsocket, m_allocator);
       vsocket.m_is_input = true;
       vsocket.m_bsocket = bsocket;
       vsocket.m_id = vtree.m_sockets_by_id.append_and_get_index(&vsocket);
@@ -48,7 +48,7 @@ VirtualNodeTree::VirtualNodeTree(bNodeTree *btree) : m_btree(btree)
       VOutputSocket &vsocket = *vtree.m_allocator.construct<VOutputSocket>();
 
       vsocket.m_node = &vnode;
-      vsocket.m_index = vnode.m_outputs.append_and_get_index(&vsocket);
+      vsocket.m_index = vnode.m_outputs.append_and_get_index(&vsocket, m_allocator);
       vsocket.m_is_input = false;
       vsocket.m_bsocket = bsocket;
       vsocket.m_id = vtree.m_sockets_by_id.append_and_get_index(&vsocket);
@@ -68,15 +68,15 @@ VirtualNodeTree::VirtualNodeTree(bNodeTree *btree) : m_btree(btree)
         *node_mapping.lookup(blink->tonode)
              ->m_inputs[BSocketList(blink->tonode->inputs).index_of(blink->tosock)];
 
-    from_vsocket.m_directly_linked_sockets.append(&to_vsocket);
-    to_vsocket.m_directly_linked_sockets.append(&from_vsocket);
+    from_vsocket.m_directly_linked_sockets.append(&to_vsocket, m_allocator);
+    to_vsocket.m_directly_linked_sockets.append(&from_vsocket, m_allocator);
   }
 
   for (VOutputSocket *socket : vtree.m_output_sockets) {
     if (!is_reroute_node(socket->node())) {
       vtree.find_targets_skipping_reroutes(*socket, socket->m_linked_sockets);
       for (VSocket *target : socket->m_linked_sockets) {
-        target->m_linked_sockets.append(socket);
+        target->m_linked_sockets.append(socket, m_allocator);
       }
     }
   }
@@ -87,14 +87,14 @@ VirtualNodeTree::VirtualNodeTree(bNodeTree *btree) : m_btree(btree)
 }
 
 void VirtualNodeTree::find_targets_skipping_reroutes(VOutputSocket &vsocket,
-                                                     Vector<VSocket *> &r_targets)
+                                                     LinearAllocatedVector<VSocket *> &r_targets)
 {
   for (VSocket *direct_target : vsocket.m_directly_linked_sockets) {
     if (is_reroute_node(*direct_target->m_node)) {
       this->find_targets_skipping_reroutes(*direct_target->m_node->m_outputs[0], r_targets);
     }
     else if (!r_targets.contains(direct_target)) {
-      r_targets.append(direct_target);
+      r_targets.append(direct_target, m_allocator);
     }
   }
 }
diff --git a/source/blender/functions/FN_multi_function_network.h b/source/blender/functions/FN_multi_function_network.h
index c6873cb9569..810fbb6340b 100644
--- a/source/blender/functions/FN_multi_function_network.h
+++ b/source/blender/functions/FN_multi_function_network.h
@@ -8,10 +8,12 @@
 #include "BLI_set.h"
 #include "BLI_vector_set.h"
 #include "BLI_map.h"
+#include "BLI_linear_allocated_vector.h"
 
 namespace FN {
 
 using BLI::Array;
+using BLI::LinearAllocatedVector;
 using BLI::Map;
 using BLI::Optional;
 using BLI::Set;
@@ -127,7 +129,7 @@ class MFBuilderInputSocket : public MFBuilderSocket {
 
 class MFBuilderOutputSocket : public MFBuilderSocket {
  private:
-  Vector<MFBuilderInputSocket *> m_targets;
+  LinearAllocatedVector<MFBuilderInputSocket *> m_targets;
 
   friend MFNetworkBuilder;
 
diff --git a/source/blender/functions/FN_node_tree.h b/source/blender/functions/FN_node_tree.h
index 8161c6df95a..563e664a060 100644
--- a/source/blender/functions/FN_node_tree.h
+++ b/source/blender/functions/FN_node_tree.h
@@ -5,6 +5,7 @@
 
 #include "BLI_map.h"
 #include "BLI_multi_map.h"
+#include "BLI_linear_allocated_vector.h"
 
 namespace FN {
 
@@ -14,6 +15,7 @@ using BKE::VNode;
 using BKE::VOutputSocket;
 using BKE::VSocket;
 using BLI::ArrayRef;
+using BLI::LinearAllocatedVector;
 using BLI::Map;
 using BLI::MultiMap;
 using BLI::MutableArrayRef;
@@ -61,8 +63,8 @@ class FSocket : BLI::NonCopyable, BLI::NonMovable {
 
 class FInputSocket : public FSocket {
  private:
-  Vector<FOutputSocket *> m_linked_sockets;
-  Vector<FGroupInput *> m_linked_group_inputs;
+  LinearAllocatedVector<FOutputSocket *> m_linked_sockets;
+  LinearAllocatedVector<FGroupInput *> m_linked_group_inputs;
 
   friend FunctionTree;
 
@@ -76,7 +78,7 @@ class FInputSocket : public FSocket {
 
 class FOutputSocket : public FSocket {
  private:
-  Vector<FInputSocket *> m_linked_sockets;
+  LinearAllocatedVector<FInputSocket *> m_linked_sockets;
 
   friend FunctionTree;
 
@@ -89,7 +91,7 @@ class FGroupInput : BLI::NonCopyable, BLI::NonMovable {
  private:
   const VInputSocket *m_vsocket;
   FParentNode *m_parent;
-  Vector<FInputSocket *> m_linked_sockets;
+  LinearAllocatedVector<FInputSocket *> m_linked_sockets;
   uint m_id;
 
   friend FunctionTree;
@@ -106,8 +108,8 @@ class FNode : BLI::NonCopyable, BLI::NonMovable {
   const VNode *m_vnode;
   FParentNode *m_parent;
 
-  Vector<FInputSocket *> m_inputs;
-  Vector<FOutputSocket *> m_outputs;
+  LinearAllocatedVector<FInputSocket *> m_inputs;
+  LinearAllocatedVector<FOutputSocket *> m_outputs;
 
   /* Uniquely identifies this node in the inlined node tree. */
   uint m_id;
diff --git a/source/blender/functions/intern/multi_function_network.cc b/source/blender/functions/intern/multi_function_network.cc
index 883ff4f70d2..77f478a24b8 100644
--- a/source/blender/functions/intern/multi_function_network.cc
+++ b/source/blender/functions/intern/multi_function_network.cc
@@ -173,7 +173,7 @@ void MFNetworkBuilder::add_link(MFBuilderOutputSocket &from, MFBuilderInputSocke
   BLI_assert(to.origin() == nullptr);
   BLI_assert(from.m_node->m_network == to.m_node->m_network);
   BLI_assert(from.data_type() == to.data_type());
-  from.m_targets.append(&to);
+  from.m_targets.append(&to, m_allocator);
   to.m_origin = &from;
 }
 
@@ -193,7 +193,7 @@ void MFNetworkBuilder::replace_origin(MFBuilderOutputSocket &old_origin,
   for (MFBuilderInputSocket *target : old_origin.targets()) {
     BLI_assert(target->m_origin != nullptr);
     target->m_origin = &new_origin;
-    new_origin.m_targets.append(target);
+    new_origin.m_targets.append(target, m_allocator);
   }
   old_origin.m_targets.clear();
 }
diff --git a/source/blender/functions/intern/node_tree.cc b/source/blender/functions/intern/node_tree.cc
index d84acb5ad8a..75517784ea0 100644
--- a/source/blender/functions/intern/node_tree.cc
+++ b/source/blender/functions/intern/node_tree.cc
@@ -172,8 +172,8 @@ BLI_NOINLINE void FunctionTree::expand_group__group_inputs_for_unlinked_inputs(
       group_input.m_vsocket = &input_socket->m_vsocket->as_input();
       group_input.m_parent = group_node.m_parent;
 
-      group_input.m_linked_sockets.append(input_socket);
-      input_socket->m_linked_group_inputs.append(&group_input);
+      group_input.m_linked_sockets.append(input_socket, m_allocator);
+      input_socket->m_linked_group_inputs.append(&group_input, m_allocator);
     }
   }
 }
@@ -205,13 +205,13 @@ BLI_NOINLINE void FunctionTree::expand_group__relink_inputs(const VirtualNodeTre
       inside_connected->m_linked_sockets.remove_first_occurrence_and_reorder(&inside_interface);
 
       for (FOutputSocket *outside_connected : outside_interface.m_linked_sockets) {
-        inside_connected->m_linked_sockets.append(outside_connected);
-        outside_connected->m_linked_sockets.append(inside_connected);
+        inside_connected->m_linked_sockets.append(outside_connected, m_allocator);
+        outside_connected->m_linked_sockets.append(inside_connected, m_allocator);
       }
 
       for (FGroupInput *outside_connected : outside_interface.m_linked_group_inputs) {
-        inside_connected->m_linked_group_inputs.append(outside_connected);
-        outside_connected->m_linked_sockets.append(inside_connected);
+        inside_connected->m_linked_group_inputs.append(outside_connected, m_allocator);
+        outside_connected->m_linked_sockets.append(inside_connected, m_allocator);
       }
     }
 
@@ -240,8 +240,8 @@ 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list