[Bf-blender-cvs] [e0032e84461] functions: remove more dependencies on signature and parameter types

Jacques Lucke noreply at git.blender.org
Fri May 17 12:05:01 CEST 2019


Commit: e0032e844617e2daab89a5da2c968d9ea7b4a3a3
Author: Jacques Lucke
Date:   Fri May 17 11:46:31 2019 +0200
Branches: functions
https://developer.blender.org/rBe0032e844617e2daab89a5da2c968d9ea7b4a3a3

remove more dependencies on signature and parameter types

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

M	source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
M	source/blender/functions/backends/tuple_call/tuple_call.cpp
M	source/blender/functions/core/data_flow_graph.hpp
M	source/blender/functions/core/data_flow_graph_builder.cpp
M	source/blender/functions/core/data_flow_graph_builder.hpp
M	source/blender/functions/core/dot_export.cpp
M	source/blender/functions/core/function.cpp
M	source/blender/functions/core/function.hpp
M	source/blender/functions/core/signature.cpp
M	source/blender/functions/core/signature.hpp
M	source/blender/functions/functions/auto_vectorization.cpp

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

diff --git a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
index 70324626d45..59f2af5176a 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
@@ -83,16 +83,16 @@ class ExecuteFGraph : public TupleCallBody {
       m_outputs_init_buffer_size += fn->output_amount();
 
       if (body == nullptr) {
-        for (auto param : fn->signature().inputs()) {
-          CPPTypeInfo *type_info = param.type()->extension<CPPTypeInfo>();
+        for (auto type : fn->input_types()) {
+          CPPTypeInfo *type_info = type->extension<CPPTypeInfo>();
           BLI_assert(type_info);
           uint type_size = type_info->size_of_type();
           m_input_info.append(SocketInfo(type_info, m_inputs_init_buffer_size, false));
           m_inputs_buffer_size += type_size;
         }
 
-        for (auto param : fn->signature().outputs()) {
-          CPPTypeInfo *type_info = param.type()->extension<CPPTypeInfo>();
+        for (auto type : fn->output_types()) {
+          CPPTypeInfo *type_info = type->extension<CPPTypeInfo>();
           BLI_assert(type_info);
           uint type_size = type_info->size_of_type();
           m_output_info.append(SocketInfo(type_info, m_outputs_buffer_size, false));
diff --git a/source/blender/functions/backends/tuple_call/tuple_call.cpp b/source/blender/functions/backends/tuple_call/tuple_call.cpp
index 87bd698fe9c..6c8e3371f5d 100644
--- a/source/blender/functions/backends/tuple_call/tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/tuple_call.cpp
@@ -12,8 +12,8 @@ void TupleCallBodyBase::init_defaults(Tuple &fn_in) const
 
 void TupleCallBodyBase::owner_init_post()
 {
-  m_meta_in = SharedTupleMeta::New(this->owner()->signature().input_types());
-  m_meta_out = SharedTupleMeta::New(this->owner()->signature().output_types());
+  m_meta_in = SharedTupleMeta::New(this->owner()->input_types());
+  m_meta_out = SharedTupleMeta::New(this->owner()->output_types());
 }
 
 uint LazyInTupleCallBody::user_data_size() const
diff --git a/source/blender/functions/core/data_flow_graph.hpp b/source/blender/functions/core/data_flow_graph.hpp
index 752b278e409..77752225578 100644
--- a/source/blender/functions/core/data_flow_graph.hpp
+++ b/source/blender/functions/core/data_flow_graph.hpp
@@ -184,6 +184,16 @@ class DataFlowGraph : public RefCountedBase {
     return m_nodes[node_id].function;
   }
 
+  SharedFunction &function_of_input(uint input_id)
+  {
+    return this->function_of_node(m_inputs[input_id].node);
+  }
+
+  SharedFunction &function_of_output(uint output_id)
+  {
+    return this->function_of_node(m_outputs[output_id].node);
+  }
+
   uint id_of_node_input(uint node_id, uint input_index)
   {
     BLI_assert(input_index < this->input_ids_of_node(node_id).size());
@@ -210,8 +220,7 @@ class DataFlowGraph : public RefCountedBase {
   Range<uint> output_ids_of_node(uint node_id) const
   {
     MyNode &node = m_nodes[node_id];
-    return Range<uint>(node.outputs_start,
-                       node.outputs_start + node.function->signature().outputs().size());
+    return Range<uint>(node.outputs_start, node.outputs_start + node.function->output_amount());
   }
 
   DFGraphSocketSequence<Range<uint>> outputs_of_node(uint node_id) const
@@ -347,38 +356,24 @@ class DataFlowGraph : public RefCountedBase {
     }
   }
 
-  const StringRefNull name_of_input(uint input_socket)
-  {
-    return this->input_parameter(input_socket).name();
-  }
-
-  const StringRefNull name_of_output(uint output_socket)
-  {
-    return this->output_parameter(output_socket).name();
-  }
-
-  SharedType &type_of_input(uint input_socket)
+  const StringRefNull name_of_input(uint input_id)
   {
-    return this->input_parameter(input_socket).type();
+    return this->function_of_input(input_id)->input_name(this->index_of_input(input_id));
   }
 
-  SharedType &type_of_output(uint output_socket)
+  const StringRefNull name_of_output(uint output_id)
   {
-    return this->output_parameter(output_socket).type();
+    return this->function_of_output(output_id)->output_name(this->index_of_output(output_id));
   }
 
-  InputParameter &input_parameter(uint input_socket)
+  SharedType &type_of_input(uint input_id)
   {
-    uint node = this->node_id_of_input(input_socket);
-    uint index = this->index_of_input(input_socket);
-    return this->function_of_node(node)->signature().inputs()[index];
+    return this->function_of_input(input_id)->input_type(this->index_of_input(input_id));
   }
 
-  OutputParameter &output_parameter(uint output_socket)
+  SharedType &type_of_output(uint output_id)
   {
-    uint node = this->node_id_of_output(output_socket);
-    uint index = this->index_of_output(output_socket);
-    return this->function_of_node(node)->signature().outputs()[index];
+    return this->function_of_output(output_id)->output_type(this->index_of_output(output_id));
   }
 
   std::string to_dot();
diff --git a/source/blender/functions/core/data_flow_graph_builder.cpp b/source/blender/functions/core/data_flow_graph_builder.cpp
index 1d2a3e74e79..aba442a4eb7 100644
--- a/source/blender/functions/core/data_flow_graph_builder.cpp
+++ b/source/blender/functions/core/data_flow_graph_builder.cpp
@@ -15,10 +15,10 @@ SharedType &DFGB_Socket::type() const
 const StringRefNull DFGB_Socket::name() const
 {
   if (m_is_output) {
-    return this->node()->signature().outputs()[m_index].name();
+    return this->node()->function()->output_name(m_index);
   }
   else {
-    return this->node()->signature().inputs()[m_index].name();
+    return this->node()->function()->input_name(m_index);
   }
 }
 
diff --git a/source/blender/functions/core/data_flow_graph_builder.hpp b/source/blender/functions/core/data_flow_graph_builder.hpp
index 0f6e58213c4..500574b0ae3 100644
--- a/source/blender/functions/core/data_flow_graph_builder.hpp
+++ b/source/blender/functions/core/data_flow_graph_builder.hpp
@@ -56,7 +56,6 @@ class DFGB_Node {
   }
 
   DataFlowGraphBuilder &builder() const;
-  Signature &signature();
   SharedFunction &function();
 
   DFGB_Socket input(uint index);
@@ -85,8 +84,8 @@ class DFGB_Node {
     }
     SocketIt end() const
     {
-      Signature &sig = m_node->signature();
-      uint size = m_is_output ? sig.outputs().size() : sig.inputs().size();
+      SharedFunction &fn = m_node->function();
+      uint size = m_is_output ? fn->output_amount() : fn->input_amount();
       return SocketIt(m_node, m_is_output, size);
     }
 
@@ -264,11 +263,6 @@ inline DataFlowGraphBuilder &DFGB_Node::builder() const
   return m_builder;
 }
 
-inline Signature &DFGB_Node::signature()
-{
-  return m_function->signature();
-}
-
 inline SharedFunction &DFGB_Node::function()
 {
   return m_function;
diff --git a/source/blender/functions/core/dot_export.cpp b/source/blender/functions/core/dot_export.cpp
index cdb5f161b56..a582ebbf6ec 100644
--- a/source/blender/functions/core/dot_export.cpp
+++ b/source/blender/functions/core/dot_export.cpp
@@ -40,9 +40,8 @@ static void insert_node_table(std::stringstream &ss, DFGB_Node *node)
   ss << "</b></td></tr>";
 
   /* Sockets */
-  const Signature &sig = node->signature();
-  uint inputs_amount = sig.inputs().size();
-  uint outputs_amount = sig.outputs().size();
+  uint inputs_amount = node->function()->input_amount();
+  uint outputs_amount = node->function()->output_amount();
   uint socket_max_amount = std::max(inputs_amount, outputs_amount);
   for (uint i = 0; i < socket_max_amount; i++) {
     ss << "<tr>";
diff --git a/source/blender/functions/core/function.cpp b/source/blender/functions/core/function.cpp
index 9b6ab43515e..c07478dfe17 100644
--- a/source/blender/functions/core/function.cpp
+++ b/source/blender/functions/core/function.cpp
@@ -5,7 +5,18 @@ namespace FN {
 void Function::print() const
 {
   std::cout << "Function: " << this->name() << std::endl;
-  this->signature().print("  ");
+  std::cout << "  Inputs:" << std::endl;
+  for (InputParameter &param : m_signature.inputs()) {
+    std::cout << "    ";
+    param.print();
+    std::cout << std::endl;
+  }
+  std::cout << "  Outputs:" << std::endl;
+  for (OutputParameter &param : m_signature.outputs()) {
+    std::cout << "    ";
+    param.print();
+    std::cout << std::endl;
+  }
 }
 
 /* Function builder
diff --git a/source/blender/functions/core/function.hpp b/source/blender/functions/core/function.hpp
index 8119dee1028..5768d0d5b0c 100644
--- a/source/blender/functions/core/function.hpp
+++ b/source/blender/functions/core/function.hpp
@@ -117,6 +117,16 @@ class Function final : public RefCountedBase {
     return m_signature.outputs()[index].type();
   }
 
+  StringRefNull input_name(uint index)
+  {
+    return m_signature.inputs()[index].name();
+  }
+
+  StringRefNull output_name(uint index)
+  {
+    return m_signature.outputs()[index].name();
+  }
+
   template<typename T> SmallVector<T *> input_extensions() const
   {
     SmallVector<T *> extensions;
@@ -131,7 +141,7 @@ class Function final : public RefCountedBase {
   template<typename T> SmallVector<T *> output_extensions() const
   {
     SmallVector<T *> extensions;
-    for (InputParameter &param : m_signature.outputs()) {
+    for (OutputParameter &param : m_signature.outputs()) {
       T *ext = param.type()->extension<T>();
       BLI_assert(ext);
       extensions.append(ext);
@@ -139,6 +149,24 @@ class Function final : public RefCountedBase {
     return extensions;
   }
 
+  SmallVector<SharedType> input_types() const
+  {
+    SmallVector<SharedType> types;
+    for (InputParameter &param : m_signature.inputs()) {
+      types.append(param.type());
+    }
+    return types;
+  }
+
+  SmallVector<SharedType> output_types() const
+  {
+    SmallVector<SharedType> types;
+    for (OutputParameter &param : m_signature.outputs()) {
+      types.append(param.type());
+    }
+    return types;
+  }
+
  private:
   const std::string m_name;
   Signature m_signature;
diff --git a/source/blender/functions/core/signature.cpp b/source/blender/functions/core/signature.cpp
index 649c4d92d4e..f49c2aff74b

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list