[Bf-blender-cvs] [e7ff5b14708] functions: don't use output parameter when building data flow graph
Jacques Lucke
noreply at git.blender.org
Thu Jul 4 16:46:11 CEST 2019
Commit: e7ff5b14708cc5875728333afc437e62f1ecb430
Author: Jacques Lucke
Date: Thu Jul 4 15:02:10 2019 +0200
Branches: functions
https://developer.blender.org/rBe7ff5b14708cc5875728333afc437e62f1ecb430
don't use output parameter when building data flow graph
===================================================================
M source/blender/functions/core/data_flow_graph.cpp
M source/blender/functions/core/data_flow_graph.hpp
M source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
===================================================================
diff --git a/source/blender/functions/core/data_flow_graph.cpp b/source/blender/functions/core/data_flow_graph.cpp
index 939f08469dc..de282559f5d 100644
--- a/source/blender/functions/core/data_flow_graph.cpp
+++ b/source/blender/functions/core/data_flow_graph.cpp
@@ -2,10 +2,13 @@
namespace FN {
-SharedDataFlowGraph DataFlowGraph::FromBuilder(DataFlowGraphBuilder &builder,
- DataFlowGraph::ToBuilderMapping &r_mapping)
+DataFlowGraph::BuildResult DataFlowGraph::FromBuilder(DataFlowGraphBuilder &builder)
{
- auto graph = SharedDataFlowGraph::New();
+ BuildResult result = {SharedDataFlowGraph::New(), {}};
+
+ SharedDataFlowGraph &graph = result.graph;
+ ToBuilderMapping &mapping = result.mapping;
+
auto dfgb_nodes = builder.nodes();
graph->m_nodes.reserve(dfgb_nodes.size());
@@ -18,15 +21,15 @@ SharedDataFlowGraph DataFlowGraph::FromBuilder(DataFlowGraphBuilder &builder,
dfgb_node->source(),
graph->m_inputs.size(),
graph->m_outputs.size()));
- r_mapping.node_indices.add_new(dfgb_node, node_id);
+ mapping.node_indices.add_new(dfgb_node, node_id);
for (DFGB_Socket dfgb_input : dfgb_node->inputs()) {
- r_mapping.input_socket_indices.add_new(dfgb_input, graph->m_inputs.size());
+ mapping.input_socket_indices.add_new(dfgb_input, graph->m_inputs.size());
graph->m_inputs.append(InputSocket(node_id, dummy));
}
for (DFGB_Socket output : dfgb_node->outputs()) {
auto targets = output.targets();
- r_mapping.output_socket_indices.add_new(output, graph->m_outputs.size());
+ mapping.output_socket_indices.add_new(output, graph->m_outputs.size());
graph->m_outputs.append(OutputSocket(node_id, graph->m_targets.size(), targets.size()));
for (uint i = 0; i < targets.size(); i++) {
graph->m_targets.append(dummy);
@@ -36,19 +39,19 @@ SharedDataFlowGraph DataFlowGraph::FromBuilder(DataFlowGraphBuilder &builder,
for (DFGB_Node *dfgb_node : dfgb_nodes) {
for (DFGB_Socket dfgb_input : dfgb_node->inputs()) {
- uint input_id = r_mapping.input_socket_indices.lookup(dfgb_input);
+ uint input_id = mapping.input_socket_indices.lookup(dfgb_input);
Optional<DFGB_Socket> dfgb_origin = dfgb_input.origin();
BLI_assert(dfgb_origin.has_value());
- uint origin_id = r_mapping.output_socket_indices.lookup(dfgb_origin.value());
+ uint origin_id = mapping.output_socket_indices.lookup(dfgb_origin.value());
graph->m_inputs[input_id].origin = origin_id;
}
for (DFGB_Socket dfgb_output : dfgb_node->outputs()) {
- uint output_id = r_mapping.output_socket_indices.lookup(dfgb_output);
+ uint output_id = mapping.output_socket_indices.lookup(dfgb_output);
uint start = graph->m_outputs[output_id].targets_start;
auto dfgb_targets = dfgb_output.targets();
for (uint i = 0; i < dfgb_targets.size(); i++) {
DFGB_Socket dfgb_target = dfgb_targets[i];
- uint target_id = r_mapping.input_socket_indices.lookup(dfgb_target);
+ uint target_id = mapping.input_socket_indices.lookup(dfgb_target);
graph->m_targets[start + i] = target_id;
}
}
@@ -56,7 +59,7 @@ SharedDataFlowGraph DataFlowGraph::FromBuilder(DataFlowGraphBuilder &builder,
graph->m_source_info_pool = std::move(builder.m_source_info_pool);
- return graph;
+ return result;
}
DataFlowGraph::~DataFlowGraph()
diff --git a/source/blender/functions/core/data_flow_graph.hpp b/source/blender/functions/core/data_flow_graph.hpp
index 9bba5d16a8e..9942315aeb1 100644
--- a/source/blender/functions/core/data_flow_graph.hpp
+++ b/source/blender/functions/core/data_flow_graph.hpp
@@ -205,8 +205,12 @@ class DataFlowGraph : public RefCountedBase {
}
};
- static SharedDataFlowGraph FromBuilder(DataFlowGraphBuilder &builder,
- ToBuilderMapping &r_mapping);
+ struct BuildResult {
+ SharedDataFlowGraph graph;
+ ToBuilderMapping mapping;
+ };
+
+ static BuildResult FromBuilder(DataFlowGraphBuilder &builder);
Range<uint> node_ids() const
{
diff --git a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
index 92d785f5b92..e03b58d42fe 100644
--- a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
@@ -88,8 +88,8 @@ static FunctionGraph finalize_function_graph(DataFlowGraphBuilder &builder,
DFGB_SocketVector input_sockets,
DFGB_SocketVector output_sockets)
{
- DataFlowGraph::ToBuilderMapping builder_mapping;
- auto compact_graph = DataFlowGraph::FromBuilder(builder, builder_mapping);
+ auto build_result = DataFlowGraph::FromBuilder(builder);
+ auto &builder_mapping = build_result.mapping;
DFGraphSocketSetVector inputs, outputs;
@@ -100,7 +100,7 @@ static FunctionGraph finalize_function_graph(DataFlowGraphBuilder &builder,
outputs.add(builder_mapping.map_socket(socket));
}
- return FunctionGraph(compact_graph, inputs, outputs);
+ return FunctionGraph(build_result.graph, inputs, outputs);
}
static void find_interface_sockets(BTreeGraphBuilder &builder,
More information about the Bf-blender-cvs
mailing list