[Bf-blender-cvs] [d218811e856] functions-experimental-refactor: access function and parameter names

Jacques Lucke noreply at git.blender.org
Thu Oct 31 14:13:04 CET 2019


Commit: d218811e85612fe1e547b057f874526d85532eea
Author: Jacques Lucke
Date:   Thu Oct 31 14:11:11 2019 +0100
Branches: functions-experimental-refactor
https://developer.blender.org/rBd218811e85612fe1e547b057f874526d85532eea

access function and parameter names

===================================================================

M	source/blender/blenkernel/BKE_multi_function.h
M	source/blender/blenkernel/BKE_multi_function_network.h
M	source/blender/blenkernel/BKE_multi_functions.h
M	source/blender/blenkernel/intern/multi_functions.cc
M	source/blender/modifiers/intern/MOD_functiondeform_cxx.cc

===================================================================

diff --git a/source/blender/blenkernel/BKE_multi_function.h b/source/blender/blenkernel/BKE_multi_function.h
index 42b38594928..19f75a42476 100644
--- a/source/blender/blenkernel/BKE_multi_function.h
+++ b/source/blender/blenkernel/BKE_multi_function.h
@@ -187,6 +187,7 @@ class MFContext {
 
 class MFSignature {
  private:
+  std::string m_function_name;
   Vector<std::string> m_param_names;
   Vector<MFParamType> m_param_types;
   Vector<uint> m_params_with_external_dependencies;
@@ -197,10 +198,12 @@ class MFSignature {
  public:
   MFSignature() = default;
 
-  MFSignature(Vector<std::string> param_names,
+  MFSignature(std::string function_name,
+              Vector<std::string> param_names,
               Vector<MFParamType> param_types,
               Vector<uint> params_with_external_dependencies)
-      : m_param_names(std::move(param_names)),
+      : m_function_name(std::move(function_name)),
+        m_param_names(std::move(param_names)),
         m_param_types(std::move(param_types)),
         m_params_with_external_dependencies(std::move(params_with_external_dependencies))
   {
@@ -312,11 +315,16 @@ class MFSignature {
 
 class MFSignatureBuilder {
  private:
+  std::string m_function_name;
   Vector<std::string> m_param_names;
   Vector<MFParamType> m_param_types;
   Vector<uint> m_params_with_external_dependencies;
 
  public:
+  MFSignatureBuilder(StringRef name) : m_function_name(name)
+  {
+  }
+
   template<typename T> void readonly_single_input(StringRef name)
   {
     this->readonly_single_input(name, GET_TYPE<T>());
@@ -378,7 +386,8 @@ class MFSignatureBuilder {
 
   MFSignature build()
   {
-    return MFSignature(std::move(m_param_names),
+    return MFSignature(std::move(m_function_name),
+                       std::move(m_param_names),
                        std::move(m_param_types),
                        std::move(m_params_with_external_dependencies));
   }
@@ -493,6 +502,11 @@ class MultiFunction {
     return m_signature.m_param_names[index];
   }
 
+  StringRefNull name() const
+  {
+    return m_signature.m_function_name;
+  }
+
  protected:
   void set_signature(MFSignatureBuilder &signature_builder)
   {
diff --git a/source/blender/blenkernel/BKE_multi_function_network.h b/source/blender/blenkernel/BKE_multi_function_network.h
index 9ac09956ef5..80b9673cf25 100644
--- a/source/blender/blenkernel/BKE_multi_function_network.h
+++ b/source/blender/blenkernel/BKE_multi_function_network.h
@@ -313,7 +313,12 @@ inline uint MFBuilderNode::id()
 
 inline StringRef MFBuilderNode::name()
 {
-  return "My Name";
+  if (this->is_function()) {
+    return this->as_function().function().name();
+  }
+  else {
+    return "Placeholder";
+  }
 }
 
 inline bool MFBuilderNode::is_function()
@@ -374,7 +379,18 @@ inline uint MFBuilderSocket::id()
 
 inline StringRef MFBuilderSocket::name()
 {
-  return "My Name";
+  if (m_node->is_function()) {
+    MFBuilderFunctionNode &node = m_node->as_function();
+    if (m_is_output) {
+      return node.function().param_name(node.output_param_indices()[m_index]);
+    }
+    else {
+      return node.function().param_name(node.input_param_indices()[m_index]);
+    }
+  }
+  else {
+    return "Placeholder";
+  }
 }
 
 inline bool MFBuilderSocket::is_input()
diff --git a/source/blender/blenkernel/BKE_multi_functions.h b/source/blender/blenkernel/BKE_multi_functions.h
index b63476f2474..9776dc56768 100644
--- a/source/blender/blenkernel/BKE_multi_functions.h
+++ b/source/blender/blenkernel/BKE_multi_functions.h
@@ -85,7 +85,7 @@ template<typename T> class MultiFunction_ConstantValue : public MultiFunction {
  public:
   MultiFunction_ConstantValue(T value) : m_value(std::move(value))
   {
-    MFSignatureBuilder signature;
+    MFSignatureBuilder signature("Constant " + GET_TYPE<T>().name());
     signature.single_output<T>("Output");
     this->set_signature(signature);
   }
@@ -106,7 +106,7 @@ template<typename T> class MultiFunction_EmptyList : public MultiFunction {
  public:
   MultiFunction_EmptyList()
   {
-    MFSignatureBuilder signature;
+    MFSignatureBuilder signature("Empty List - " + GET_TYPE<T>().name());
     signature.vector_output<T>("Output");
     this->set_signature(signature);
   }
@@ -122,7 +122,7 @@ template<typename FromT, typename ToT> class MultiFunction_Convert : public Mult
  public:
   MultiFunction_Convert()
   {
-    MFSignatureBuilder signature;
+    MFSignatureBuilder signature(GET_TYPE<FromT>().name() + " to " + GET_TYPE<ToT>().name());
     signature.readonly_single_input<FromT>("Input");
     signature.single_output<ToT>("Output");
     this->set_signature(signature);
@@ -146,7 +146,8 @@ template<typename FromT, typename ToT> class MultiFunction_ConvertList : public
  public:
   MultiFunction_ConvertList()
   {
-    MFSignatureBuilder signature;
+    MFSignatureBuilder signature(GET_TYPE<FromT>().name() + " List to " + GET_TYPE<ToT>().name() +
+                                 " List");
     signature.readonly_vector_input<FromT>("Inputs");
     signature.vector_output<ToT>("Outputs");
     this->set_signature(signature);
@@ -175,7 +176,7 @@ template<typename T> class MultiFunction_SingleElementList : public MultiFunctio
  public:
   MultiFunction_SingleElementList()
   {
-    MFSignatureBuilder signature;
+    MFSignatureBuilder signature("Single Element List - " + GET_TYPE<T>().name());
     signature.readonly_single_input<T>("Input");
     signature.vector_output<T>("Outputs");
     this->set_signature(signature);
diff --git a/source/blender/blenkernel/intern/multi_functions.cc b/source/blender/blenkernel/intern/multi_functions.cc
index 2afd1ee50fd..76dc6371057 100644
--- a/source/blender/blenkernel/intern/multi_functions.cc
+++ b/source/blender/blenkernel/intern/multi_functions.cc
@@ -12,7 +12,7 @@ using BLI::float3;
 
 MultiFunction_AddFloats::MultiFunction_AddFloats()
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Add Floats");
   signature.readonly_single_input<float>("A");
   signature.readonly_single_input<float>("B");
   signature.single_output<float>("Result");
@@ -34,7 +34,7 @@ void MultiFunction_AddFloats::call(ArrayRef<uint> mask_indices,
 
 MultiFunction_AddFloat3s::MultiFunction_AddFloat3s()
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Add Float3s");
   signature.readonly_single_input<float3>("A");
   signature.readonly_single_input<float3>("B");
   signature.single_output<float3>("Result");
@@ -56,7 +56,7 @@ void MultiFunction_AddFloat3s::call(ArrayRef<uint> mask_indices,
 
 MultiFunction_CombineVector::MultiFunction_CombineVector()
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Combine Vector");
   signature.readonly_single_input<float>("X");
   signature.readonly_single_input<float>("Y");
   signature.readonly_single_input<float>("Z");
@@ -80,7 +80,7 @@ void MultiFunction_CombineVector::call(ArrayRef<uint> mask_indices,
 
 MultiFunction_SeparateVector::MultiFunction_SeparateVector()
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Separate Vector");
   signature.readonly_single_input<float3>("Vector");
   signature.single_output<float>("X");
   signature.single_output<float>("Y");
@@ -107,7 +107,7 @@ void MultiFunction_SeparateVector::call(ArrayRef<uint> mask_indices,
 
 MultiFunction_VectorDistance::MultiFunction_VectorDistance()
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Vector Distance");
   signature.readonly_single_input<float3>("A");
   signature.readonly_single_input<float3>("A");
   signature.single_output<float>("Distances");
@@ -129,7 +129,7 @@ void MultiFunction_VectorDistance::call(ArrayRef<uint> mask_indices,
 
 MultiFunction_FloatArraySum::MultiFunction_FloatArraySum()
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Float Array Sum");
   signature.readonly_vector_input<float>("Array");
   signature.single_output<float>("Sum");
   this->set_signature(signature);
@@ -154,7 +154,7 @@ void MultiFunction_FloatArraySum::call(ArrayRef<uint> mask_indices,
 
 MultiFunction_FloatRange::MultiFunction_FloatRange()
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Float Range");
   signature.readonly_single_input<float>("Start");
   signature.readonly_single_input<float>("Step");
   signature.readonly_single_input<int>("Amount");
@@ -183,7 +183,7 @@ MultiFunction_PackList::MultiFunction_PackList(const CPPType &base_type,
                                                ArrayRef<bool> input_list_status)
     : m_base_type(base_type), m_input_list_status(input_list_status)
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Pack List");
   if (m_input_list_status.size() == 0) {
     /* Output just an empty list. */
     signature.vector_output("List", m_base_type);
@@ -259,7 +259,7 @@ bool MultiFunction_PackList::input_is_list(uint index) const
 MultiFunction_GetListElement::MultiFunction_GetListElement(const CPPType &base_type)
     : m_base_type(base_type)
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("Get List Element");
   signature.readonly_vector_input("List", m_base_type);
   signature.readonly_single_input<int>("Index");
   signature.readonly_single_input("Fallback", m_base_type);
@@ -293,7 +293,7 @@ void MultiFunction_GetListElement::call(ArrayRef<uint> mask_indices,
 MultiFunction_ListLength::MultiFunction_ListLength(const CPPType &base_type)
     : m_base_type(base_type)
 {
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature("List Length");
   signature.readonly_vector_input("List", m_base_type);
   signature.single_output<int>("Length");
   this->set_signature(signature);
@@ -317,7 +317,7 @@ MultiFunction_SimpleVectorize::MultiFunction_SimpleVectorize(const MultiFunction
 {
   BLI_assert(input_is_vectorized.contains(true));
 
-  MFSignatureBuilder signature;
+  MFSignatureBuilder signature(function.name() + " (Vectorized)");
 
   bool found_output_param = false;
   UNUSED_VARS_NDEBUG(found_output_param);
diff --git a/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc b/source/blender/modifiers/intern/MOD_functiondeform_cxx.cc
index 408f0dd6c87..376fc518bc8 100644
--- a/source/blender/modifiers/intern/MOD_functiond

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list