diff options
author | Jacques Lucke <jacques@blender.org> | 2020-02-23 19:37:15 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-02-23 19:37:15 +0300 |
commit | b92b1a4fe56338c7a66dda4f27426c10e070b11c (patch) | |
tree | 4c95a7573cd60c6b445f1afdc122749162414a7a /source | |
parent | 096856a700b795ac3ffb0a6d86317fd0c57b2a11 (diff) |
Use new LinearAllocatedVector in various places
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_virtual_node_tree.h | 13 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/virtual_node_tree.cc | 14 | ||||
-rw-r--r-- | source/blender/functions/FN_multi_function_network.h | 4 | ||||
-rw-r--r-- | source/blender/functions/FN_node_tree.h | 14 | ||||
-rw-r--r-- | source/blender/functions/intern/multi_function_network.cc | 4 | ||||
-rw-r--r-- | source/blender/functions/intern/node_tree.cc | 28 |
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; } |