[Bf-blender-cvs] [795bae3410d] functions: cleanup type mappings

Jacques Lucke noreply at git.blender.org
Thu Aug 1 18:23:23 CEST 2019


Commit: 795bae3410dd681c399307b7179b16d8e2562216
Author: Jacques Lucke
Date:   Thu Aug 1 15:07:04 2019 +0200
Branches: functions
https://developer.blender.org/rB795bae3410dd681c399307b7179b16d8e2562216

cleanup type mappings

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

M	source/blender/functions/frontends/data_flow_nodes/inserters.hpp
M	source/blender/functions/frontends/data_flow_nodes/inserters/conversions.cpp
M	source/blender/functions/frontends/data_flow_nodes/type_mappings.cpp
M	source/blender/functions/frontends/data_flow_nodes/type_mappings.hpp

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

diff --git a/source/blender/functions/frontends/data_flow_nodes/inserters.hpp b/source/blender/functions/frontends/data_flow_nodes/inserters.hpp
index 5b0ef78d0b8..c45ae79649d 100644
--- a/source/blender/functions/frontends/data_flow_nodes/inserters.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/inserters.hpp
@@ -7,6 +7,7 @@
 #include "FN_tuple_call.hpp"
 
 #include "vtree_data_graph_builder.hpp"
+#include "type_mappings.hpp"
 
 struct PointerRNA;
 
@@ -71,15 +72,19 @@ class SocketLoaderRegistry {
 class ConversionInserterRegistry {
  private:
   Map<StringPair, ConversionInserter> &m_map;
+  StringMap<std::string> &m_idname_by_data_type;
 
  public:
-  ConversionInserterRegistry(Map<StringPair, ConversionInserter> &map) : m_map(map)
+  ConversionInserterRegistry(Map<StringPair, ConversionInserter> &map)
+      : m_map(map), m_idname_by_data_type(get_idname_by_data_type_map())
   {
   }
 
   void inserter(StringRef from_type, StringRef to_type, ConversionInserter inserter)
   {
-    m_map.add_new(StringPair(from_type.to_std_string(), to_type.to_std_string()), inserter);
+    std::string &from_idname = m_idname_by_data_type.lookup_ref(from_type);
+    std::string &to_idname = m_idname_by_data_type.lookup_ref(to_type);
+    m_map.add_new(StringPair(from_idname, to_idname), inserter);
   }
   void function(StringRef from_type, StringRef to_type, FunctionGetter getter)
   {
diff --git a/source/blender/functions/frontends/data_flow_nodes/inserters/conversions.cpp b/source/blender/functions/frontends/data_flow_nodes/inserters/conversions.cpp
index 79f0b932b8b..54dcf125f8b 100644
--- a/source/blender/functions/frontends/data_flow_nodes/inserters/conversions.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/inserters/conversions.cpp
@@ -18,32 +18,26 @@ static void INSERT_base_to_list(VTreeDataGraphBuilder &builder,
 
 void register_conversion_inserters(ConversionInserterRegistry &registry)
 {
-  registry.function("fn_BooleanSocket", "fn_IntegerSocket", Functions::GET_FN_bool_to_int32);
-  registry.function("fn_BooleanSocket", "fn_FloatSocket", Functions::GET_FN_bool_to_float);
-  registry.function("fn_IntegerSocket", "fn_BooleanSocket", Functions::GET_FN_int32_to_bool);
-  registry.function("fn_IntegerSocket", "fn_FloatSocket", Functions::GET_FN_int32_to_float);
-  registry.function("fn_FloatSocket", "fn_BooleanSocket", Functions::GET_FN_float_to_bool);
-  registry.function("fn_FloatSocket", "fn_IntegerSocket", Functions::GET_FN_float_to_int32);
+  registry.function("Boolean", "Integer", Functions::GET_FN_bool_to_int32);
+  registry.function("Boolean", "Float", Functions::GET_FN_bool_to_float);
+  registry.function("Integer", "Boolean", Functions::GET_FN_int32_to_bool);
+  registry.function("Integer", "Float", Functions::GET_FN_int32_to_float);
+  registry.function("Float", "Boolean", Functions::GET_FN_float_to_bool);
+  registry.function("Float", "Integer", Functions::GET_FN_float_to_int32);
 
-  registry.function(
-      "fn_BooleanListSocket", "fn_IntegerListSocket", Functions::GET_FN_bool_list_to_int32_list);
-  registry.function(
-      "fn_BooleanListSocket", "fn_FloatListSocket", Functions::GET_FN_bool_list_to_float_list);
-  registry.function(
-      "fn_IntegerListSocket", "fn_BooleanListSocket", Functions::GET_FN_int32_list_to_bool_list);
-  registry.function(
-      "fn_IntegerListSocket", "fn_FloatListSocket", Functions::GET_FN_int32_list_to_float_list);
-  registry.function(
-      "fn_FloatListSocket", "fn_BooleanListSocket", Functions::GET_FN_float_list_to_bool_list);
-  registry.function(
-      "fn_FloatListSocket", "fn_IntegerListSocket", Functions::GET_FN_float_list_to_int32_list);
+  registry.function("Boolean List", "Integer List", Functions::GET_FN_bool_list_to_int32_list);
+  registry.function("Boolean List", "Float List", Functions::GET_FN_bool_list_to_float_list);
+  registry.function("Integer List", "Boolean List", Functions::GET_FN_int32_list_to_bool_list);
+  registry.function("Integer List", "Float List", Functions::GET_FN_int32_list_to_float_list);
+  registry.function("Float List", "Boolean List", Functions::GET_FN_float_list_to_bool_list);
+  registry.function("Float List", "Integer List", Functions::GET_FN_float_list_to_int32_list);
 
-  registry.inserter("fn_FloatSocket", "fn_FloatListSocket", INSERT_base_to_list);
-  registry.inserter("fn_VectorSocket", "fn_VectorListSocket", INSERT_base_to_list);
-  registry.inserter("fn_IntegerSocket", "fn_IntegerListSocket", INSERT_base_to_list);
-  registry.inserter("fn_BooleanSocket", "fn_BooleanListSocket", INSERT_base_to_list);
-  registry.inserter("fn_ObjectSocket", "fn_ObjectListSocket", INSERT_base_to_list);
-  registry.inserter("fn_ColorSocket", "fn_ColorListSocket", INSERT_base_to_list);
+  registry.inserter("Float", "Float List", INSERT_base_to_list);
+  registry.inserter("Vector", "Vector List", INSERT_base_to_list);
+  registry.inserter("Integer", "Integer List", INSERT_base_to_list);
+  registry.inserter("Boolean", "Boolean List", INSERT_base_to_list);
+  registry.inserter("Object", "Object List", INSERT_base_to_list);
+  registry.inserter("Color", "Color List", INSERT_base_to_list);
 }
 
 }  // namespace DataFlowNodes
diff --git a/source/blender/functions/frontends/data_flow_nodes/type_mappings.cpp b/source/blender/functions/frontends/data_flow_nodes/type_mappings.cpp
index 317f58254c4..8ba2cae82e9 100644
--- a/source/blender/functions/frontends/data_flow_nodes/type_mappings.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/type_mappings.cpp
@@ -8,17 +8,19 @@ namespace FN {
 namespace DataFlowNodes {
 
 struct StringTypeMappings {
-  StringMap<SharedType> by_idname;
-  StringMap<SharedType> by_type_name;
+  StringMap<SharedType> type_by_idname;
+  StringMap<SharedType> type_by_type_name;
   StringMap<std::string> data_type_by_idname;
+  StringMap<std::string> idname_by_data_type;
 };
 
-BLI_LAZY_INIT_STATIC(StringTypeMappings, get_type_by_name_mappings)
+BLI_LAZY_INIT_STATIC(StringTypeMappings, get_type_mappings)
 {
 #define ADD_TYPE(idname, data_type, func_suffix) \
-  maps.by_idname.add_new(idname, Types::GET_TYPE_##func_suffix()); \
-  maps.by_type_name.add_new(data_type, Types::GET_TYPE_##func_suffix()); \
-  maps.data_type_by_idname.add_new(idname, data_type)
+  maps.type_by_idname.add_new(idname, Types::GET_TYPE_##func_suffix()); \
+  maps.type_by_type_name.add_new(data_type, Types::GET_TYPE_##func_suffix()); \
+  maps.data_type_by_idname.add_new(idname, data_type); \
+  maps.idname_by_data_type.add_new(data_type, idname)
 
   StringTypeMappings maps;
   ADD_TYPE("fn_FloatSocket", "Float", float);
@@ -40,17 +42,22 @@ BLI_LAZY_INIT_STATIC(StringTypeMappings, get_type_by_name_mappings)
 
 StringMap<SharedType> &get_type_by_idname_map()
 {
-  return get_type_by_name_mappings().by_idname;
+  return get_type_mappings().type_by_idname;
 }
 
 StringMap<SharedType> &get_type_by_data_type_map()
 {
-  return get_type_by_name_mappings().by_type_name;
+  return get_type_mappings().type_by_type_name;
 }
 
 StringMap<std::string> &get_data_type_by_idname_map()
 {
-  return get_type_by_name_mappings().data_type_by_idname;
+  return get_type_mappings().data_type_by_idname;
+}
+
+StringMap<std::string> &get_idname_by_data_type_map()
+{
+  return get_type_mappings().idname_by_data_type;
 }
 
 }  // namespace DataFlowNodes
diff --git a/source/blender/functions/frontends/data_flow_nodes/type_mappings.hpp b/source/blender/functions/frontends/data_flow_nodes/type_mappings.hpp
index e6a10aa3b95..a988c8e2b6f 100644
--- a/source/blender/functions/frontends/data_flow_nodes/type_mappings.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/type_mappings.hpp
@@ -9,6 +9,7 @@ namespace DataFlowNodes {
 StringMap<SharedType> &get_type_by_idname_map();
 StringMap<SharedType> &get_type_by_data_type_map();
 StringMap<std::string> &get_data_type_by_idname_map();
+StringMap<std::string> &get_idname_by_data_type_map();
 
 }  // namespace DataFlowNodes
 }  // namespace FN



More information about the Bf-blender-cvs mailing list