Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/functions/FN_multi_function_signature.hh')
-rw-r--r--source/blender/functions/FN_multi_function_signature.hh39
1 files changed, 21 insertions, 18 deletions
diff --git a/source/blender/functions/FN_multi_function_signature.hh b/source/blender/functions/FN_multi_function_signature.hh
index e05ea1c2578..23309c9a5e6 100644
--- a/source/blender/functions/FN_multi_function_signature.hh
+++ b/source/blender/functions/FN_multi_function_signature.hh
@@ -44,18 +44,21 @@ struct MFSignature {
class MFSignatureBuilder {
private:
- MFSignature &data_;
+ MFSignature signature_;
int span_count_ = 0;
int virtual_array_count_ = 0;
int virtual_vector_array_count_ = 0;
int vector_array_count_ = 0;
public:
- MFSignatureBuilder(MFSignature &data) : data_(data)
+ MFSignatureBuilder(std::string function_name)
{
- BLI_assert(data.param_names.is_empty());
- BLI_assert(data.param_types.is_empty());
- BLI_assert(data.param_data_indices.is_empty());
+ signature_.function_name = std::move(function_name);
+ }
+
+ MFSignature build() const
+ {
+ return std::move(signature_);
}
/* Input Parameter Types */
@@ -78,15 +81,15 @@ class MFSignatureBuilder {
}
void input(StringRef name, MFDataType data_type)
{
- data_.param_names.append(name);
- data_.param_types.append(MFParamType(MFParamType::Input, data_type));
+ signature_.param_names.append(name);
+ signature_.param_types.append(MFParamType(MFParamType::Input, data_type));
switch (data_type.category()) {
case MFDataType::Single:
- data_.param_data_indices.append(virtual_array_count_++);
+ signature_.param_data_indices.append(virtual_array_count_++);
break;
case MFDataType::Vector:
- data_.param_data_indices.append(virtual_vector_array_count_++);
+ signature_.param_data_indices.append(virtual_vector_array_count_++);
break;
}
}
@@ -111,15 +114,15 @@ class MFSignatureBuilder {
}
void output(StringRef name, MFDataType data_type)
{
- data_.param_names.append(name);
- data_.param_types.append(MFParamType(MFParamType::Output, data_type));
+ signature_.param_names.append(name);
+ signature_.param_types.append(MFParamType(MFParamType::Output, data_type));
switch (data_type.category()) {
case MFDataType::Single:
- data_.param_data_indices.append(span_count_++);
+ signature_.param_data_indices.append(span_count_++);
break;
case MFDataType::Vector:
- data_.param_data_indices.append(vector_array_count_++);
+ signature_.param_data_indices.append(vector_array_count_++);
break;
}
}
@@ -144,15 +147,15 @@ class MFSignatureBuilder {
}
void mutable_(StringRef name, MFDataType data_type)
{
- data_.param_names.append(name);
- data_.param_types.append(MFParamType(MFParamType::Mutable, data_type));
+ signature_.param_names.append(name);
+ signature_.param_types.append(MFParamType(MFParamType::Mutable, data_type));
switch (data_type.category()) {
case MFDataType::Single:
- data_.param_data_indices.append(span_count_++);
+ signature_.param_data_indices.append(span_count_++);
break;
case MFDataType::Vector:
- data_.param_data_indices.append(vector_array_count_++);
+ signature_.param_data_indices.append(vector_array_count_++);
break;
}
}
@@ -163,7 +166,7 @@ class MFSignatureBuilder {
* depend on the fact that the function always performers the same operation. */
void depends_on_context()
{
- data_.depends_on_context = true;
+ signature_.depends_on_context = true;
}
};