[Bf-blender-cvs] [ffeea91347c] functions: don't use signature in function anymore
Jacques Lucke
noreply at git.blender.org
Fri May 17 12:05:03 CEST 2019
Commit: ffeea91347cce077146104266a73585980da3d80
Author: Jacques Lucke
Date: Fri May 17 11:59:40 2019 +0200
Branches: functions
https://developer.blender.org/rBffeea91347cce077146104266a73585980da3d80
don't use signature in function anymore
===================================================================
M source/blender/functions/core/function.cpp
M source/blender/functions/core/function.hpp
===================================================================
diff --git a/source/blender/functions/core/function.cpp b/source/blender/functions/core/function.cpp
index c07478dfe17..85c2543c4f8 100644
--- a/source/blender/functions/core/function.cpp
+++ b/source/blender/functions/core/function.cpp
@@ -2,20 +2,18 @@
namespace FN {
-void Function::print() const
+void Function::print()
{
std::cout << "Function: " << this->name() << std::endl;
std::cout << " Inputs:" << std::endl;
- for (InputParameter ¶m : m_signature.inputs()) {
- std::cout << " ";
- param.print();
- std::cout << std::endl;
+ for (uint i = 0; i < this->input_amount(); i++) {
+ std::cout << " " << this->input_type(i)->name() << " - " << this->input_name(i)
+ << std::endl;
}
std::cout << " Outputs:" << std::endl;
- for (OutputParameter ¶m : m_signature.outputs()) {
- std::cout << " ";
- param.print();
- std::cout << std::endl;
+ for (uint i = 0; i < this->output_amount(); i++) {
+ std::cout << " " << this->output_type(i)->name() << " - " << this->output_name(i)
+ << std::endl;
}
}
@@ -40,15 +38,8 @@ void FunctionBuilder::add_output(StringRef name, SharedType &type)
SharedFunction FunctionBuilder::build(StringRef function_name)
{
- InputParameters inputs;
- for (uint i = 0; i < m_input_names.size(); i++) {
- inputs.append(InputParameter(m_input_names[i], m_input_types[i]));
- }
- OutputParameters outputs;
- for (uint i = 0; i < m_output_names.size(); i++) {
- outputs.append(OutputParameter(m_output_names[i], m_output_types[i]));
- }
- return SharedFunction::New(function_name, Signature(inputs, outputs));
+ return SharedFunction::New(
+ function_name, m_input_names, m_input_types, m_output_names, m_output_types);
}
} /* namespace FN */
diff --git a/source/blender/functions/core/function.hpp b/source/blender/functions/core/function.hpp
index 5768d0d5b0c..fdd9094c5d0 100644
--- a/source/blender/functions/core/function.hpp
+++ b/source/blender/functions/core/function.hpp
@@ -38,13 +38,19 @@ class Function final : public RefCountedBase {
public:
Function(Function &fn) = delete;
- Function(StringRef name, const Signature &signature)
- : m_name(name.to_std_string()), m_signature(signature)
- {
- }
-
- Function(const Signature &signature) : Function("Function", signature)
+ Function(StringRef name,
+ ArrayRef<std::string> input_names,
+ ArrayRef<SharedType> input_types,
+ ArrayRef<std::string> output_names,
+ ArrayRef<SharedType> output_types)
+ : m_name(name.to_std_string()),
+ m_input_names(input_names.to_small_vector()),
+ m_input_types(input_types.to_small_vector()),
+ m_output_names(output_names.to_small_vector()),
+ m_output_types(output_types.to_small_vector())
{
+ BLI_assert(m_input_names.size() == m_input_types.size());
+ BLI_assert(m_output_names.size() == m_output_types.size());
}
~Function() = default;
@@ -54,16 +60,6 @@ class Function final : public RefCountedBase {
return m_name;
}
- inline const Signature &signature() const
- {
- return m_signature;
- }
-
- inline Signature &signature()
- {
- return m_signature;
- }
-
template<typename T> inline bool has_body() const
{
std::lock_guard<std::mutex> lock(m_body_mutex);
@@ -94,44 +90,44 @@ class Function final : public RefCountedBase {
}
}
- void print() const;
+ void print();
/* Utility accessors */
uint input_amount() const
{
- return m_signature.inputs().size();
+ return m_input_names.size();
}
uint output_amount() const
{
- return m_signature.outputs().size();
+ return m_output_names.size();
}
SharedType &input_type(uint index)
{
- return m_signature.inputs()[index].type();
+ return m_input_types[index];
}
SharedType &output_type(uint index)
{
- return m_signature.outputs()[index].type();
+ return m_output_types[index];
}
StringRefNull input_name(uint index)
{
- return m_signature.inputs()[index].name();
+ return m_input_names[index];
}
StringRefNull output_name(uint index)
{
- return m_signature.outputs()[index].name();
+ return m_output_names[index];
}
template<typename T> SmallVector<T *> input_extensions() const
{
SmallVector<T *> extensions;
- for (InputParameter ¶m : m_signature.inputs()) {
- T *ext = param.type()->extension<T>();
+ for (auto &type : m_input_types) {
+ T *ext = type->extension<T>();
BLI_assert(ext);
extensions.append(ext);
}
@@ -141,37 +137,33 @@ class Function final : public RefCountedBase {
template<typename T> SmallVector<T *> output_extensions() const
{
SmallVector<T *> extensions;
- for (OutputParameter ¶m : m_signature.outputs()) {
- T *ext = param.type()->extension<T>();
+ for (auto &type : m_output_types) {
+ T *ext = type->extension<T>();
BLI_assert(ext);
extensions.append(ext);
}
return extensions;
}
- SmallVector<SharedType> input_types() const
+ ArrayRef<SharedType> input_types() const
{
- SmallVector<SharedType> types;
- for (InputParameter ¶m : m_signature.inputs()) {
- types.append(param.type());
- }
- return types;
+ return m_input_types;
}
- SmallVector<SharedType> output_types() const
+ ArrayRef<SharedType> output_types() const
{
- SmallVector<SharedType> types;
- for (OutputParameter ¶m : m_signature.outputs()) {
- types.append(param.type());
- }
- return types;
+ return m_output_types;
}
private:
const std::string m_name;
- Signature m_signature;
Composition m_bodies;
mutable std::mutex m_body_mutex;
+
+ SmallVector<std::string> m_input_names;
+ SmallVector<SharedType> m_input_types;
+ SmallVector<std::string> m_output_names;
+ SmallVector<SharedType> m_output_types;
};
using SharedFunction = AutoRefCount<Function>;
@@ -180,8 +172,8 @@ using FunctionPerType = SmallMap<SharedType, SharedFunction>;
class FunctionBuilder {
private:
SmallVector<std::string> m_input_names;
- SmallVector<std::string> m_output_names;
SmallVector<SharedType> m_input_types;
+ SmallVector<std::string> m_output_names;
SmallVector<SharedType> m_output_types;
public:
More information about the Bf-blender-cvs
mailing list