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:
authorJacques Lucke <jacques@blender.org>2021-08-20 13:42:11 +0300
committerJacques Lucke <jacques@blender.org>2021-08-20 13:42:11 +0300
commitea3ee04fa8ba4613007bfbed2206b9af9d3aaddd (patch)
treeabea155262cb8711dba00b09953087c9e6a1cd79 /source/blender/functions
parent48384363875dead78d63db69e8e82f91f3cb1361 (diff)
parent7d8c71e8003ecb4d3a7fe2483a328d3f2d184faa (diff)
Merge branch 'master' into temp-geometry-nodes-fields-prototype
Diffstat (limited to 'source/blender/functions')
-rw-r--r--source/blender/functions/FN_generic_vector_array.hh2
-rw-r--r--source/blender/functions/FN_multi_function_params.hh11
-rw-r--r--source/blender/functions/intern/generic_vector_array.cc9
3 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/functions/FN_generic_vector_array.hh b/source/blender/functions/FN_generic_vector_array.hh
index eeba0c9dba2..179e85671f8 100644
--- a/source/blender/functions/FN_generic_vector_array.hh
+++ b/source/blender/functions/FN_generic_vector_array.hh
@@ -82,6 +82,8 @@ class GVectorArray : NonCopyable, NonMovable {
void extend(IndexMask mask, const GVVectorArray &values);
void extend(IndexMask mask, const GVectorArray &values);
+ void clear(IndexMask mask);
+
GMutableSpan operator[](int64_t index);
GSpan operator[](int64_t index) const;
diff --git a/source/blender/functions/FN_multi_function_params.hh b/source/blender/functions/FN_multi_function_params.hh
index e292d11def7..a480287d578 100644
--- a/source/blender/functions/FN_multi_function_params.hh
+++ b/source/blender/functions/FN_multi_function_params.hh
@@ -54,6 +54,11 @@ class MFParamsBuilder {
MFParamsBuilder(const class MultiFunction &fn, int64_t min_array_size);
+ template<typename T> void add_readonly_single_input_value(T value, StringRef expected_name = "")
+ {
+ T *value_ptr = &scope_.add_value<T>(std::move(value), __func__);
+ this->add_readonly_single_input(value_ptr, expected_name);
+ }
template<typename T> void add_readonly_single_input(const T *value, StringRef expected_name = "")
{
this->add_readonly_single_input(scope_.construct<GVArray_For_SingleValueRef>(
@@ -83,6 +88,12 @@ class MFParamsBuilder {
this->add_readonly_vector_input(
scope_.construct<GVVectorArray_For_GVectorArray>(__func__, vector_array), expected_name);
}
+ void add_readonly_vector_input(const GSpan single_vector, StringRef expected_name = "")
+ {
+ this->add_readonly_vector_input(
+ scope_.construct<GVVectorArray_For_SingleGSpan>(__func__, single_vector, min_array_size_),
+ expected_name);
+ }
void add_readonly_vector_input(const GVVectorArray &ref, StringRef expected_name = "")
{
this->assert_current_param_type(MFParamType::ForVectorInput(ref.type()), expected_name);
diff --git a/source/blender/functions/intern/generic_vector_array.cc b/source/blender/functions/intern/generic_vector_array.cc
index 9556d24218e..ec95a283919 100644
--- a/source/blender/functions/intern/generic_vector_array.cc
+++ b/source/blender/functions/intern/generic_vector_array.cc
@@ -78,6 +78,15 @@ void GVectorArray::extend(IndexMask mask, const GVectorArray &values)
this->extend(mask, virtual_values);
}
+void GVectorArray::clear(IndexMask mask)
+{
+ for (const int64_t i : mask) {
+ Item &item = items_[i];
+ type_.destruct_n(item.start, item.length);
+ item.length = 0;
+ }
+}
+
GMutableSpan GVectorArray::operator[](const int64_t index)
{
Item &item = items_[index];