Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2020-02-23 19:37:15 +0300
committerJacques Lucke <jacques@blender.org>2020-02-23 19:37:15 +0300
commitb92b1a4fe56338c7a66dda4f27426c10e070b11c (patch)
tree4c95a7573cd60c6b445f1afdc122749162414a7a /source
parent096856a700b795ac3ffb0a6d86317fd0c57b2a11 (diff)
Use new LinearAllocatedVector in various places
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_virtual_node_tree.h13
-rw-r--r--source/blender/blenkernel/intern/virtual_node_tree.cc14
-rw-r--r--source/blender/functions/FN_multi_function_network.h4
-rw-r--r--source/blender/functions/FN_node_tree.h14
-rw-r--r--source/blender/functions/intern/multi_function_network.cc4
-rw-r--r--source/blender/functions/intern/node_tree.cc28
6 files changed, 42 insertions, 35 deletions
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 @@ BLI_NOINLINE void FunctionTree::expand_group__relink_outputs(const VirtualNodeTr
inside_connected->m_linked_sockets.remove_first_occurrence_and_reorder(&inside_interface);
for (FInputSocket *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);
}
}
@@ -249,8 +249,8 @@ BLI_NOINLINE void FunctionTree::expand_group__relink_outputs(const VirtualNodeTr
inside_connected->m_linked_sockets.remove_first_occurrence_and_reorder(&inside_interface);
for (FInputSocket *outside_connected : outside_interface.m_linked_sockets) {
- inside_connected->m_linked_sockets.append(outside_connected);
- outside_connected->m_linked_group_inputs.append(inside_connected);
+ inside_connected->m_linked_sockets.append(outside_connected, m_allocator);
+ outside_connected->m_linked_group_inputs.append(inside_connected, m_allocator);
}
}
@@ -280,8 +280,8 @@ BLI_NOINLINE void FunctionTree::insert_linked_nodes_for_vtree_in_id_order(
FInputSocket *to_socket = (FInputSocket *)sockets_map[to_vsocket->id()];
for (const VOutputSocket *from_vsocket : to_vsocket->linked_sockets()) {
FOutputSocket *from_socket = (FOutputSocket *)sockets_map[from_vsocket->id()];
- to_socket->m_linked_sockets.append(from_socket);
- from_socket->m_linked_sockets.append(to_socket);
+ to_socket->m_linked_sockets.append(from_socket, m_allocator);
+ from_socket->m_linked_sockets.append(to_socket, m_allocator);
}
}
}
@@ -303,7 +303,7 @@ BLI_NOINLINE FNode &FunctionTree::create_node(const VNode &vnode,
new_socket.m_id = UINT32_MAX;
new_socket.m_is_input = true;
- new_node.m_inputs.append_and_get_index(&new_socket);
+ new_node.m_inputs.append_and_get_index(&new_socket, m_allocator);
sockets_map[vsocket->id()] = &new_socket;
}
@@ -314,7 +314,7 @@ BLI_NOINLINE FNode &FunctionTree::create_node(const VNode &vnode,
new_socket.m_id = UINT32_MAX;
new_socket.m_is_input = false;
- new_node.m_outputs.append_and_get_index(&new_socket);
+ new_node.m_outputs.append_and_get_index(&new_socket, m_allocator);
sockets_map[vsocket->id()] = &new_socket;
}