[Bf-blender-cvs] [218fcf4473b] functions: replace another map with a vector
Jacques Lucke
noreply at git.blender.org
Thu Aug 1 18:22:58 CEST 2019
Commit: 218fcf4473bcbba4c48ecc062be197763484bfd9
Author: Jacques Lucke
Date: Thu Aug 1 10:28:30 2019 +0200
Branches: functions
https://developer.blender.org/rB218fcf4473bcbba4c48ecc062be197763484bfd9
replace another map with a vector
===================================================================
M source/blender/functions/core/data_flow_graph_builder.hpp
M source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.cpp
M source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.hpp
===================================================================
diff --git a/source/blender/functions/core/data_flow_graph_builder.hpp b/source/blender/functions/core/data_flow_graph_builder.hpp
index 2c0eda027aa..04168faff25 100644
--- a/source/blender/functions/core/data_flow_graph_builder.hpp
+++ b/source/blender/functions/core/data_flow_graph_builder.hpp
@@ -31,6 +31,16 @@ class DFGB_Socket {
{
}
+ static DFGB_Socket None()
+ {
+ return DFGB_Socket(nullptr, false, (uint)-1);
+ }
+
+ bool is_none()
+ {
+ return m_index == (uint)-1;
+ }
+
inline DFGB_Node *node() const;
inline bool is_input() const;
inline bool is_output() const;
diff --git a/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.cpp b/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.cpp
index e31a89779a8..0f7ed485ddb 100644
--- a/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.cpp
@@ -29,6 +29,7 @@ namespace DataFlowNodes {
VTreeDataGraphBuilder::VTreeDataGraphBuilder(VirtualNodeTree &vtree)
: m_vtree(vtree),
+ m_socket_map(vtree.socket_count(), DFGB_Socket::None()),
m_type_by_idname(get_type_by_idname_map()),
m_type_by_data_type(get_type_by_data_type_map()),
m_data_type_by_idname(get_data_type_by_idname_map())
@@ -37,14 +38,16 @@ VTreeDataGraphBuilder::VTreeDataGraphBuilder(VirtualNodeTree &vtree)
static Vector<DFGraphSocket> build_mapping_for_original_sockets(
VirtualNodeTree &vtree,
- Map<VirtualSocket *, DFGB_Socket> &socket_map,
+ Vector<DFGB_Socket> &socket_map,
DataFlowGraph::ToBuilderMapping &builder_mapping)
{
Vector<DFGraphSocket> original_socket_mapping(vtree.socket_count(), DFGraphSocket::None());
- for (auto item : socket_map.items()) {
- VirtualSocket *vsocket = item.key;
- DFGraphSocket socket = builder_mapping.map_socket(item.value);
- original_socket_mapping[vsocket->id()] = socket;
+ for (uint vsocket_id = 0; vsocket_id < socket_map.size(); vsocket_id++) {
+ DFGB_Socket socket = socket_map[vsocket_id];
+ if (socket.is_none()) {
+ continue;
+ }
+ original_socket_mapping[vsocket_id] = builder_mapping.map_socket(socket);
}
return original_socket_mapping;
}
@@ -131,7 +134,7 @@ void VTreeDataGraphBuilder::map_socket(DFGB_Socket socket, VirtualSocket *vsocke
{
BLI_assert(this->is_data_socket(vsocket) ? socket.type() == this->query_socket_type(vsocket) :
true);
- m_socket_map.add(vsocket, socket);
+ m_socket_map[vsocket->id()] = socket;
}
void VTreeDataGraphBuilder::map_sockets(DFGB_Node *node, VirtualNode *vnode)
@@ -187,8 +190,8 @@ void VTreeDataGraphBuilder::map_output(DFGB_Socket socket, VirtualNode *vnode, u
DFGB_Socket VTreeDataGraphBuilder::lookup_socket(VirtualSocket *vsocket)
{
- BLI_assert(m_socket_map.contains(vsocket));
- return m_socket_map.lookup(vsocket);
+ BLI_assert(!m_socket_map[vsocket->id()].is_none());
+ return m_socket_map[vsocket->id()];
}
bool VTreeDataGraphBuilder::check_if_sockets_are_mapped(VirtualNode *vnode,
@@ -197,7 +200,7 @@ bool VTreeDataGraphBuilder::check_if_sockets_are_mapped(VirtualNode *vnode,
int index = 0;
for (VirtualSocket *vsocket : vsockets) {
if (this->is_data_socket(vsocket)) {
- if (!m_socket_map.contains(vsocket)) {
+ if (m_socket_map[vsocket->id()].is_none()) {
std::cout << "Data DFGB_Socket not mapped: " << std::endl;
std::cout << " Tree: " << vnode->btree_id()->name << std::endl;
std::cout << " DFGB_Node: " << vnode->name() << std::endl;
diff --git a/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.hpp b/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.hpp
index b315baaa898..6ba1d5913a4 100644
--- a/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/vtree_data_graph_builder.hpp
@@ -20,7 +20,7 @@ class VTreeDataGraphBuilder {
private:
VirtualNodeTree &m_vtree;
DataFlowGraphBuilder m_graph_builder;
- Map<VirtualSocket *, DFGB_Socket> m_socket_map;
+ Vector<DFGB_Socket> m_socket_map;
StringMap<SharedType> &m_type_by_idname;
StringMap<SharedType> &m_type_by_data_type;
StringMap<std::string> &m_data_type_by_idname;
@@ -30,7 +30,7 @@ class VTreeDataGraphBuilder {
VTreeDataGraph build();
- Map<VirtualSocket *, DFGB_Socket> &socket_map()
+ Vector<DFGB_Socket> &socket_map()
{
return m_socket_map;
}
More information about the Bf-blender-cvs
mailing list