[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 ¶m : m_signature.inputs()) {
+ std::cout << " ";
+ param.print();
+ std::cout << std::endl;
+ }
+ std::cout << " Outputs:" << std::endl;
+ for (OutputParameter ¶m : 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 ¶m : m_signature.outputs()) {
+ for (OutputParameter ¶m : 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 ¶m : m_signature.inputs()) {
+ types.append(param.type());
+ }
+ return types;
+ }
+
+ SmallVector<SharedType> output_types() const
+ {
+ SmallVector<SharedType> types;
+ for (OutputParameter ¶m : 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