[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 ®istry)
{
- 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