[Bf-blender-cvs] [090ae9aefe0] functions: avoid unnecessary type casting

Jacques Lucke noreply at git.blender.org
Sat Jan 18 20:17:27 CET 2020


Commit: 090ae9aefe0169956e81ec670f8fc0375c6728ea
Author: Jacques Lucke
Date:   Sat Jan 11 14:09:09 2020 +0100
Branches: functions
https://developer.blender.org/rB090ae9aefe0169956e81ec670f8fc0375c6728ea

avoid unnecessary type casting

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

M	source/blender/blenlib/BLI_array_ref.h
M	source/blender/functions/intern/multi_function_network.cc
M	source/blender/functions/intern/multi_function_network_optimization.cc

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

diff --git a/source/blender/blenlib/BLI_array_ref.h b/source/blender/blenlib/BLI_array_ref.h
index 265e75a2bf9..9944c3231d2 100644
--- a/source/blender/blenlib/BLI_array_ref.h
+++ b/source/blender/blenlib/BLI_array_ref.h
@@ -79,13 +79,12 @@ template<typename T> class ArrayRef {
   }
 
   /**
-   * Construct ArrayRef<const T *> from ArrayRef<T *>.
+   * ArrayRef<T *> -> ArrayRef<const T *>
+   * ArrayRef<Derived *> -> ArrayRef<Base *>
    */
-  template<typename U>
-  ArrayRef(
-      ArrayRef<U *> array,
-      typename std::enable_if<std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
-      : ArrayRef(array.begin(), array.size())
+  template<typename U,
+           typename std::enable_if<std::is_convertible<U *, T>::value>::type * = nullptr>
+  ArrayRef(ArrayRef<U *> array) : ArrayRef((T *)array.begin(), array.size())
   {
   }
 
diff --git a/source/blender/functions/intern/multi_function_network.cc b/source/blender/functions/intern/multi_function_network.cc
index 21de6073fe7..f19062ed938 100644
--- a/source/blender/functions/intern/multi_function_network.cc
+++ b/source/blender/functions/intern/multi_function_network.cc
@@ -188,8 +188,8 @@ std::string MFNetworkBuilder::to_dot(const Set<MFBuilderNode *> &marked_nodes)
   Map<MFBuilderNode *, NodeWithSocketsWrapper> dot_nodes;
 
   Vector<MFBuilderNode *> all_nodes;
-  all_nodes.extend(m_function_nodes.as_ref().cast<MFBuilderNode *>());
-  all_nodes.extend(m_dummy_nodes.as_ref().cast<MFBuilderNode *>());
+  all_nodes.extend(m_function_nodes.as_ref());
+  all_nodes.extend(m_dummy_nodes.as_ref());
 
   for (MFBuilderNode *node : all_nodes) {
     auto &dot_node = digraph.new_node("");
diff --git a/source/blender/functions/intern/multi_function_network_optimization.cc b/source/blender/functions/intern/multi_function_network_optimization.cc
index 13334b82d4f..11528a78a3e 100644
--- a/source/blender/functions/intern/multi_function_network_optimization.cc
+++ b/source/blender/functions/intern/multi_function_network_optimization.cc
@@ -14,8 +14,8 @@ void optimize_network__constant_folding(MFNetworkBuilder &network_builder,
   Array<bool> function_node_is_constant(network_builder.function_nodes().size(), true);
 
   Stack<MFBuilderNode *> nodes_to_check;
-  nodes_to_check.push_multiple(network_builder.dummy_nodes().cast<MFBuilderNode *>());
-  nodes_to_check.push_multiple(network_builder.function_nodes().cast<MFBuilderNode *>());
+  nodes_to_check.push_multiple(network_builder.dummy_nodes());
+  nodes_to_check.push_multiple(network_builder.function_nodes());
 
   while (!nodes_to_check.is_empty()) {
     MFBuilderNode &current_node = *nodes_to_check.pop();



More information about the Bf-blender-cvs mailing list