[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