[Bf-blender-cvs] [d435274] object_nodes: Replaced mix of bool type flags for node types with a single enum for special kinds of nodes.

Lukas Tönne noreply at git.blender.org
Sat May 14 09:55:43 CEST 2016


Commit: d4352748873b52dd55d26932700ad4325c3f91c5
Author: Lukas Tönne
Date:   Sat May 14 09:09:05 2016 +0200
Branches: object_nodes
https://developer.blender.org/rBd4352748873b52dd55d26932700ad4325c3f91c5

Replaced mix of bool type flags for node types with a single enum for special kinds of nodes.

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

M	source/blender/blenvm/compile/bvm_codegen.cc
M	source/blender/blenvm/compile/node_graph.cc
M	source/blender/blenvm/compile/node_graph.h
M	source/blender/blenvm/util/util_debug.h
M	source/blender/blenvm/util/util_opcode.h

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

diff --git a/source/blender/blenvm/compile/bvm_codegen.cc b/source/blender/blenvm/compile/bvm_codegen.cc
index 82eedd7..ef021cf 100644
--- a/source/blender/blenvm/compile/bvm_codegen.cc
+++ b/source/blender/blenvm/compile/bvm_codegen.cc
@@ -480,7 +480,7 @@ int BVMCompilerBase::codegen_node_block(const NodeBlock &block)
 						 * of each input variable, so we don't need an extra
 						 * qualifier per input.
 						 */
-						if (node.type->is_kernel_node()) {
+						if (node.type->kind() == NODE_TYPE_KERNEL) {
 							if (link.node->block->parent() == &block) {
 								const NodeBlock *expr_block = input.link().node->block;
 								push_jump_address(block_info.at(expr_block).entry_point);
diff --git a/source/blender/blenvm/compile/node_graph.cc b/source/blender/blenvm/compile/node_graph.cc
index 764d801..ba6f922 100644
--- a/source/blender/blenvm/compile/node_graph.cc
+++ b/source/blender/blenvm/compile/node_graph.cc
@@ -74,10 +74,9 @@ NodeOutput::~NodeOutput()
 
 /* ------------------------------------------------------------------------- */
 
-NodeType::NodeType(const string &name, bool is_kernel_node, bool is_pass_node) :
+NodeType::NodeType(const string &name, eNodeTypeKind kind) :
     m_name(name),
-    m_is_pass_node(is_pass_node),
-    m_is_kernel_node(is_kernel_node)
+    m_kind(kind)
 {
 }
 
@@ -228,7 +227,7 @@ const NodeOutput *NodeType::add_output(const string &name,
 	BLI_assert(!find_output(name));
 	BLI_assert(NodeGraph::has_typedef(type));
 	/* local outputs only allowed for kernel nodes */
-	BLI_assert(m_is_kernel_node || value_type != OUTPUT_VARIABLE);
+	BLI_assert(m_kind == NODE_TYPE_KERNEL || value_type != OUTPUT_VARIABLE);
 	m_outputs.push_back(NodeOutput(name, NodeGraph::find_typedef(type), value_type));
 	return &m_outputs.back();
 }
@@ -639,12 +638,12 @@ const NodeType *NodeGraph::find_node_type(const string &name)
 	return (it != node_types.end())? &it->second : NULL;
 }
 
-NodeType *NodeGraph::add_node_type(const string &name, bool is_kernel_node, bool is_pass_node)
+NodeType *NodeGraph::add_node_type(const string &name, eNodeTypeKind kind)
 {
 	std::pair<NodeTypeMap::iterator, bool> result =
 	        node_types.insert(NodeTypeMapPair(
 	                              name,
-	                              NodeType(name, is_kernel_node, is_pass_node))
+	                              NodeType(name, kind))
 	                          );
 	if (result.second) {
 		NodeType *type = &result.first->second;
@@ -654,21 +653,6 @@ NodeType *NodeGraph::add_node_type(const string &name, bool is_kernel_node, bool
 		return NULL;
 }
 
-NodeType *NodeGraph::add_function_node_type(const string &name)
-{
-	return add_node_type(name, false, false);
-}
-
-NodeType *NodeGraph::add_kernel_node_type(const string &name)
-{
-	return add_node_type(name, true, false);
-}
-
-NodeType *NodeGraph::add_pass_node_type(const string &name)
-{
-	return add_node_type(name, false, true);
-}
-
 void NodeGraph::remove_node_type(const string &name)
 {
 	NodeTypeMap::iterator it = node_types.find(name);
@@ -965,7 +949,7 @@ OutputKey NodeGraph::find_root(const OutputKey &key)
 	OutputKey root = key;
 	/* value is used to create a valid root node if necessary */
 	const NodeValue *value = NULL;
-	while (root && root.node->type->is_pass_node()) {
+	while (root && root.node->type->kind() == NODE_TYPE_PASS) {
 		value = root.node->input_value(0);
 		root = root.node->link(0);
 	}
@@ -987,7 +971,7 @@ void NodeGraph::skip_pass_nodes()
 	for (NodeInstanceMap::iterator it = nodes.begin(); it != nodes.end(); ++it) {
 		NodeInstance *node = it->second;
 		
-		if (node->type->is_pass_node()) {
+		if (node->type->kind() == NODE_TYPE_PASS) {
 			replacements[node->output(0)] = find_root(node->input(0).link());
 			continue;
 		}
@@ -1112,7 +1096,7 @@ bool NodeGraph::add_block_node(NodeBlock &block, const OutputSet &local_vars,
 		block.nodes().insert(node);
 		
 		/* create a sub-block for nested kernels */
-		if (node->type->is_kernel_node()) {
+		if (node->type->kind() == NODE_TYPE_KERNEL) {
 			blocks.push_back(NodeBlock(node->name, &block));
 			NodeBlock &kernel_block = blocks.back();
 			NodeSet kernel_visited;
@@ -1443,173 +1427,173 @@ static void register_opcode_node_types()
 	
 	NodeType *nt;
 	
-	nt = NodeGraph::add_function_node_type("FLOAT_TO_INT");
+	nt = NodeGraph::add_node_type("FLOAT_TO_INT");
 	nt->add_input("value", "FLOAT", 0.0f);
 	nt->add_output("value", "INT");
 	
-	nt = NodeGraph::add_function_node_type("INT_TO_FLOAT");
+	nt = NodeGraph::add_node_type("INT_TO_FLOAT");
 	nt->add_input("value", "INT", 0);
 	nt->add_output("value", "FLOAT");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_FLOAT");
+	nt = NodeGraph::add_node_type("PASS_FLOAT", NODE_TYPE_PASS);
 	nt->add_input("value", "FLOAT", 0.0f);
 	nt->add_output("value", "FLOAT");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_FLOAT3");
+	nt = NodeGraph::add_node_type("PASS_FLOAT3", NODE_TYPE_PASS);
 	nt->add_input("value", "FLOAT3", float3(0.0f, 0.0f, 0.0f));
 	nt->add_output("value", "FLOAT3");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_FLOAT4");
+	nt = NodeGraph::add_node_type("PASS_FLOAT4", NODE_TYPE_PASS);
 	nt->add_input("value", "FLOAT4", float4(0.0f, 0.0f, 0.0f, 0.0f));
 	nt->add_output("value", "FLOAT4");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_INT");
+	nt = NodeGraph::add_node_type("PASS_INT", NODE_TYPE_PASS);
 	nt->add_input("value", "INT", 0);
 	nt->add_output("value", "INT");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_MATRIX44");
+	nt = NodeGraph::add_node_type("PASS_MATRIX44", NODE_TYPE_PASS);
 	nt->add_input("value", "MATRIX44", matrix44::identity());
 	nt->add_output("value", "MATRIX44");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_STRING");
+	nt = NodeGraph::add_node_type("PASS_STRING", NODE_TYPE_PASS);
 	nt->add_input("value", "STRING", "");
 	nt->add_output("value", "STRING");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_RNAPOINTER");
+	nt = NodeGraph::add_node_type("PASS_RNAPOINTER", NODE_TYPE_PASS);
 	nt->add_input("value", "RNAPOINTER", PointerRNA_NULL);
 	nt->add_output("value", "RNAPOINTER");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_MESH");
+	nt = NodeGraph::add_node_type("PASS_MESH", NODE_TYPE_PASS);
 	nt->add_input("value", "MESH", __empty_mesh__);
 	nt->add_output("value", "MESH");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_DUPLIS");
+	nt = NodeGraph::add_node_type("PASS_DUPLIS", NODE_TYPE_PASS);
 	nt->add_input("value", "DUPLIS", __empty_duplilist__);
 	nt->add_output("value", "DUPLIS");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_FLOAT_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_FLOAT_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "FLOAT_ARRAY", array<BVM_FLOAT>());
 	nt->add_output("value", "FLOAT_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_FLOAT3_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_FLOAT3_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "FLOAT3_ARRAY", array<BVM_FLOAT3>());
 	nt->add_output("value", "FLOAT3_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_FLOAT4_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_FLOAT4_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "FLOAT4_ARRAY", array<BVM_FLOAT4>());
 	nt->add_output("value", "FLOAT4_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_INT_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_INT_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "INT_ARRAY", array<BVM_INT>());
 	nt->add_output("value", "INT_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_MATRIX44_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_MATRIX44_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "MATRIX44_ARRAY", array<BVM_MATRIX44>());
 	nt->add_output("value", "MATRIX44_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_STRING_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_STRING_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "STRING_ARRAY", array<BVM_STRING>());
 	nt->add_output("value", "STRING_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_RNAPOINTER_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_RNAPOINTER_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "RNAPOINTER_ARRAY", array<BVM_RNAPOINTER>());
 	nt->add_output("value", "RNAPOINTER_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_MESH_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_MESH_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "MESH_ARRAY", array<BVM_MESH>());
 	nt->add_output("value", "MESH_ARRAY");
 	
-	nt = NodeGraph::add_pass_node_type("PASS_DUPLIS_ARRAY");
+	nt = NodeGraph::add_node_type("PASS_DUPLIS_ARRAY", NODE_TYPE_PASS);
 	nt->add_input("value", "DUPLIS_ARRAY", array<BVM_DUPLIS>());
 	nt->add_output("value", "DUPLIS_ARRAY");
 	
-	nt = NodeGraph::add_function_node_type("ARG_FLOAT");
+	nt = NodeGraph::add_node_type("ARG_FLOAT", NODE_TYPE_ARG);
 	nt->add_output("value", "FLOAT");
 	
-	nt = NodeGraph::add_function_node_type("ARG_FLOAT3");
+	nt = NodeGraph::add_node_type("ARG_FLOAT3", NODE_TYPE_ARG);
 	nt->add_output("value", "FLOAT3");
 	
-	nt = NodeGraph::add_function_node_type("ARG_FLOAT4");
+	nt = NodeGraph::add_node_type("ARG_FLOAT4", NODE_TYPE_ARG);
 	nt->add_output("value", "FLOAT4");
 	
-	nt = NodeGraph::add_function_node_type("ARG_INT");
+	nt = NodeGraph::add_node_type("ARG_INT", NODE_TYPE_ARG);
 	nt->add_output("value", "INT");
 	
-	nt = NodeGraph::add_function_node_type("ARG_MATRIX44");
+	nt = NodeGraph::add_node_type("ARG_MATRIX44", NODE_TYPE_ARG);
 	nt->add_output("value", "MATRIX44");
 	
-	nt = NodeGraph::add_function_node_type("ARG_STRING");
+	nt = NodeGraph::add_node_type("ARG_STRING", NODE_TYPE_ARG);
 	nt->add_output("value", "STRING");
 	
-	nt = NodeGraph::add_function_node_type("ARG_RNAPOINTER");
+	nt = NodeGraph::add_node_type("ARG_RNAPOINTER", NODE_TYPE_ARG);
 	nt->add_output("value", "RNAPOINTER");
 	
-	nt = NodeGraph::add_function_node_type("ARG_MESH");
+	nt = NodeGraph::add_node_type("ARG_MESH", NODE_TYPE_ARG);
 	nt->add_output("value", "MESH");
 	
-	nt = NodeGraph::add_function_node_type("ARG_DUPLIS");
+	nt = NodeGraph::add_node_type("ARG_DUPLIS", NODE_TYPE_ARG);
 	nt->add_output("value", "DUPLIS");
 	
-	nt = NodeGraph::add_function_node_type("VALUE_FLOAT");
+	nt = NodeGraph::add_node_type("VALUE_FLOAT");
 	nt->add_input("value", "FLOAT", 0.0f, INPUT_CONSTANT);
 	nt->

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list