[Bf-blender-cvs] [28f239a384c] functions: remove BuilderContext

Jacques Lucke noreply at git.blender.org
Sat Apr 6 22:43:50 CEST 2019


Commit: 28f239a384caacb578ec980d0d02f5d6da6102b5
Author: Jacques Lucke
Date:   Sat Apr 6 22:27:58 2019 +0200
Branches: functions
https://developer.blender.org/rB28f239a384caacb578ec980d0d02f5d6da6102b5

remove BuilderContext

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

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/graph_generation.cpp
M	source/blender/functions/frontends/data_flow_nodes/inserters.cpp
M	source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp

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

diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.cpp b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
index d3e16a5b9f6..a51fe380efb 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.cpp
@@ -91,14 +91,14 @@ namespace FN { namespace DataFlowNodes {
 	Node *GraphBuilder::insert_function(SharedFunction &fn, bNode *bnode)
 	{
 		BLI_assert(bnode != nullptr);
-		NodeSource *source = m_graph->new_source_info<NodeSource>(m_ctx.btree(), bnode);
+		NodeSource *source = m_graph->new_source_info<NodeSource>(m_btree, bnode);
 		return m_graph->insert(fn, source);
 	}
 
 	Node *GraphBuilder::insert_function(SharedFunction &fn, bNodeLink *blink)
 	{
 		BLI_assert(blink != nullptr);
-		LinkSource *source = m_graph->new_source_info<LinkSource>(m_ctx.btree(), blink);
+		LinkSource *source = m_graph->new_source_info<LinkSource>(m_btree, blink);
 		return m_graph->insert(fn, source);
 	}
 
@@ -109,7 +109,7 @@ namespace FN { namespace DataFlowNodes {
 
 	void GraphBuilder::map_socket(Socket socket, bNodeSocket *bsocket)
 	{
-		BLI_assert(m_ctx.is_data_socket(bsocket) ? socket.type() == m_ctx.type_of_socket(bsocket) : true);
+		BLI_assert(this->is_data_socket(bsocket) ? socket.type() == this->type_of_socket(bsocket) : true);
 		m_socket_map.add(bsocket, socket);
 	}
 
@@ -135,7 +135,7 @@ namespace FN { namespace DataFlowNodes {
 	{
 		uint input_index = 0;
 		for (bNodeSocket *bsocket : bSocketList(&bnode->inputs)) {
-			if (m_ctx.is_data_socket(bsocket)) {
+			if (this->is_data_socket(bsocket)) {
 				this->map_socket(node->input(input_index), bsocket);
 				input_index++;
 			}
@@ -143,7 +143,7 @@ namespace FN { namespace DataFlowNodes {
 
 		uint output_index = 0;
 		for (bNodeSocket *bsocket : bSocketList(&bnode->outputs)) {
-			if (m_ctx.is_data_socket(bsocket)) {
+			if (this->is_data_socket(bsocket)) {
 				this->map_socket( node->output(output_index), bsocket);
 				output_index++;
 			}
@@ -176,10 +176,10 @@ namespace FN { namespace DataFlowNodes {
 	{
 		int index = 0;
 		for (bNodeSocket *bsocket : bsockets) {
-			if (m_ctx.is_data_socket(bsocket)) {
+			if (this->is_data_socket(bsocket)) {
 				if (!m_socket_map.contains(bsocket)) {
 					std::cout << "Data Socket not mapped: " << std::endl;
-					std::cout << "    Tree: " << m_ctx.btree()->id.name << std::endl;
+					std::cout << "    Tree: " << m_btree->id.name << std::endl;
 					std::cout << "    Node: " << bnode->name << std::endl;
 					if (bsocket->in_out == SOCK_IN) {
 						std::cout << "    Input";
@@ -204,24 +204,23 @@ namespace FN { namespace DataFlowNodes {
 	}
 
 
-	struct bNodeTree *BuilderContext::btree() const
+	struct bNodeTree *GraphBuilder::btree() const
 	{
 		return m_btree;
 	}
 
-	struct ID *BuilderContext::btree_id() const
+	struct ID *GraphBuilder::btree_id() const
 	{
 		return &m_btree->id;
 	}
 
-	bool BuilderContext::is_data_socket(bNodeSocket *bsocket) const
+	bool GraphBuilder::is_data_socket(bNodeSocket *bsocket) const
 	{
-		PointerRNA ptr;
-		this->get_rna(bsocket, &ptr);
+		PointerRNA ptr = this->get_rna(bsocket);
 		return RNA_struct_find_property(&ptr, "data_type") != NULL;
 	}
 
-	SharedType &BuilderContext::type_by_name(const char *data_type) const
+	SharedType &GraphBuilder::type_by_name(const char *data_type) const
 	{
 		if (STREQ(data_type, "Float")) {
 			return Types::GET_TYPE_float();
@@ -250,45 +249,47 @@ namespace FN { namespace DataFlowNodes {
 		}
 	}
 
-	SharedType &BuilderContext::type_of_socket(bNodeSocket *bsocket) const
+	SharedType &GraphBuilder::type_of_socket(bNodeSocket *bsocket) const
 	{
 		std::string data_type = this->socket_type_string(bsocket);
 		return this->type_by_name(data_type.c_str());
 	}
 
-	std::string BuilderContext::name_of_socket(bNode *UNUSED(bnode), bNodeSocket *bsocket) const
+	std::string GraphBuilder::name_of_socket(bNode *UNUSED(bnode), bNodeSocket *bsocket) const
 	{
 		return bsocket->name;
 	}
 
-	void BuilderContext::get_rna(bNode *bnode, PointerRNA *ptr) const
+	PointerRNA GraphBuilder::get_rna(bNode *bnode) const
 	{
+		PointerRNA ptr;
 		RNA_pointer_create(
 			this->btree_id(), &RNA_Node,
-			bnode, ptr);
+			bnode, &ptr);
+		return ptr;
 	}
 
-	void BuilderContext::get_rna(bNodeSocket *bsocket, PointerRNA *ptr) const
+	PointerRNA GraphBuilder::get_rna(bNodeSocket *bsocket) const
 	{
+		PointerRNA ptr;
 		RNA_pointer_create(
 			this->btree_id(), &RNA_NodeSocket,
-			bsocket, ptr);
+			bsocket, &ptr);
+		return ptr;
 	}
 
-	SharedType &BuilderContext::type_from_rna(bNode *bnode, const char *prop_name) const
+	SharedType &GraphBuilder::type_from_rna(bNode *bnode, const char *prop_name) const
 	{
-		PointerRNA ptr;
-		this->get_rna(bnode, &ptr);
+		PointerRNA ptr = this->get_rna(bnode);
 		char type_name[64];
 		RNA_string_get(&ptr, prop_name, type_name);
 		return this->type_by_name(type_name);
 	}
 
-	std::string BuilderContext::socket_type_string(bNodeSocket *bsocket) const
+	std::string GraphBuilder::socket_type_string(bNodeSocket *bsocket) const
 	{
 		BLI_assert(this->is_data_socket(bsocket));
-		PointerRNA ptr;
-		this->get_rna(bsocket, &ptr);
+		PointerRNA ptr = this->get_rna(bsocket);
 		char type_name[64];
 		RNA_string_get(&ptr, "data_type", type_name);
 		return type_name;
diff --git a/source/blender/functions/frontends/data_flow_nodes/builder.hpp b/source/blender/functions/frontends/data_flow_nodes/builder.hpp
index 769dde041d7..5fe589d9fac 100644
--- a/source/blender/functions/frontends/data_flow_nodes/builder.hpp
+++ b/source/blender/functions/frontends/data_flow_nodes/builder.hpp
@@ -14,46 +14,28 @@ namespace FN { namespace DataFlowNodes {
 
 	using SocketMap = SmallMap<struct bNodeSocket *, Socket>;
 
-	class BuilderContext {
-	private:
-		struct bNodeTree *m_btree;
-
-	public:
-		BuilderContext(struct bNodeTree *btree)
-			: m_btree(btree) {}
-
-		bNodeTree *btree() const;
-		ID *btree_id() const;
-
-		bool is_data_socket(bNodeSocket *bsocket) const;
-		SharedType &type_by_name(const char *data_type) const;
-		SharedType &type_of_socket(bNodeSocket *bsocket) const;
-		std::string name_of_socket(bNode *bnode, bNodeSocket *bsocket) const;
-
-		void get_rna(bNode *bnode, PointerRNA *ptr) const;
-		void get_rna(bNodeSocket *bsocket, PointerRNA *ptr) const;
-		SharedType &type_from_rna(bNode *bnode, const char *prop_name) const;
-		std::string socket_type_string(bNodeSocket *bsocket) const;
-	};
-
 	class GraphBuilder {
 	private:
-		const BuilderContext &m_ctx;
+		struct bNodeTree *m_btree;
 		SharedDataFlowGraph &m_graph;
 		SocketMap &m_socket_map;
 
 	public:
 		GraphBuilder(
-			const BuilderContext &ctx,
+			struct bNodeTree *btree,
 			SharedDataFlowGraph &graph,
 			SocketMap &socket_map)
-			: m_ctx(ctx), m_graph(graph), m_socket_map(socket_map) {}
+			: m_btree(btree), m_graph(graph), m_socket_map(socket_map) {}
 
+		/* Insert Function */
 		Node *insert_function(SharedFunction &fn);
 		Node *insert_function(SharedFunction &fn, struct bNode *bnode);
 		Node *insert_function(SharedFunction &fn, struct bNodeLink *blink);
+
+		/* Insert Link */
 		void insert_link(Socket a, Socket b);
 
+		/* Socket Mapping */
 		void map_socket(Socket socket, struct bNodeSocket *bsocket);
 		void map_sockets(Node *node, struct bNode *bnode);
 		void map_data_sockets(Node *node, struct bNode *bnode);
@@ -63,10 +45,23 @@ namespace FN { namespace DataFlowNodes {
 		Socket lookup_socket(struct bNodeSocket *bsocket);
 		bool verify_data_sockets_mapped(struct bNode *bnode) const;
 
-		const BuilderContext &ctx() const
-		{
-			return m_ctx;
-		}
+		/* Type Mapping */
+		SharedType &type_by_name(const char *data_type) const;
+
+		/* Query Node Tree */
+		bNodeTree *btree() const;
+		ID *btree_id() const;
+
+		/* Query Socket Information */
+		PointerRNA get_rna(bNodeSocket *bsocket) const;
+		bool is_data_socket(bNodeSocket *bsocket) const;
+		SharedType &type_of_socket(bNodeSocket *bsocket) const;
+		std::string name_of_socket(bNode *bnode, bNodeSocket *bsocket) const;
+		std::string socket_type_string(bNodeSocket *bsocket) const;
+
+		/* Query Node Information */
+		PointerRNA get_rna(bNode *bnode) const;
+		SharedType &type_from_rna(bNode *bnode, const char *prop_name) const;
 
 	private:
 		bool check_if_sockets_are_mapped(
diff --git a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
index cf86aca35ce..cbb04369912 100644
--- a/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/graph_generation.cpp
@@ -41,13 +41,13 @@ namespace FN { namespace DataFlowNodes {
 	}
 
 	static void insert_input_node(
-		GraphBuilder &builder, const BuilderContext &ctx, bNode *bnode)
+		GraphBuilder &builder, bNode *bnode)
 	{
 		OutputParameters outputs;
 		for (bNodeSocket *bsocket : bSocketList(&bnode->outputs)) {
-			if (ctx.is_data_socket(bsocket)) {
-				SharedType &type = ctx.type_of_socket(bsocket);
-				outputs.append(OutputParameter(ctx.name_of_socket(bnode, bsocket), type));
+			if (builder.is_data_socket(bsocket)) {
+				SharedType &type = builder.type_of_socket(bsocket);
+				outputs.append(OutputParameter(builder.name_of_socket(bnode, bsocket), type));
 			}
 		}
 
@@ -57,13 +57,13 @@ namespace FN { namespace DataFlowNodes {
 	}
 
 	static void insert_output_node(
-		GraphBuilder &builder, const BuilderContext &ctx, bNode *bnode)
+		GraphBuilder &builder, bNode *bnode)
 	{
 		InputParameters inputs;
 		for (bNodeSocket *bsocket : bSocketList(&bnode->inputs)) {
-			if (ctx.is_data_socket(bsocket)) {
-				SharedType &type = ctx.type_of_socket(bsocket);
-				inputs.append(InputParameter(ctx.name_of_socket(bnode, bsocket), type));
+			if (builder.is_data_socket(bsocket)) {
+				SharedType &type = builder.type_of_socket(bsocket);
+				inputs.append(InputParameter(builder.name_of_socket(bnode, bsocket), type));
 			}
 		}
 
@@ -150,8 +150,7 @@ namespace FN { namespace DataFlowNodes {
 		auto graph = SharedDataFlowGraph::New();
 		SocketMap socket_map;
 
-		BuilderContext ctx(btree);
-		GraphBuilder builder(ctx, graph, socket_ma

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list