[Bf-blender-cvs] [44320e9e08a] functions: remove unnecessarily complex code
Jacques Lucke
noreply at git.blender.org
Thu Nov 14 14:43:22 CET 2019
Commit: 44320e9e08a8e4153340cf9952a086b5e63e2e26
Author: Jacques Lucke
Date: Thu Nov 14 14:43:16 2019 +0100
Branches: functions
https://developer.blender.org/rB44320e9e08a8e4153340cf9952a086b5e63e2e26
remove unnecessarily complex code
===================================================================
M source/blender/blenkernel/BKE_virtual_node_tree.h
M source/blender/blenkernel/intern/virtual_node_tree.cc
M source/blender/blenlib/BLI_string_map.h
M source/blender/functions/intern/vtree_multi_function_network/mappings_nodes.cc
M source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
M source/blender/modifiers/intern/MOD_functionpoints_cxx.cc
M source/blender/simulations/bparticles/node_frontend.cpp
===================================================================
diff --git a/source/blender/blenkernel/BKE_virtual_node_tree.h b/source/blender/blenkernel/BKE_virtual_node_tree.h
index 331abeee820..c041cc48637 100644
--- a/source/blender/blenkernel/BKE_virtual_node_tree.h
+++ b/source/blender/blenkernel/BKE_virtual_node_tree.h
@@ -1,5 +1,5 @@
-#ifndef __BKE_VIRTUAL_NODE_TREE_CXX_H__
-#define __BKE_VIRTUAL_NODE_TREE_CXX_H__
+#ifndef __BKE_VIRTUAL_NODE_TREE_H__
+#define __BKE_VIRTUAL_NODE_TREE_H__
#include "BLI_vector.h"
#include "BLI_utility_mixins.h"
@@ -22,112 +22,12 @@ using BLI::StringRef;
using BLI::StringRefNull;
using BLI::Vector;
-class VBSocket;
-class VBInputSocket;
-class VBOutputSocket;
-class VBNode;
-class VBRealNode;
-class VirtualNodeTreeBuilder;
-
class VSocket;
class VInputSocket;
class VOutputSocket;
class VNode;
class VirtualNodeTree;
-/* Virtual Node Tree Builder declarations
- *********************************************/
-
-class VBSocket : BLI::NonCopyable, BLI::NonMovable {
- protected:
- VBNode *m_node;
- bool m_is_input;
- bNodeSocket *m_bsocket;
- bNodeTree *m_btree;
- uint m_id;
- uint m_index;
-
- friend VirtualNodeTreeBuilder;
-
- public:
- bNodeSocket *bsocket();
- bNodeTree *btree();
-
- VBNode &node();
-
- bool is_input();
- bool is_output();
-
- VBInputSocket &as_input();
- VBOutputSocket &as_output();
-
- uint id();
-};
-
-class VBInputSocket final : public VBSocket {
- public:
-};
-
-class VBOutputSocket final : public VBSocket {
- public:
-};
-
-class VBNode : BLI::NonCopyable, BLI::NonMovable {
- protected:
- VirtualNodeTreeBuilder *m_vtree;
- Vector<VBInputSocket *> m_inputs;
- Vector<VBOutputSocket *> m_outputs;
- bNode *m_bnode;
- bNodeTree *m_btree;
- uint m_id;
-
- friend VirtualNodeTreeBuilder;
-
- public:
- VirtualNodeTreeBuilder &vtree();
- bNode *bnode();
- bNodeTree *btree();
- uint id();
-
- ArrayRef<VBInputSocket *> inputs();
- ArrayRef<VBOutputSocket *> outputs();
-};
-
-class VBLink : BLI::NonCopyable, BLI::NonMovable {
- private:
- VBOutputSocket *m_from;
- VBInputSocket *m_to;
-
- friend VirtualNodeTreeBuilder;
-};
-
-class VirtualNodeTreeBuilder : BLI::NonCopyable, BLI::NonMovable {
- private:
- BLI::MonotonicAllocator<> m_allocator;
- Vector<VBNode *> m_nodes_by_id;
- Vector<VBSocket *> m_sockets_by_id;
- Vector<VBInputSocket *> m_input_sockets;
- Vector<VBOutputSocket *> m_output_sockets;
- Vector<VBLink *> m_links;
-
- public:
- ~VirtualNodeTreeBuilder();
-
- VBNode &add_node(bNodeTree *btree, bNode *bnode);
- void add_link(VBOutputSocket &from, VBInputSocket &to);
-
- void add_all_of_node_tree(bNodeTree *btree);
-
- std::unique_ptr<VirtualNodeTree> build();
-
- private:
- void build__copy_nodes_and_sockets(VirtualNodeTree &vtree);
- void build__copy_direct_links(VirtualNodeTree &vtree);
- void build__setup_links_skipping_reroutes(VirtualNodeTree &vtree);
- void build__find_targets_skipping_reroutes(VOutputSocket &vsocket, Vector<VSocket *> &r_targets);
- void build__create_idname_to_nodes_mapping(VirtualNodeTree &vtree);
-};
-
/* Virtual Node Tree declarations
******************************************/
@@ -143,7 +43,7 @@ class VSocket : BLI::NonCopyable, BLI::NonMovable {
PointerRNA m_rna;
uint m_index;
- friend VirtualNodeTreeBuilder;
+ friend VirtualNodeTree;
public:
ArrayRef<const VSocket *> linked_sockets() const;
@@ -192,7 +92,7 @@ class VNode : BLI::NonCopyable, BLI::NonMovable {
uint m_id;
PointerRNA m_rna;
- friend VirtualNodeTreeBuilder;
+ friend VirtualNodeTree;
public:
ArrayRef<const VInputSocket *> inputs() const;
@@ -215,17 +115,19 @@ class VNode : BLI::NonCopyable, BLI::NonMovable {
class VirtualNodeTree : BLI::NonCopyable, BLI::NonMovable {
private:
BLI::MonotonicAllocator<> m_allocator;
- Array<VNode *> m_nodes_by_id;
- Array<VSocket *> m_sockets_by_id;
+ Vector<VNode *> m_nodes_by_id;
+ Vector<VSocket *> m_sockets_by_id;
Vector<VInputSocket *> m_input_sockets;
Vector<VOutputSocket *> m_output_sockets;
StringMap<Vector<VNode *>> m_nodes_by_idname;
- friend VirtualNodeTreeBuilder;
+ VirtualNodeTree() = default;
public:
~VirtualNodeTree();
+ static std::unique_ptr<VirtualNodeTree> FromBTree(bNodeTree *btree);
+
ArrayRef<const VNode *> nodes() const;
ArrayRef<const VNode *> nodes_with_idname(StringRef idname) const;
uint socket_count() const;
@@ -234,82 +136,10 @@ class VirtualNodeTree : BLI::NonCopyable, BLI::NonMovable {
ArrayRef<const VInputSocket *> all_input_sockets() const;
const VSocket &socket_by_id(uint id) const;
-};
-
-/* Virtual Node Tree Builder inline functions
- ****************************************************/
-
-inline VBNode &VBSocket::node()
-{
- return *m_node;
-}
-
-inline bool VBSocket::is_input()
-{
- return m_is_input;
-}
-
-inline bool VBSocket::is_output()
-{
- return !m_is_input;
-}
-
-inline bNodeSocket *VBSocket::bsocket()
-{
- return m_bsocket;
-}
-
-inline bNodeTree *VBSocket::btree()
-{
- return m_btree;
-}
-
-inline uint VBSocket::id()
-{
- return m_id;
-}
-
-inline VBInputSocket &VBSocket::as_input()
-{
- BLI_assert(this->is_input());
- return *(VBInputSocket *)this;
-}
-inline VBOutputSocket &VBSocket::as_output()
-{
- BLI_assert(this->is_output());
- return *(VBOutputSocket *)this;
-}
-
-inline ArrayRef<VBInputSocket *> VBNode::inputs()
-{
- return m_inputs;
-}
-
-inline ArrayRef<VBOutputSocket *> VBNode::outputs()
-{
- return m_outputs;
-}
-
-inline VirtualNodeTreeBuilder &VBNode::vtree()
-{
- return *m_vtree;
-}
-
-inline bNode *VBNode::bnode()
-{
- return m_bnode;
-}
-
-inline bNodeTree *VBNode::btree()
-{
- return m_btree;
-}
-
-inline uint VBNode::id()
-{
- return m_id;
-}
+ private:
+ void find_targets_skipping_reroutes(VOutputSocket &vsocket, Vector<VSocket *> &r_targets);
+};
/* Virtual Node Tree inline functions
****************************************************/
@@ -508,4 +338,4 @@ inline const VSocket &VirtualNodeTree::socket_by_id(uint id) const
} // namespace BKE
-#endif /* __BKE_VIRTUAL_NODE_TREE_CXX_H__ */
+#endif /* __BKE_VIRTUAL_NODE_TREE_H__ */
diff --git a/source/blender/blenkernel/intern/virtual_node_tree.cc b/source/blender/blenkernel/intern/virtual_node_tree.cc
index 5235c70b77e..426232274f6 100644
--- a/source/blender/blenkernel/intern/virtual_node_tree.cc
+++ b/source/blender/blenkernel/intern/virtual_node_tree.cc
@@ -10,205 +10,107 @@ using BSocketList = BLI::IntrusiveListBaseWrapper<bNodeSocket>;
using BNodeList = BLI::IntrusiveListBaseWrapper<bNode>;
using BLinkList = BLI::IntrusiveListBaseWrapper<bNodeLink>;
-VirtualNodeTreeBuilder::~VirtualNodeTreeBuilder()
+static bool is_reroute_node(const VNode &vnode)
{
- for (VBNode *node : m_nodes_by_id) {
- node->~VBNode();
- }
- for (VBInputSocket *socket : m_input_sockets) {
- socket->~VBInputSocket();
- }
- for (VBOutputSocket *socket : m_output_sockets) {
- socket->~VBOutputSocket();
- }
- for (VBLink *link : m_links) {
- link->~VBLink();
- }
+ return vnode.idname() == "NodeReroute";
}
-VBNode &VirtualNodeTreeBuilder::add_node(bNodeTree *btree, bNode *bnode)
+std::unique_ptr<VirtualNodeTree> VirtualNodeTree::FromBTree(bNodeTree *btree)
{
- VBNode &node = *m_allocator.construct<VBNode>().release();
- node.m_vtree = this;
- node.m_id = m_nodes_by_id.size();
- node.m_btree = btree;
- node.m_bnode = bnode;
-
- for (bNodeSocket *bsocket : BSocketList(bnode->inputs)) {
- VBInputSocket &socket = *m_allocator.construct<VBInputSocket>().release();
- socket.m_node = &node;
- socket.m_is_input = true;
- socket.m_id = m_sockets_by_id.size();
- socket.m_btree = btree;
- socket.m_bsocket = bsocket;
- socket.m_index = node.m_inputs.size();
-
- m_input_sockets.append(&socket);
- m_sockets_by_id.append(&socket);
- node.m_inputs.append(&socket);
- }
+ BLI_assert(btree != nullptr);
- for (bNodeSocket *bsocket : BSocketList(bnode->outputs)) {
- VBOutputSocket &socket = *m_allocator.construct<VBOutputSocket>().release();
- socket.m_node = &node;
- socket.m_is_input = false;
- socket.m_id = m_sockets_by_id.size();
- socket.m_btree = btree;
- socket.m_bsocket = bsocket;
- socket.m_index = node.m_outputs.size();
-
- m_output_sockets.append(&socket);
- m_sockets_by_id.append(&socket);
- node.m_outputs.append(&socket);
- }
+ VirtualNodeTree *vtree_ptr = new VirtualNodeTree();
+ VirtualNodeTree &vtree = *vtree_ptr;
- m_nodes_by_id.append(&node);
- return node;
-}
+ Map<bNode *, VNode *> node_mapping;
-void VirtualNodeTreeBuilder::add_link(VBOutputSocket &from, VBInputSocket &to)
-{
- VBLink &link = *m_allocator.construct<VBLink>().release();
- link.m_from = &from;
- link.m_to = &to;
- m_links.append(&link);
-}
-
-void VirtualNodeTreeBuilder::add_all_of_node_tree(bNodeTree *btree)
-{
- Map<bNode *, VBNode *> node_mapping;
for (bNode *bnode : BNodeList(btree->nodes)) {
- VBNode &vnode = this->add_node(btree, bnode);
- node_mapping.add_new(bnode, &vnode);
- }
-
- for (bNodeLink *blink : BLinkList(btree->links)) {
- VBNode &from_vnode = *node_mapping.lookup(blink->fromnode);
- VBNode &to_vnode = *node_mapping.lookup(blink->tonode);
-
- uint from_socket_index = BSocketList(blink->fromnode->outputs).index_of(blink->fromsock);
- uint to_socket_index = BSocketList(blink->tonode->inputs).index_of(blink->tosock);
-
- VBOutputSocket &from_socket = *from_vnode.outputs()[from_socket_index];
- VBInputSocket &to_socket = *to_vnode.inputs()[to_socket_index];
-
- this->add_link(from_socket, to_socket);
- }
-}
-
-std::unique_ptr<VirtualNodeTree> VirtualNodeTreeBuilder::build()
-{
- VirtualNodeTree *vtree = new VirtualNodeTree();
-
- vtree->m_nodes_by_id = Array<VNode *>(m_nodes_by_id.size());
- vtree->m_sockets_by_id = Array<VSocket *>(m_sockets_by_id.size());
-
- this->build__copy_nodes_and_sockets(*vtree);
- this->build__copy_direct_links(*vtree);
- this->build__setup_links_skipping_reroutes(*vtree);
- this->build__create_idname_to_nodes_mapping(*vtree);
-
- return std::unique_ptr<VirtualNodeTree>(vtree);
-}
-
-void VirtualNodeTreeBuilder::build__copy_nodes_and_sockets(VirtualNodeTree &vtree)
-{
- for (VBNode *vbnode : m_nodes_by_
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list