[Bf-blender-cvs] [73a709844b5] functions-experimental-refactor: make VirtualNodeTree const in many places

Jacques Lucke noreply at git.blender.org
Tue Oct 22 12:52:03 CEST 2019


Commit: 73a709844b535adf6fd88fc7adec4cd1e6bf4d20
Author: Jacques Lucke
Date:   Tue Oct 22 12:51:46 2019 +0200
Branches: functions-experimental-refactor
https://developer.blender.org/rB73a709844b535adf6fd88fc7adec4cd1e6bf4d20

make VirtualNodeTree const in many places

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

M	source/blender/blenkernel/BKE_virtual_node_tree_cxx.h
M	source/blender/blenkernel/intern/node_tree.cpp
M	source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
M	source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
M	source/blender/functions/frontends/data_flow_nodes/graph_generation.hpp
M	source/blender/functions/frontends/data_flow_nodes/mappings.cpp
M	source/blender/functions/frontends/data_flow_nodes/mappings.hpp
M	source/blender/functions/frontends/data_flow_nodes/mappings/node_inserters.cpp
M	source/blender/functions/frontends/data_flow_nodes/unlinked_input_groupers.cpp
M	source/blender/functions/frontends/data_flow_nodes/unlinked_input_groupers.hpp
M	source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.cpp
M	source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.hpp
M	source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.cpp
M	source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.hpp
M	source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.cpp
M	source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.hpp
M	source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
M	source/blender/simulations/bparticles/node_frontend.cpp
M	source/blender/simulations/bparticles/particle_function_builder.cpp
M	source/blender/simulations/bparticles/particle_function_builder.hpp

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

diff --git a/source/blender/blenkernel/BKE_virtual_node_tree_cxx.h b/source/blender/blenkernel/BKE_virtual_node_tree_cxx.h
index 705d8c392bd..2b4866f9f9d 100644
--- a/source/blender/blenkernel/BKE_virtual_node_tree_cxx.h
+++ b/source/blender/blenkernel/BKE_virtual_node_tree_cxx.h
@@ -60,7 +60,7 @@ class VirtualNodeTree {
   bool m_frozen = false;
   Vector<VirtualNode *> m_nodes;
   Vector<VirtualLink *> m_links;
-  Vector<VirtualSocket *> m_inputs_with_links;
+  Vector<const VirtualSocket *> m_inputs_with_links;
   MultiMap<std::string, VirtualNode *> m_nodes_by_idname;
   uint m_socket_counter = 0;
   MonotonicAllocator<> m_allocator;
@@ -68,33 +68,33 @@ class VirtualNodeTree {
  public:
   void add_all_of_tree(bNodeTree *btree);
   VirtualNode *add_bnode(bNodeTree *btree, bNode *bnode);
-  void add_link(VirtualSocket *a, VirtualSocket *b);
+  void add_link(const VirtualSocket &a, const VirtualSocket &b);
 
   void freeze_and_index();
 
-  ArrayRef<VirtualNode *> nodes() const
+  ArrayRef<const VirtualNode *> nodes() const
   {
-    return m_nodes;
+    return ArrayRef<VirtualNode *>(m_nodes);
   }
 
-  ArrayRef<VirtualLink *> links()
+  ArrayRef<const VirtualLink *> links() const
   {
-    return m_links;
+    return ArrayRef<VirtualLink *>(m_links);
   }
 
-  ArrayRef<VirtualSocket *> inputs_with_links()
+  ArrayRef<const VirtualSocket *> inputs_with_links() const
   {
     BLI_assert(m_frozen);
-    return m_inputs_with_links;
+    return ArrayRef<const VirtualSocket *>(m_inputs_with_links);
   }
 
-  ArrayRef<VirtualNode *> nodes_with_idname(StringRef idname)
+  ArrayRef<const VirtualNode *> nodes_with_idname(StringRef idname) const
   {
     BLI_assert(m_frozen);
     return m_nodes_by_idname.lookup_default(idname);
   }
 
-  bool is_frozen()
+  bool is_frozen() const
   {
     return m_frozen;
   }
@@ -122,52 +122,52 @@ class VirtualNode {
   MutableArrayRef<VirtualSocket *> m_outputs;
 
  public:
-  ArrayRef<VirtualSocket *> inputs() const
+  ArrayRef<const VirtualSocket *> inputs() const
   {
-    return m_inputs;
+    return m_inputs.as_ref();
   }
 
-  ArrayRef<VirtualSocket *> outputs() const
+  ArrayRef<const VirtualSocket *> outputs() const
   {
-    return m_outputs;
+    return m_outputs.as_ref();
   }
 
-  VirtualSocket *input(uint index)
+  const VirtualSocket &input(uint index) const
   {
-    return m_inputs[index];
+    return *m_inputs[index];
   }
 
-  VirtualSocket *output(uint index)
+  const VirtualSocket &output(uint index) const
   {
-    return m_outputs[index];
+    return *m_outputs[index];
   }
 
-  VirtualSocket *input(uint index, StringRef expected_name);
-  VirtualSocket *output(uint index, StringRef expected_name);
+  const VirtualSocket &input(uint index, StringRef expected_name) const;
+  const VirtualSocket &output(uint index, StringRef expected_name) const;
 
-  bNode *bnode()
+  bNode *bnode() const
   {
     return m_bnode;
   }
 
-  bNodeTree *btree()
+  bNodeTree *btree() const
   {
     return m_btree;
   }
 
-  ID *btree_id()
+  ID *btree_id() const
   {
     return &m_btree->id;
   }
 
-  PointerRNA rna()
+  PointerRNA rna() const
   {
     PointerRNA rna;
     RNA_pointer_create(&m_btree->id, &RNA_Node, m_bnode, &rna);
     return rna;
   }
 
-  StringRefNull name()
+  StringRefNull name() const
   {
     return m_bnode->name;
   }
@@ -187,8 +187,8 @@ class VirtualSocket {
   bNodeSocket *m_bsocket;
   uint m_id;
 
-  MutableArrayRef<VirtualSocket *> m_direct_links;
-  MutableArrayRef<VirtualSocket *> m_links;
+  MutableArrayRef<const VirtualSocket *> m_direct_links;
+  MutableArrayRef<const VirtualSocket *> m_links;
 
  public:
   bool is_input() const
@@ -201,12 +201,12 @@ class VirtualSocket {
     return this->m_bsocket->in_out == SOCK_OUT;
   }
 
-  bNodeSocket *bsocket()
+  bNodeSocket *bsocket() const
   {
     return m_bsocket;
   }
 
-  bNodeTree *btree()
+  bNodeTree *btree() const
   {
     return m_btree;
   }
@@ -216,26 +216,26 @@ class VirtualSocket {
     return m_id;
   }
 
-  ID *btree_id()
+  ID *btree_id() const
   {
     return &m_btree->id;
   }
 
-  VirtualNode *vnode()
+  const VirtualNode &vnode() const
   {
-    return m_vnode;
+    return *m_vnode;
   }
 
-  ArrayRef<VirtualSocket *> direct_links()
+  ArrayRef<const VirtualSocket *> direct_links() const
   {
     BLI_assert(m_vnode->m_backlink->is_frozen());
-    return m_direct_links;
+    return m_direct_links.as_ref();
   }
 
-  ArrayRef<VirtualSocket *> links()
+  ArrayRef<const VirtualSocket *> links() const
   {
     BLI_assert(m_vnode->m_backlink->is_frozen());
-    return m_links;
+    return m_links.as_ref();
   }
 
   bool is_linked() const
@@ -243,7 +243,7 @@ class VirtualSocket {
     return m_links.size() > 0;
   }
 
-  PointerRNA rna()
+  PointerRNA rna() const
   {
     PointerRNA rna;
     RNA_pointer_create(&m_btree->id, &RNA_NodeSocket, m_bsocket, &rna);
@@ -270,11 +270,11 @@ class VirtualLink {
  private:
   friend VirtualNodeTree;
 
-  VirtualSocket *m_from;
-  VirtualSocket *m_to;
+  const VirtualSocket *m_from;
+  const VirtualSocket *m_to;
 };
 
-inline VirtualSocket *VirtualNode::input(uint index, StringRef expected_name)
+inline const VirtualSocket &VirtualNode::input(uint index, StringRef expected_name) const
 {
   VirtualSocket *vsocket = m_inputs[index];
 #ifdef DEBUG
@@ -282,10 +282,10 @@ inline VirtualSocket *VirtualNode::input(uint index, StringRef expected_name)
   BLI_assert(actual_name == expected_name);
 #endif
   UNUSED_VARS_NDEBUG(expected_name);
-  return vsocket;
+  return *vsocket;
 }
 
-inline VirtualSocket *VirtualNode::output(uint index, StringRef expected_name)
+inline const VirtualSocket &VirtualNode::output(uint index, StringRef expected_name) const
 {
   VirtualSocket *vsocket = m_outputs[index];
 #ifdef DEBUG
@@ -293,7 +293,7 @@ inline VirtualSocket *VirtualNode::output(uint index, StringRef expected_name)
   BLI_assert(actual_name == expected_name);
 #endif
   UNUSED_VARS_NDEBUG(expected_name);
-  return vsocket;
+  return *vsocket;
 }
 
 }  // namespace BKE
diff --git a/source/blender/blenkernel/intern/node_tree.cpp b/source/blender/blenkernel/intern/node_tree.cpp
index bb2d76f990a..9dca919a181 100644
--- a/source/blender/blenkernel/intern/node_tree.cpp
+++ b/source/blender/blenkernel/intern/node_tree.cpp
@@ -11,19 +11,19 @@ void VirtualNodeTree::add_all_of_tree(bNodeTree *btree)
     node_mapping.add_new(bnode, vnode);
   }
   for (bNodeLink *blink : bLinkList(btree->links)) {
-    VirtualNode *from_vnode = node_mapping.lookup(blink->fromnode);
-    VirtualNode *to_vnode = node_mapping.lookup(blink->tonode);
-    VirtualSocket *from_vsocket = nullptr;
-    VirtualSocket *to_vsocket = nullptr;
+    const VirtualNode *from_vnode = node_mapping.lookup(blink->fromnode);
+    const VirtualNode *to_vnode = node_mapping.lookup(blink->tonode);
+    const VirtualSocket *from_vsocket = nullptr;
+    const VirtualSocket *to_vsocket = nullptr;
 
-    for (VirtualSocket *output : from_vnode->outputs()) {
+    for (const VirtualSocket *output : from_vnode->outputs()) {
       if (output->bsocket() == blink->fromsock) {
         from_vsocket = output;
         break;
       }
     }
 
-    for (VirtualSocket *input : to_vnode->inputs()) {
+    for (const VirtualSocket *input : to_vnode->inputs()) {
       if (input->bsocket() == blink->tosock) {
         to_vsocket = input;
         break;
@@ -32,7 +32,7 @@ void VirtualNodeTree::add_all_of_tree(bNodeTree *btree)
 
     BLI_assert(from_vsocket);
     BLI_assert(to_vsocket);
-    this->add_link(from_vsocket, to_vsocket);
+    this->add_link(*from_vsocket, *to_vsocket);
   }
 }
 
@@ -77,20 +77,20 @@ VirtualNode *VirtualNodeTree::add_bnode(bNodeTree *btree, bNode *bnode)
   return vnode;
 }
 
-void VirtualNodeTree::add_link(VirtualSocket *a, VirtualSocket *b)
+void VirtualNodeTree::add_link(const VirtualSocket &a, const VirtualSocket &b)
 {
   BLI_assert(!m_frozen);
 
   VirtualLink *vlink = m_allocator.allocate<VirtualLink>();
-  if (a->is_input()) {
-    BLI_assert(b->is_output());
-    vlink->m_from = b;
-    vlink->m_to = a;
+  if (a.is_input()) {
+    BLI_assert(b.is_output());
+    vlink->m_from = &b;
+    vlink->m_to = &a;
   }
   else {
-    BLI_assert(b->is_input());
-    vlink->m_from = a;
-    vlink->m_to = b;
+    BLI_assert(b.is_input());
+    vlink->m_from = &a;
+    vlink->m_to = &b;
   }
 
   m_links.append(vlink);
@@ -109,29 +109,32 @@ BLI_NOINLINE void VirtualNodeTree::initialize_direct_links()
   /* TODO(jacques): reserve */
   MultiMap<VirtualSocket *, VirtualSocket *> connections;
   for (VirtualLink *link : m_links) {
-    connections.add(link->m_from, link->m_to);
-    connections.add(link->m_to, link->m_from);
+    connections.add(const_cast<VirtualSocket *>(link->m_from),
+                    const_cast<VirtualSocket *>(link->m_to));
+    connections.add(const_cast<VirtualSocket *>(link->m_to),
+                    const_cast<VirtualSocket *>(link->m_from));
   }
 
   /* TODO(jacques): items iterator */
   for (VirtualSocket *vsocket : connections.keys()) {
     auto others = connections.lookup(vsocket);
-    vsocket->m_direct_links = m_allocator.allocate_array<VirtualSocket *>(others.size());
+    vsocket->m_direct_links = m_allocator.allocate_array<const VirtualSocket *>(others.size());
     vsocket->m_direct_links.copy_from(others);
   }
 }
 
-static bool is_reroute(VirtualNode *vnode)
+static bool is_reroute(const VirtualNode &vnode)
 {
-  return STREQ(vnode->bnode()->idname, "NodeReroute");
+  return STREQ(vnode.bnode()->idname, "NodeReroute");
 }
 
-static void find_connected_sockets_left(VirtualSocket *vsocket, Vector<VirtualSocket *> &r_found)
+static void find_connected_sockets_left(const VirtualSocket &vsocket,
+                                        Vector<const VirtualSocket *> &r_found)
 {
-  BLI_assert(vsocket->is_input());
-  for (VirtualSocket *other : vsocket->direct_links()) {
+  BLI_assert(vsocket.is_input());
+  for (const VirtualSocket *other : vsocket.direct_links()) {
     if (is_reroute(other->vnode())) {
-      find_connected_sockets_left(other->vnode()->input(0), r_found);
+      find_connected_sockets_left(other->vnode().input(0), r_found);
     }
     else {
       r_found.append(other)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list