[Bf-blender-cvs] [252e46a3464] functions: input and output parameter class
Jacques Lucke
noreply at git.blender.org
Sun Feb 10 20:25:54 CET 2019
Commit: 252e46a34640a878adead46fc062ac9da4ab9a69
Author: Jacques Lucke
Date: Mon Feb 4 13:53:29 2019 +0100
Branches: functions
https://developer.blender.org/rB252e46a34640a878adead46fc062ac9da4ab9a69
input and output parameter class
===================================================================
M source/blender/functions/c_wrapper.cpp
M source/blender/functions/core/core.hpp
M source/blender/functions/core/data_flow_graph.cpp
===================================================================
diff --git a/source/blender/functions/c_wrapper.cpp b/source/blender/functions/c_wrapper.cpp
index 3449cf07a59..c7823794410 100644
--- a/source/blender/functions/c_wrapper.cpp
+++ b/source/blender/functions/c_wrapper.cpp
@@ -23,13 +23,13 @@ FnCallable FN_function_get_callable(FnFunction fn)
FnTuple FN_tuple_for_input(FnFunction fn)
{
- auto tuple = new FN::Tuple(unwrap(fn)->signature().inputs());
+ auto tuple = new FN::Tuple(unwrap(fn)->signature().input_types());
return wrap(tuple);
}
FnTuple FN_tuple_for_output(FnFunction fn)
{
- auto tuple = new FN::Tuple(unwrap(fn)->signature().outputs());
+ auto tuple = new FN::Tuple(unwrap(fn)->signature().output_types());
return wrap(tuple);
}
@@ -113,8 +113,14 @@ public:
FnFunction FN_get_deform_function(int type)
{
- FN::Signature signature({FN::Types::floatvec3d_ty, FN::Types::float_ty}, {FN::Types::floatvec3d_ty});
- auto fn = new FN::Function(signature);
+ FN::InputParameters inputs;
+ inputs.append(FN::InputParameter("Position", FN::Types::floatvec3d_ty));
+ inputs.append(FN::InputParameter("Control", FN::Types::float_ty));
+
+ FN::OutputParameters outputs;
+ outputs.append(FN::OutputParameter("Position", FN::Types::floatvec3d_ty));
+
+ auto fn = new FN::Function(FN::Signature(inputs, outputs));
if (type == 0) {
fn->add_body(new Deform1());
}
diff --git a/source/blender/functions/core/core.hpp b/source/blender/functions/core/core.hpp
index eb6dc3a73e8..4c85f58be31 100644
--- a/source/blender/functions/core/core.hpp
+++ b/source/blender/functions/core/core.hpp
@@ -72,27 +72,80 @@ namespace FN {
Composition m_extensions;
};
+ class Parameter {
+ public:
+ Parameter(const std::string &name, const Type *type)
+ : m_type(type), m_name(name) {}
+
+ const Type *type() const
+ {
+ return this->m_type;
+ }
+
+ const std::string &name() const
+ {
+ return this->m_name;
+ }
+
+ private:
+ const Type *m_type;
+ const std::string m_name;
+ };
+
+ class InputParameter : public Parameter {
+ public:
+ InputParameter(const std::string &name, const Type *type)
+ : Parameter(name, type) {}
+ };
+
+ class OutputParameter : public Parameter {
+ public:
+ OutputParameter(const std::string &name, const Type *type)
+ : Parameter(name, type) {}
+ };
+
+ using InputParameters = SmallVector<InputParameter>;
+ using OutputParameters = SmallVector<OutputParameter>;
+
class Signature {
public:
Signature() = default;
~Signature() = default;
- Signature(const SmallTypeVector &inputs, const SmallTypeVector &outputs)
+ Signature(const InputParameters &inputs, const OutputParameters &outputs)
: m_inputs(inputs), m_outputs(outputs) {}
- inline const SmallTypeVector &inputs() const
+ inline const InputParameters &inputs() const
{
return this->m_inputs;
}
- inline const SmallTypeVector &outputs() const
+ inline const OutputParameters &outputs() const
{
return this->m_outputs;
}
+ SmallTypeVector input_types() const
+ {
+ SmallTypeVector types;
+ for (const InputParameter ¶m : this->inputs()) {
+ types.append(param.type());
+ }
+ return types;
+ }
+
+ SmallTypeVector output_types() const
+ {
+ SmallTypeVector types;
+ for (const OutputParameter ¶m : this->outputs()) {
+ types.append(param.type());
+ }
+ return types;
+ }
+
private:
- const SmallTypeVector m_inputs;
- const SmallTypeVector m_outputs;
+ const InputParameters m_inputs;
+ const OutputParameters m_outputs;
};
class Function {
diff --git a/source/blender/functions/core/data_flow_graph.cpp b/source/blender/functions/core/data_flow_graph.cpp
index ea7a7778dfa..684310b56dd 100644
--- a/source/blender/functions/core/data_flow_graph.cpp
+++ b/source/blender/functions/core/data_flow_graph.cpp
@@ -4,10 +4,10 @@ namespace FN {
const Type *Socket::type() const
{
if (this->m_is_output) {
- return this->node()->signature().outputs()[this->m_index];
+ return this->node()->signature().outputs()[this->m_index].type();
}
else {
- return this->node()->signature().inputs()[this->m_index];
+ return this->node()->signature().inputs()[this->m_index].type();
}
}
};
\ No newline at end of file
More information about the Bf-blender-cvs
mailing list