[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 &params, 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 &params,
         }
         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