[Bf-blender-cvs] [cf72da183dc] functions: fail early when node inserter does not work
Jacques Lucke
noreply at git.blender.org
Fri Mar 22 11:58:02 CET 2019
Commit: cf72da183dc125bebf34feca5d61b3cd540351f6
Author: Jacques Lucke
Date: Fri Mar 22 11:52:49 2019 +0100
Branches: functions
https://developer.blender.org/rBcf72da183dc125bebf34feca5d61b3cd540351f6
fail early when node inserter does not work
===================================================================
M source/blender/functions/frontends/data_flow_nodes/builder.cpp
M source/blender/functions/frontends/data_flow_nodes/builder.hpp
M source/blender/functions/frontends/data_flow_nodes/inserters.cpp
===================================================================
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.cpp b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
index d7c8c60f600..adef08cbab8 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
@@ -77,6 +77,40 @@ namespace FN { namespace DataFlowNodes {
return m_socket_map.lookup(bsocket);
}
+ bool Builder::check_if_sockets_are_mapped(
+ struct bNode *bnode,
+ bSocketList bsockets,
+ const BuilderContext &ctx) const
+ {
+ int index = 0;
+ for (bNodeSocket *bsocket : bsockets) {
+ if (ctx.is_data_socket(bsocket)) {
+ if (!m_socket_map.contains(bsocket)) {
+ std::cout << "Data Socket not mapped: " << std::endl;
+ std::cout << " Tree: " << ctx.btree()->id.name << std::endl;
+ std::cout << " Node: " << bnode->name << std::endl;
+ if (bsocket->in_out == SOCK_IN) {
+ std::cout << " Input";
+ }
+ else {
+ std::cout << " Output";
+ }
+ std::cout << " Index: " << index << std::endl;
+ return false;
+ }
+ }
+ index++;
+ }
+ return true;
+ }
+
+ bool Builder::verify_data_sockets_mapped(struct bNode *bnode, const BuilderContext &ctx) const
+ {
+ return (
+ this->check_if_sockets_are_mapped(bnode, bSocketList(&bnode->inputs), ctx) &&
+ this->check_if_sockets_are_mapped(bnode, bSocketList(&bnode->outputs), ctx));
+ }
+
struct bNodeTree *BuilderContext::btree() const
{
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.hpp b/source/blender/functions/frontends/data_flow_nodes/builder.hpp
index 4e7db7a493d..e3c4e0e7abd 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.hpp
@@ -1,6 +1,7 @@
#pragma once
#include "FN_core.hpp"
+#include "./util_wrappers.hpp"
struct bNode;
struct bNodeLink;
@@ -36,8 +37,16 @@ namespace FN { namespace DataFlowNodes {
void map_output(Socket socket, struct bNode *bnode, uint index);
Socket lookup_socket(struct bNodeSocket *bsocket);
+ bool verify_data_sockets_mapped(struct bNode *bnode, const BuilderContext &ctx) const;
+
+ private:
+ bool check_if_sockets_are_mapped(
+ struct bNode *bnode,
+ bSocketList bsockets,
+ const BuilderContext &ctx) const;
};
+
class BuilderContext {
private:
struct bNodeTree *m_btree;
diff --git a/source/blender/functions/frontends/data_flow_nodes/inserters.cpp b/source/blender/functions/frontends/data_flow_nodes/inserters.cpp
index 8820fb419bb..022e7c1704e 100644
--- a/source/blender/functions/frontends/data_flow_nodes/inserters.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/inserters.cpp
@@ -88,6 +88,8 @@ namespace FN { namespace DataFlowNodes {
return false;
}
(*inserter)(builder, ctx, bnode);
+
+ BLI_assert(builder.verify_data_sockets_mapped(bnode, ctx));
return true;
}
More information about the Bf-blender-cvs
mailing list