[Bf-blender-cvs] [fea9c7c1a39] functions-experimental-refactor: cleanup
Jacques Lucke
noreply at git.blender.org
Fri Nov 8 20:36:38 CET 2019
Commit: fea9c7c1a394360a40fae7f9575867cca0424463
Author: Jacques Lucke
Date: Fri Nov 8 19:15:21 2019 +0100
Branches: functions-experimental-refactor
https://developer.blender.org/rBfea9c7c1a394360a40fae7f9575867cca0424463
cleanup
===================================================================
M source/blender/functions/FN_multi_function.h
M source/blender/functions/FN_multi_function_data_type.h
M source/blender/functions/FN_multi_function_param_type.h
M source/blender/functions/intern/multi_functions/mixed.cc
M source/blender/functions/intern/multi_functions/mixed.h
M source/blender/functions/intern/multi_functions/network.cc
M source/blender/functions/intern/multi_functions/network.h
M source/blender/functions/intern/vtree_multi_function_network/builder.cc
M source/blender/functions/intern/vtree_multi_function_network/builder.h
M source/blender/functions/intern/vtree_multi_function_network/mappings_nodes.cc
M source/blender/simulations/bparticles/particle_function.cpp
===================================================================
diff --git a/source/blender/functions/FN_multi_function.h b/source/blender/functions/FN_multi_function.h
index 4b31ae57f0b..d238f0aa20d 100644
--- a/source/blender/functions/FN_multi_function.h
+++ b/source/blender/functions/FN_multi_function.h
@@ -42,9 +42,6 @@ class MFSignature {
for (MFParamType param_type : m_param_types) {
uint corrected_index = 0;
switch (param_type.category()) {
- case MFParamType::None:
- BLI_assert(false);
- break;
case MFParamType::ReadonlySingleInput:
corrected_index = array_or_single_refs++;
break;
diff --git a/source/blender/functions/FN_multi_function_data_type.h b/source/blender/functions/FN_multi_function_data_type.h
index 32f0babcc2c..4f8b520fa63 100644
--- a/source/blender/functions/FN_multi_function_data_type.h
+++ b/source/blender/functions/FN_multi_function_data_type.h
@@ -8,35 +8,36 @@ namespace FN {
struct MFDataType {
public:
enum Category {
- None,
Single,
Vector,
};
- MFDataType() = default;
-
+ private:
MFDataType(Category category, const CPPType &type) : m_category(category), m_base_type(&type)
{
}
- static MFDataType ForNone()
- {
- return MFDataType{};
- }
+ public:
+ MFDataType() = default;
template<typename T> static MFDataType ForSingle()
{
- return MFDataType(Category::Single, CPP_TYPE<T>());
+ return MFDataType::ForSingle(CPP_TYPE<T>());
}
template<typename T> static MFDataType ForVector()
{
- return MFDataType(Category::Vector, CPP_TYPE<T>());
+ return MFDataType::ForVector(CPP_TYPE<T>());
+ }
+
+ static MFDataType ForSingle(const CPPType &type)
+ {
+ return MFDataType(Category::Single, type);
}
- bool is_none() const
+ static MFDataType ForVector(const CPPType &type)
{
- return m_category == Category::None;
+ return MFDataType(Category::Vector, type);
}
bool is_single() const
@@ -77,8 +78,8 @@ struct MFDataType {
}
private:
- Category m_category = Category::None;
- const CPPType *m_base_type = nullptr;
+ Category m_category;
+ const CPPType *m_base_type;
};
} // namespace FN
diff --git a/source/blender/functions/FN_multi_function_param_type.h b/source/blender/functions/FN_multi_function_param_type.h
index e119bfd4967..7c9adaa8b2f 100644
--- a/source/blender/functions/FN_multi_function_param_type.h
+++ b/source/blender/functions/FN_multi_function_param_type.h
@@ -8,7 +8,6 @@ namespace FN {
struct MFParamType {
public:
enum Category {
- None,
ReadonlySingleInput,
SingleOutput,
ReadonlyVectorInput,
@@ -16,16 +15,12 @@ struct MFParamType {
MutableVector,
};
+ public:
MFParamType(Category category, const CPPType *base_type = nullptr)
: m_category(category), m_base_type(base_type)
{
}
- bool is_none() const
- {
- return m_category == MFParamType::None;
- }
-
bool is_readonly_single_input() const
{
return m_category == ReadonlySingleInput;
@@ -64,18 +59,16 @@ struct MFParamType {
MFDataType as_data_type() const
{
switch (m_category) {
- case None:
- return {};
case ReadonlySingleInput:
case SingleOutput:
- return {MFDataType::Single, *m_base_type};
+ return MFDataType::ForSingle(*m_base_type);
case ReadonlyVectorInput:
case VectorOutput:
case MutableVector:
- return {MFDataType::Vector, *m_base_type};
+ return MFDataType::ForVector(*m_base_type);
}
BLI_assert(false);
- return {};
+ return MFDataType::ForSingle<float>();
}
Category category() const
@@ -99,8 +92,8 @@ struct MFParamType {
}
private:
- Category m_category = Category::None;
- const CPPType *m_base_type = nullptr;
+ Category m_category;
+ const CPPType *m_base_type;
};
} // namespace FN
diff --git a/source/blender/functions/intern/multi_functions/mixed.cc b/source/blender/functions/intern/multi_functions/mixed.cc
index e8cc83a796a..877e2e356ec 100644
--- a/source/blender/functions/intern/multi_functions/mixed.cc
+++ b/source/blender/functions/intern/multi_functions/mixed.cc
@@ -378,7 +378,6 @@ MF_SimpleVectorize::MF_SimpleVectorize(const MultiFunction &function,
MFParamType param_type = function.param_type(param_index);
StringRef param_name = function.param_name(param_index);
switch (param_type.category()) {
- case MFParamType::None:
case MFParamType::ReadonlyVectorInput:
case MFParamType::VectorOutput:
case MFParamType::MutableVector: {
@@ -441,7 +440,6 @@ void MF_SimpleVectorize::call(const MFMask &mask, MFParams ¶ms, MFContext &c
for (uint param_index : m_function.param_indices()) {
MFParamType param_type = m_function.param_type(param_index);
switch (param_type.category()) {
- case MFParamType::None:
case MFParamType::ReadonlyVectorInput:
case MFParamType::VectorOutput:
case MFParamType::MutableVector: {
diff --git a/source/blender/functions/intern/multi_functions/mixed.h b/source/blender/functions/intern/multi_functions/mixed.h
index 60f9585fa03..70c5e6ff0f3 100644
--- a/source/blender/functions/intern/multi_functions/mixed.h
+++ b/source/blender/functions/intern/multi_functions/mixed.h
@@ -4,6 +4,13 @@
namespace FN {
+class MF_Dummy final : public MultiFunction {
+ void call(const MFMask &UNUSED(mask),
+ MFParams &UNUSED(params),
+ MFContext &UNUSED(context)) const override
+ {
+ }
+};
class MF_AddFloats final : public MultiFunction {
public:
MF_AddFloats();
diff --git a/source/blender/functions/intern/multi_functions/network.cc b/source/blender/functions/intern/multi_functions/network.cc
index 1a15443b5d5..67c6f988d1e 100644
--- a/source/blender/functions/intern/multi_functions/network.cc
+++ b/source/blender/functions/intern/multi_functions/network.cc
@@ -58,10 +58,6 @@ BLI_NOINLINE void MF_EvaluateNetwork::copy_inputs_to_storage(MFParams ¶ms,
}
break;
}
- case MFDataType::None: {
- BLI_assert(false);
- break;
- }
}
}
}
@@ -126,10 +122,6 @@ BLI_NOINLINE void MF_EvaluateNetwork::compute_and_forward_outputs(
for (uint param_index : function.param_indices()) {
MFParamType param_type = function.param_type(param_index);
switch (param_type.category()) {
- case MFParamType::None: {
- BLI_assert(false);
- break;
- }
case MFParamType::ReadonlySingleInput: {
uint input_socket_index = function_node.input_param_indices().first_index(param_index);
const MFInputSocket &input_socket = *function_node.inputs()[input_socket_index];
@@ -233,10 +225,6 @@ BLI_NOINLINE void MF_EvaluateNetwork::copy_computed_values_to_outputs(const MFMa
uint global_param_index = m_inputs.size() + output_index;
const MFInputSocket &socket = *m_outputs[output_index];
switch (socket.type().category()) {
- case MFDataType::None: {
- BLI_assert(false);
- break;
- }
case MFDataType::Single: {
GenericVirtualListRef values = storage.get_virtual_list_for_input(socket);
GenericMutableArrayRef output_values = params.single_output(global_param_index, "Output");
diff --git a/source/blender/functions/intern/multi_functions/network.h b/source/blender/functions/intern/multi_functions/network.h
index f7fed025724..15fd68d8144 100644
--- a/source/blender/functions/intern/multi_functions/network.h
+++ b/source/blender/functions/intern/multi_functions/network.h
@@ -31,9 +31,6 @@ class MF_EvaluateNetwork final : public MultiFunction {
case MFDataType::Vector:
signature.readonly_vector_input("Input", type.base_type());
break;
- case MFDataType::None:
- BLI_assert(false);
- break;
}
}
for (auto socket : m_outputs) {
@@ -47,9 +44,6 @@ class MF_EvaluateNetwork final : public MultiFunction {
case MFDataType::Vector:
signature.vector_output("Output", type.base_type());
break;
- case MFDataType::None:
- BLI_assert(false);
- break;
}
}
this->set_signature(signature);
@@ -138,8 +132,6 @@ class MF_EvaluateNetwork final : public MultiFunction {
case MFDataType::Vector:
return m_virtual_list_list_for_inputs.contains(socket.id()) ||
m_vector_per_socket.contains(socket.id());
- case MFDataType::None:
- break;
}
BLI_assert(false);
return false;
diff --git a/source/blender/functions/intern/vtree_multi_function_network/builder.cc b/source/blender/functions/intern/vtree_multi_function_network/builder.cc
index 06c6c8d4b06..13ce53e6635 100644
--- a/source/blender/functions/intern/vtree_multi_function_network/builder.cc
+++ b/source/blender/functions/intern/vtree_multi_function_network/builder.cc
@@ -13,9 +13,13 @@ VTreeMFNetworkBuilder::VTreeMFNetworkBuilder(const VirtualNodeTree &vtree,
m_builder(BLI::make_unique<MFNetworkBuilder>())
{
for (const VSocket *vsocket : vtree.all_sockets()) {
- MFDataType data_type = vtree_mappings.data_type_by_idname.lookup_default(
- vsocket->idname(), MFDataType::ForNone());
- m_type_by_vsocket[vsocket->id()] = data_type;
+ const MFDataType *data_type = vtree_mappings.data_type_by_idname.lookup_ptr(vsocket->idname());
+ if (data_type == nullptr) {
+ m_type_by_vsocket[vsocket->id()] = {};
+ }
+ else {
+ m_type_by_vsocket[vsocket->id()] = MFDataType(*data_type);
+ }
}
}
@@ -41,17 +45,17 @@ MFBuilderDummyNode &VTreeMFNetworkBuilder::add_dummy(const VNode &vnode)
{
Vector<MFDataType> input_types;
for (const VInputSocket *vsocket : vnode.inputs()) {
- MFDataType data_type = this->try_get_data_type(*vsocket);
- if (!data_type.is_none()) {
- input_types.append(data_type);
+ Optional<MFDataType> data_type = this->try_get_data_type(*vsocket);
+ if (data_type.has_value()) {
+ input_types.append(data_type.value());
}
}
Vector<MFDataType> output_types;
for (const VOutputSocket *vsocket : vnode.outputs()) {
- MFDataType data_type = this->try_get_data_type(*vsocket);
- if (
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list