[Bf-blender-cvs] [1f504e3bd97] functions: separate dependencies from tuple call body
Jacques Lucke
noreply at git.blender.org
Fri Mar 1 17:19:56 CET 2019
Commit: 1f504e3bd979a8de1c470e2b898efd9ffcf95120
Author: Jacques Lucke
Date: Fri Mar 1 16:27:45 2019 +0100
Branches: functions
https://developer.blender.org/rB1f504e3bd979a8de1c470e2b898efd9ffcf95120
separate dependencies from tuple call body
===================================================================
M source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M source/blender/functions/CMakeLists.txt
M source/blender/functions/FN_all.hpp
M source/blender/functions/FN_core.hpp
A source/blender/functions/FN_dependencies.hpp
R080 source/blender/functions/core/dependencies.cpp source/blender/functions/backends/dependencies/dependencies.cpp
R071 source/blender/functions/core/dependencies.hpp source/blender/functions/backends/dependencies/dependencies.hpp
A source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
A source/blender/functions/backends/dependencies/fgraph_dependencies.hpp
M source/blender/functions/backends/tuple_call/fgraph_to_tuple_call.cpp
M source/blender/functions/backends/tuple_call/tuple_call.hpp
M source/blender/functions/c_wrapper.cpp
M source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
M source/blender/functions/functions/object_input.cpp
===================================================================
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index f42a8e21202..46c32821315 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1557,7 +1557,7 @@ void DepsgraphRelationBuilder::build_driver_variables(ID *id, FCurve *fcu)
auto fn = (BLI::RefCounted<FN::Function> *)get_driver_variable_function(dvar);
if (fn != NULL) {
FN::Dependencies dependencies;
- fn->ptr()->body<FN::TupleCallBody>()->dependencies(dependencies);
+ fn->ptr()->body<FN::DependenciesBody>()->dependencies(dependencies);
dependencies.add_relations(
(struct DepsgraphRelationBuilderRef *)this,
(struct OperationKeyRef *)&driver_key);
diff --git a/source/blender/functions/CMakeLists.txt b/source/blender/functions/CMakeLists.txt
index 0b6a7c7e512..d3b2c28053e 100644
--- a/source/blender/functions/CMakeLists.txt
+++ b/source/blender/functions/CMakeLists.txt
@@ -24,8 +24,6 @@ set(SRC
core/core.cpp
core/data_flow_graph.hpp
core/data_flow_graph.cpp
- core/dependencies.hpp
- core/dependencies.cpp
core/dot_export.cpp
core/type_inferencing.hpp
core/type_inferencing.cpp
@@ -40,6 +38,11 @@ set(SRC
backends/tuple_call/fgraph_to_tuple_call.cpp
backends/tuple_call/tuple.hpp
+ backends/dependencies/dependencies.hpp
+ backends/dependencies/dependencies.cpp
+ backends/dependencies/fgraph_dependencies.hpp
+ backends/dependencies/fgraph_dependencies.cpp
+
types/numeric.cpp
types/numeric.hpp
diff --git a/source/blender/functions/FN_all.hpp b/source/blender/functions/FN_all.hpp
index 0cdfe59a52d..8c92032891e 100644
--- a/source/blender/functions/FN_all.hpp
+++ b/source/blender/functions/FN_all.hpp
@@ -4,4 +4,5 @@
#include "FN_types.hpp"
#include "FN_functions.hpp"
#include "FN_tuple_call.hpp"
+#include "FN_dependencies.hpp"
#include "FN_data_flow_nodes.hpp"
\ No newline at end of file
diff --git a/source/blender/functions/FN_core.hpp b/source/blender/functions/FN_core.hpp
index d455c5c6f9a..45a481584d0 100644
--- a/source/blender/functions/FN_core.hpp
+++ b/source/blender/functions/FN_core.hpp
@@ -2,6 +2,5 @@
#include "core/core.hpp"
#include "core/data_flow_graph.hpp"
-#include "core/dependencies.hpp"
#include "core/type_relations.hpp"
#include "core/type_inferencing.hpp"
\ No newline at end of file
diff --git a/source/blender/functions/FN_dependencies.hpp b/source/blender/functions/FN_dependencies.hpp
new file mode 100644
index 00000000000..f6c8b8f2928
--- /dev/null
+++ b/source/blender/functions/FN_dependencies.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+#include "backends/dependencies/dependencies.hpp"
+#include "backends/dependencies/fgraph_dependencies.hpp"
\ No newline at end of file
diff --git a/source/blender/functions/core/dependencies.cpp b/source/blender/functions/backends/dependencies/dependencies.cpp
similarity index 80%
rename from source/blender/functions/core/dependencies.cpp
rename to source/blender/functions/backends/dependencies/dependencies.cpp
index 698720b223f..582c4f6304c 100644
--- a/source/blender/functions/core/dependencies.cpp
+++ b/source/blender/functions/backends/dependencies/dependencies.cpp
@@ -5,6 +5,18 @@
namespace FN {
+ const char *DependenciesBody::identifier_in_composition()
+ {
+ return "Dependencies";
+ }
+
+ void DependenciesBody::free_self(void *value)
+ {
+ DependenciesBody *v = (DependenciesBody *)value;
+ delete v;
+ }
+
+
void Dependencies::add_object_transform_dependency(struct Object *object)
{
m_transform_dependencies.add(object);
diff --git a/source/blender/functions/core/dependencies.hpp b/source/blender/functions/backends/dependencies/dependencies.hpp
similarity index 71%
rename from source/blender/functions/core/dependencies.hpp
rename to source/blender/functions/backends/dependencies/dependencies.hpp
index 90d0b0259ec..98e15db5a75 100644
--- a/source/blender/functions/core/dependencies.hpp
+++ b/source/blender/functions/backends/dependencies/dependencies.hpp
@@ -24,4 +24,12 @@ namespace FN {
const struct OperationKeyRef *target);
};
+ class DependenciesBody {
+ public:
+ static const char *identifier_in_composition();
+ static void free_self(void *value);
+
+ virtual void dependencies(Dependencies &deps) const = 0;
+ };
+
} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp b/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
new file mode 100644
index 00000000000..b94f28cd33d
--- /dev/null
+++ b/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
@@ -0,0 +1,28 @@
+#include "fgraph_dependencies.hpp"
+
+namespace FN {
+
+ class FGraphDependencies : public DependenciesBody {
+ private:
+ SharedDataFlowGraph m_graph;
+
+ public:
+ FGraphDependencies(const FunctionGraph &function_graph)
+ : m_graph(function_graph.graph()) {}
+
+ void dependencies(Dependencies &deps) const override
+ {
+ for (const Node *node : m_graph->all_nodes()) {
+ const DependenciesBody *body = node->function()->body<DependenciesBody>();
+ if (body) body->dependencies(deps);
+ }
+ }
+ };
+
+ DependenciesBody *fgraph_dependencies(
+ const FunctionGraph &function_graph)
+ {
+ return new FGraphDependencies(function_graph);
+ }
+
+} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/backends/dependencies/fgraph_dependencies.hpp b/source/blender/functions/backends/dependencies/fgraph_dependencies.hpp
new file mode 100644
index 00000000000..7c2a0a8402b
--- /dev/null
+++ b/source/blender/functions/backends/dependencies/fgraph_dependencies.hpp
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "FN_core.hpp"
+#include "dependencies.hpp"
+
+namespace FN {
+
+ DependenciesBody *fgraph_dependencies(
+ const FunctionGraph &function_graph);
+
+} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/backends/tuple_call/fgraph_to_tuple_call.cpp b/source/blender/functions/backends/tuple_call/fgraph_to_tuple_call.cpp
index 8217927a8b4..ca90ad62d86 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_to_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_to_tuple_call.cpp
@@ -14,14 +14,6 @@ namespace FN {
m_inputs(function_graph.inputs()),
m_outputs(function_graph.outputs()) {}
- void dependencies(Dependencies &deps) const override
- {
- for (const Node *node : m_graph->all_nodes()) {
- const TupleCallBody *body = node->function()->body<TupleCallBody>();
- if (body) body->dependencies(deps);
- }
- }
-
void call(const Tuple &fn_in, Tuple &fn_out) const override
{
for (uint i = 0; i < m_outputs.size(); i++) {
diff --git a/source/blender/functions/backends/tuple_call/tuple_call.hpp b/source/blender/functions/backends/tuple_call/tuple_call.hpp
index a3e3c1cc62d..115fe42ca92 100644
--- a/source/blender/functions/backends/tuple_call/tuple_call.hpp
+++ b/source/blender/functions/backends/tuple_call/tuple_call.hpp
@@ -12,7 +12,6 @@ namespace FN {
virtual ~TupleCallBody() {};
virtual void call(const Tuple &fn_in, Tuple &fn_out) const = 0;
- virtual void dependencies(Dependencies &UNUSED(deps)) const {}
virtual void init_defaults(Tuple &fn_in) const;
};
diff --git a/source/blender/functions/c_wrapper.cpp b/source/blender/functions/c_wrapper.cpp
index da8ab969603..ce934ce86ed 100644
--- a/source/blender/functions/c_wrapper.cpp
+++ b/source/blender/functions/c_wrapper.cpp
@@ -207,7 +207,10 @@ void FN_function_update_dependencies(
struct DepsNodeHandle *deps_node)
{
RefCounted<Function> *fn_ref = unwrap(fn);
- Dependencies dependencies;
- fn_ref->ptr()->body<TupleCallBody>()->dependencies(dependencies);
- dependencies.update_depsgraph(deps_node);
+ const DependenciesBody *body = fn_ref->ptr()->body<DependenciesBody>();
+ if (body) {
+ Dependencies dependencies;
+ body->dependencies(dependencies);
+ dependencies.update_depsgraph(deps_node);
+ }
}
\ No newline at end of file
diff --git a/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp b/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
index 6ab53ebfd3b..883deccd6cf 100644
--- a/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
@@ -2,6 +2,7 @@
#include "graph_generation.hpp"
#include "FN_tuple_call.hpp"
+#include "FN_dependencies.hpp"
#include "DNA_node_types.h"
namespace FN { namespace DataFlowNodes {
@@ -17,6 +18,7 @@ namespace FN { namespace DataFlowNodes {
auto fn = SharedFunction::New(btree->id.name, fgraph.signature());
fn->add_body(fgraph_to_tuple_call(fgraph));
+ fn->add_body(fgraph_dependencies(fgraph));
return fn;
}
diff --git a/source/blender/functions/functions/object_input.cpp b/source/blender/functions/functions/object_input.cpp
index 709cc3f2ad1..6069dc8d652 100644
--- a/source/blender/functions/functions/object_input.cpp
+++ b/source/blender/functions/functions/object_input.cpp
@@ -1,6 +1,7 @@
#include "object_input.hpp"
#include "FN_types.hpp"
#include "FN_tuple_call.hpp"
+#include "FN_dependencies.hpp"
#include "BLI_lazy_init.hpp"
#include "DNA_object_types.h"
@@ -27,6 +28,15 @@ namespace FN { namespace Functions {
fn_out.set<Vector>(0, Vector());
}
}
+ };
+
+ class ObjectTransformsDependency : public DependenciesBody {
+ private:
+ Object *m_object;
+
+ public:
+ ObjectTransformsDependency(Object *object)
+ : m_object(object) {}
void dependencies(Dependencies &deps) const override
{
@@ -40,6 +50,7 @@ namespace FN { namespace Functions {
OutputParameter("Location", get_fvec3_type()),
}));
fn->add_body(new ObjectTransforms(object));
+ fn->add_body(new ObjectTransformsDependency(object));
return fn;
}
More information about the Bf-blender-cvs
mailing list