[Bf-blender-cvs] [4d74116218f] functions: initial MultiFunctionID

Jacques Lucke noreply at git.blender.org
Mon Feb 17 10:45:32 CET 2020


Commit: 4d74116218fc0c23920d2828f79e1d92803a40f1
Author: Jacques Lucke
Date:   Sat Feb 15 17:55:18 2020 +0100
Branches: functions
https://developer.blender.org/rB4d74116218fc0c23920d2828f79e1d92803a40f1

initial MultiFunctionID

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

M	source/blender/functions/CMakeLists.txt
M	source/blender/functions/FN_multi_function.h
A	source/blender/functions/intern/multi_function.cc

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

diff --git a/source/blender/functions/CMakeLists.txt b/source/blender/functions/CMakeLists.txt
index fc9f97a6fcf..4e73a5c0238 100644
--- a/source/blender/functions/CMakeLists.txt
+++ b/source/blender/functions/CMakeLists.txt
@@ -47,6 +47,7 @@ set(SRC
   intern/multi_function_context.cc
   intern/multi_function_network_optimization.cc
   intern/multi_function_network.cc
+  intern/multi_function.cc
   intern/node_tree.cc
 
   FN_attributes_ref.h
diff --git a/source/blender/functions/FN_multi_function.h b/source/blender/functions/FN_multi_function.h
index 893d7a10354..a96cb66bf97 100644
--- a/source/blender/functions/FN_multi_function.h
+++ b/source/blender/functions/FN_multi_function.h
@@ -2,6 +2,7 @@
 #define __FN_MULTI_FUNCTION_H__
 
 #include <typeinfo>
+#include <memory>
 
 #include "FN_generic_array_ref.h"
 #include "FN_generic_vector_array.h"
@@ -17,6 +18,39 @@ namespace FN {
 
 class MultiFunction;
 
+class MultiFunctionID {
+ private:
+  uint32_t m_hash;
+
+ public:
+  MultiFunctionID(uint32_t hash) : m_hash(hash)
+  {
+  }
+
+  virtual ~MultiFunctionID();
+
+  uint32_t hash() const
+  {
+    return m_hash;
+  }
+
+  friend bool operator==(const MultiFunctionID &a, const MultiFunctionID &b)
+  {
+    if (a.hash() != b.hash()) {
+      return false;
+    }
+    return a.is_same(b);
+  }
+
+  friend bool operator!=(const MultiFunctionID &a, const MultiFunctionID &b)
+  {
+    return !(a == b);
+  }
+
+ protected:
+  virtual bool is_same(const MultiFunctionID &other) const = 0;
+};
+
 struct MFSignatureData {
   std::string function_name;
   Vector<std::string> param_names;
diff --git a/source/blender/functions/intern/multi_function.cc b/source/blender/functions/intern/multi_function.cc
new file mode 100644
index 00000000000..f74983ad132
--- /dev/null
+++ b/source/blender/functions/intern/multi_function.cc
@@ -0,0 +1,9 @@
+#include "FN_multi_function.h"
+
+namespace FN {
+
+MultiFunctionID::~MultiFunctionID()
+{
+}
+
+}  // namespace FN



More information about the Bf-blender-cvs mailing list