Changeset View
Changeset View
Standalone View
Standalone View
source/blender/functions/FN_multi_function_params.hh
| Show First 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | MFParamsBuilder(const MFSignature &signature, int64_t min_array_size) | ||||
| : signature_(&signature), min_array_size_(min_array_size) | : signature_(&signature), min_array_size_(min_array_size) | ||||
| { | { | ||||
| } | } | ||||
| MFParamsBuilder(const class MultiFunction &fn, int64_t min_array_size); | MFParamsBuilder(const class MultiFunction &fn, int64_t min_array_size); | ||||
| template<typename T> void add_readonly_single_input(const T *value, StringRef expected_name = "") | template<typename T> void add_readonly_single_input(const T *value, StringRef expected_name = "") | ||||
| { | { | ||||
| this->add_readonly_single_input(scope_.construct<GVArrayForSingleValueRef>( | this->add_readonly_single_input(scope_.construct<GVArray_For_SingleValueRef>( | ||||
| __func__, CPPType::get<T>(), min_array_size_, value), | __func__, CPPType::get<T>(), min_array_size_, value), | ||||
| expected_name); | expected_name); | ||||
| } | } | ||||
| void add_readonly_single_input(const GSpan span, StringRef expected_name = "") | void add_readonly_single_input(const GSpan span, StringRef expected_name = "") | ||||
| { | { | ||||
| this->add_readonly_single_input(scope_.construct<GVArrayForGSpan>(__func__, span), | this->add_readonly_single_input(scope_.construct<GVArray_For_GSpan>(__func__, span), | ||||
| expected_name); | expected_name); | ||||
| } | } | ||||
| void add_readonly_single_input(const GVArray &ref, StringRef expected_name = "") | void add_readonly_single_input(const GVArray &ref, StringRef expected_name = "") | ||||
| { | { | ||||
| this->assert_current_param_type(MFParamType::ForSingleInput(ref.type()), expected_name); | this->assert_current_param_type(MFParamType::ForSingleInput(ref.type()), expected_name); | ||||
| BLI_assert(ref.size() >= min_array_size_); | BLI_assert(ref.size() >= min_array_size_); | ||||
| virtual_arrays_.append(&ref); | virtual_arrays_.append(&ref); | ||||
| } | } | ||||
| void add_readonly_vector_input(const GVectorArray &vector_array, StringRef expected_name = "") | void add_readonly_vector_input(const GVectorArray &vector_array, StringRef expected_name = "") | ||||
| { | { | ||||
| this->add_readonly_vector_input( | this->add_readonly_vector_input( | ||||
| scope_.construct<GVVectorArrayForGVectorArray>(__func__, vector_array), expected_name); | scope_.construct<GVVectorArray_For_GVectorArray>(__func__, vector_array), expected_name); | ||||
| } | } | ||||
| void add_readonly_vector_input(const GVVectorArray &ref, StringRef expected_name = "") | void add_readonly_vector_input(const GVVectorArray &ref, StringRef expected_name = "") | ||||
| { | { | ||||
| this->assert_current_param_type(MFParamType::ForVectorInput(ref.type()), expected_name); | this->assert_current_param_type(MFParamType::ForVectorInput(ref.type()), expected_name); | ||||
| BLI_assert(ref.size() >= min_array_size_); | BLI_assert(ref.size() >= min_array_size_); | ||||
| virtual_vector_arrays_.append(&ref); | virtual_vector_arrays_.append(&ref); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | |||||
| public: | public: | ||||
| MFParams(MFParamsBuilder &builder) : builder_(&builder) | MFParams(MFParamsBuilder &builder) : builder_(&builder) | ||||
| { | { | ||||
| } | } | ||||
| template<typename T> const VArray<T> &readonly_single_input(int param_index, StringRef name = "") | template<typename T> const VArray<T> &readonly_single_input(int param_index, StringRef name = "") | ||||
| { | { | ||||
| const GVArray &array = this->readonly_single_input(param_index, name); | const GVArray &array = this->readonly_single_input(param_index, name); | ||||
| return builder_->scope_.construct<VArrayForGVArray<T>>(__func__, array); | return builder_->scope_.construct<VArray_For_GVArray<T>>(__func__, array); | ||||
| } | } | ||||
| const GVArray &readonly_single_input(int param_index, StringRef name = "") | const GVArray &readonly_single_input(int param_index, StringRef name = "") | ||||
| { | { | ||||
| this->assert_correct_param(param_index, name, MFParamType::SingleInput); | this->assert_correct_param(param_index, name, MFParamType::SingleInput); | ||||
| int data_index = builder_->signature_->data_index(param_index); | int data_index = builder_->signature_->data_index(param_index); | ||||
| return *builder_->virtual_arrays_[data_index]; | return *builder_->virtual_arrays_[data_index]; | ||||
| } | } | ||||
| template<typename T> | template<typename T> | ||||
| MutableSpan<T> uninitialized_single_output(int param_index, StringRef name = "") | MutableSpan<T> uninitialized_single_output(int param_index, StringRef name = "") | ||||
| { | { | ||||
| return this->uninitialized_single_output(param_index, name).typed<T>(); | return this->uninitialized_single_output(param_index, name).typed<T>(); | ||||
| } | } | ||||
| GMutableSpan uninitialized_single_output(int param_index, StringRef name = "") | GMutableSpan uninitialized_single_output(int param_index, StringRef name = "") | ||||
| { | { | ||||
| this->assert_correct_param(param_index, name, MFParamType::SingleOutput); | this->assert_correct_param(param_index, name, MFParamType::SingleOutput); | ||||
| int data_index = builder_->signature_->data_index(param_index); | int data_index = builder_->signature_->data_index(param_index); | ||||
| return builder_->mutable_spans_[data_index]; | return builder_->mutable_spans_[data_index]; | ||||
| } | } | ||||
| template<typename T> | template<typename T> | ||||
| const VVectorArray<T> &readonly_vector_input(int param_index, StringRef name = "") | const VVectorArray<T> &readonly_vector_input(int param_index, StringRef name = "") | ||||
| { | { | ||||
| const GVVectorArray &vector_array = this->readonly_vector_input(param_index, name); | const GVVectorArray &vector_array = this->readonly_vector_input(param_index, name); | ||||
| return builder_->scope_.construct<VVectorArrayForGVVectorArray<T>>(__func__, vector_array); | return builder_->scope_.construct<VVectorArray_For_GVVectorArray<T>>(__func__, vector_array); | ||||
| } | } | ||||
| const GVVectorArray &readonly_vector_input(int param_index, StringRef name = "") | const GVVectorArray &readonly_vector_input(int param_index, StringRef name = "") | ||||
| { | { | ||||
| this->assert_correct_param(param_index, name, MFParamType::VectorInput); | this->assert_correct_param(param_index, name, MFParamType::VectorInput); | ||||
| int data_index = builder_->signature_->data_index(param_index); | int data_index = builder_->signature_->data_index(param_index); | ||||
| return *builder_->virtual_vector_arrays_[data_index]; | return *builder_->virtual_vector_arrays_[data_index]; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 60 Lines • Show Last 20 Lines | |||||