[Bf-blender-cvs] [32becc1] object_nodes: Use two distinctive structs for node type inputs and outputs.

Lukas Tönne noreply at git.blender.org
Wed Dec 9 10:47:17 CET 2015


Commit: 32becc1813142cbca5b8364d2b6af442dd1138f1
Author: Lukas Tönne
Date:   Tue Dec 8 17:26:23 2015 +0100
Branches: object_nodes
https://developer.blender.org/rB32becc1813142cbca5b8364d2b6af442dd1138f1

Use two distinctive structs for node type inputs and outputs.

This helps clarity, and also we need to start using different
value types for inputs and outputs.

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

M	source/blender/blenvm/BVM_types.h
M	source/blender/blenvm/compile/bvm_codegen.cc
M	source/blender/blenvm/compile/bvm_nodegraph.cc
M	source/blender/blenvm/compile/bvm_nodegraph.h
M	source/blender/blenvm/intern/bvm_api.cc

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

diff --git a/source/blender/blenvm/BVM_types.h b/source/blender/blenvm/BVM_types.h
index c66be75..8c2f3a7 100644
--- a/source/blender/blenvm/BVM_types.h
+++ b/source/blender/blenvm/BVM_types.h
@@ -52,6 +52,10 @@ typedef enum BVMInputValueType {
 	INPUT_FUNCTION,
 } BVMInputValueType;
 
+typedef enum BVMOutputValueType {
+	OUTPUT_VARIABLE,
+} BVMOutputValueType;
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/source/blender/blenvm/compile/bvm_codegen.cc b/source/blender/blenvm/compile/bvm_codegen.cc
index 0b611d7..0161d7b 100644
--- a/source/blender/blenvm/compile/bvm_codegen.cc
+++ b/source/blender/blenvm/compile/bvm_codegen.cc
@@ -319,7 +319,7 @@ int BVMCompiler::codegen_subgraph(const NodeList &nodes,
 		/* prepare input stack entries */
 		SocketIndexMap input_index;
 		for (int i = 0; i < node.num_inputs(); ++i) {
-			const NodeSocket *input = node.type->find_input(i);
+			const NodeInput *input = node.type->find_input(i);
 			ConstSocketPair key(&node, input->name);
 			assert(input_index.find(key) == input_index.end());
 			
@@ -343,7 +343,7 @@ int BVMCompiler::codegen_subgraph(const NodeList &nodes,
 		
 		/* initialize output data stack entries */
 		for (int i = 0; i < node.num_outputs(); ++i) {
-			const NodeSocket *output = node.type->find_output(i);
+			const NodeOutput *output = node.type->find_output(i);
 			ConstSocketPair key(&node, output->name);
 			
 			output_index[key] = assign_stack_index(output->typedesc);
@@ -367,7 +367,7 @@ int BVMCompiler::codegen_subgraph(const NodeList &nodes,
 			push_opcode(op);
 			/* write input stack offsets and constants */
 			for (int i = 0; i < node.num_inputs(); ++i) {
-				const NodeSocket *input = node.type->find_input(i);
+				const NodeInput *input = node.type->find_input(i);
 				ConstSocketPair key(&node, input->name);
 				
 				if (node.is_input_constant(i)) {
@@ -387,7 +387,7 @@ int BVMCompiler::codegen_subgraph(const NodeList &nodes,
 			}
 			/* write output stack offsets */
 			for (int i = 0; i < node.num_outputs(); ++i) {
-				const NodeSocket *output = node.type->find_output(i);
+				const NodeOutput *output = node.type->find_output(i);
 				ConstSocketPair key(&node, output->name);
 				assert(output_index.find(key) != output_index.end());
 				
@@ -397,7 +397,7 @@ int BVMCompiler::codegen_subgraph(const NodeList &nodes,
 		
 		/* release input data stack entries */
 		for (int i = 0; i < node.num_inputs(); ++i) {
-			const NodeSocket *input = node.type->find_input(i);
+			const NodeInput *input = node.type->find_input(i);
 			
 			if (node.is_input_constant(i) || node.is_input_function(i)) {
 				/* pass */
@@ -431,7 +431,7 @@ void BVMCompiler::graph_node_append(const NodeInstance *node,
 	visited.insert(node);
 	
 	for (size_t i = 0; i < node->num_inputs(); ++i) {
-		const NodeSocket *socket = node->type->find_input(i);
+		const NodeInput *socket = node->type->find_input(i);
 		if (socket->value_type == INPUT_FUNCTION) {
 			func_entry_map[node->input(i)] = FunctionInfo();
 		}
diff --git a/source/blender/blenvm/compile/bvm_nodegraph.cc b/source/blender/blenvm/compile/bvm_nodegraph.cc
index 7490e8c..d682a88 100644
--- a/source/blender/blenvm/compile/bvm_nodegraph.cc
+++ b/source/blender/blenvm/compile/bvm_nodegraph.cc
@@ -43,10 +43,10 @@
 
 namespace bvm {
 
-NodeSocket::NodeSocket(const string &name,
-                       const TypeDesc &typedesc,
-                       Value *default_value,
-                       BVMInputValueType value_type) :
+NodeInput::NodeInput(const string &name,
+                     const TypeDesc &typedesc,
+                     Value *default_value,
+                     BVMInputValueType value_type) :
     name(name),
     typedesc(typedesc),
     default_value(default_value),
@@ -54,7 +54,20 @@ NodeSocket::NodeSocket(const string &name,
 {
 }
 
-NodeSocket::~NodeSocket()
+NodeInput::~NodeInput()
+{
+}
+
+NodeOutput::NodeOutput(const string &name,
+                       const TypeDesc &typedesc,
+                       BVMOutputValueType value_type) :
+    name(name),
+    typedesc(typedesc),
+    value_type(value_type)
+{
+}
+
+NodeOutput::~NodeOutput()
 {
 }
 
@@ -71,32 +84,32 @@ NodeType::~NodeType()
 {
 }
 
-const NodeSocket *NodeType::find_input(int index) const
+const NodeInput *NodeType::find_input(int index) const
 {
-	BLI_assert(index >= 0 && index < inputs.size());
-	return &inputs[index];
+	BLI_assert(index >= 0 && index < m_inputs.size());
+	return &m_inputs[index];
 }
 
-const NodeSocket *NodeType::find_output(int index) const
+const NodeOutput *NodeType::find_output(int index) const
 {
-	BLI_assert(index >= 0 && index < outputs.size());
-	return &outputs[index];
+	BLI_assert(index >= 0 && index < m_outputs.size());
+	return &m_outputs[index];
 }
 
-const NodeSocket *NodeType::find_input(const string &name) const
+const NodeInput *NodeType::find_input(const string &name) const
 {
-	for (SocketList::const_iterator it = inputs.begin(); it != inputs.end(); ++it) {
-		const NodeSocket &socket = *it;
+	for (InputList::const_iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) {
+		const NodeInput &socket = *it;
 		if (socket.name == name)
 			return &socket;
 	}
 	return NULL;
 }
 
-const NodeSocket *NodeType::find_output(const string &name) const
+const NodeOutput *NodeType::find_output(const string &name) const
 {
-	for (SocketList::const_iterator it = outputs.begin(); it != outputs.end(); ++it) {
-		const NodeSocket &socket = *it;
+	for (OutputList::const_iterator it = m_outputs.begin(); it != m_outputs.end(); ++it) {
+		const NodeOutput &socket = *it;
 		if (socket.name == name)
 			return &socket;
 	}
@@ -104,12 +117,12 @@ const NodeSocket *NodeType::find_output(const string &name) const
 }
 
 /* stub implementation in case socket is passed directly */
-const NodeSocket *NodeType::find_input(const NodeSocket *socket) const
+const NodeInput *NodeType::find_input(const NodeInput *socket) const
 {
 	return socket;
 }
 
-const NodeSocket *NodeType::find_output(const NodeSocket *socket) const
+const NodeOutput *NodeType::find_output(const NodeOutput *socket) const
 {
 	return socket;
 }
@@ -190,25 +203,25 @@ bool NodeType::verify_arguments(Module *module, LLVMContext &context, raw_ostrea
 }
 #endif
 
-const NodeSocket *NodeType::add_input(const string &name,
-                                      BVMType type,
-                                      Value *default_value,
-                                      BVMInputValueType value_type)
+const NodeInput *NodeType::add_input(const string &name,
+                                     BVMType type,
+                                     Value *default_value,
+                                     BVMInputValueType value_type)
 {
 	BLI_assert(!find_input(name));
 	/* function inputs only allowed for kernel nodes */
 	BLI_assert(m_is_kernel_node || value_type != INPUT_FUNCTION);
-	inputs.push_back(NodeSocket(name, type, default_value, value_type));
-	return &inputs.back();
+	m_inputs.push_back(NodeInput(name, type, default_value, value_type));
+	return &m_inputs.back();
 }
 
-const NodeSocket *NodeType::add_output(const string &name,
+const NodeOutput *NodeType::add_output(const string &name,
                                        BVMType type,
-                                       Value *default_value)
+                                       BVMOutputValueType value_type)
 {
 	BLI_assert(!find_output(name));
-	outputs.push_back(NodeSocket(name, type, default_value, INPUT_VARIABLE));
-	return &outputs.back();
+	m_outputs.push_back(NodeOutput(name, type, value_type));
+	return &m_outputs.back();
 }
 
 /* ------------------------------------------------------------------------- */
@@ -278,19 +291,19 @@ NodeInstance *NodeInstance::find_input_link_node(const string &name) const
 
 NodeInstance *NodeInstance::find_input_link_node(int index) const
 {
-	const NodeSocket *socket = type->find_input(index);
+	const NodeInput *socket = type->find_input(index);
 	return socket ? find_input_link_node(socket->name) : NULL;
 }
 
-const NodeSocket *NodeInstance::find_input_link_socket(const string &name) const
+const NodeOutput *NodeInstance::find_input_link_socket(const string &name) const
 {
 	InputMap::const_iterator it = inputs.find(name);
 	return (it != inputs.end()) ? it->second.link_socket : NULL;
 }
 
-const NodeSocket *NodeInstance::find_input_link_socket(int index) const
+const NodeOutput *NodeInstance::find_input_link_socket(int index) const
 {
-	const NodeSocket *socket = type->find_input(index);
+	const NodeInput *socket = type->find_input(index);
 	return socket ? find_input_link_socket(socket->name) : NULL;
 }
 
@@ -309,7 +322,7 @@ SocketPair NodeInstance::link(const string &name) const
 
 SocketPair NodeInstance::link(int index) const
 {
-	const NodeSocket *socket = type->find_input(index);
+	const NodeInput *socket = type->find_input(index);
 	return socket ? link(socket->name) : SocketPair(NULL, "");
 }
 
@@ -321,7 +334,7 @@ Value *NodeInstance::find_input_value(const string &name) const
 
 Value *NodeInstance::find_input_value(int index) const
 {
-	const NodeSocket *socket = type->find_input(index);
+	const NodeInput *socket = type->find_input(index);
 	return socket ? find_input_value(socket->name) : NULL;
 }
 
@@ -333,7 +346,7 @@ Value *NodeInstance::find_output_value(const string &name) const
 
 Value *NodeInstance::find_output_value(int index) const
 {
-	const NodeSocket *socket = type->find_output(index);
+	const NodeOutput *socket = type->find_output(index);
 	return socket ? find_output_value(socket->name) : NULL;
 }
 
@@ -346,9 +359,9 @@ bool NodeInstance::set_input_value(const string &name, Value *value)
 	return true;
 }
 
-bool NodeInstance::set_input_link(const string &name, NodeInstance *from_node, const NodeSocket *from_socket)
+bool NodeInstance::set_input_link(const string &name, NodeInstance *from_node, const NodeOutput *from_socket)
 {
-	const NodeSocket *socket = type->find_input(name);
+	const NodeInput *socket = type->find_input(name);
 	InputInstance &input = inputs[name];
 	
 	if (socket->typedesc.assignable(from_socket->typedesc)) {
@@ -373,7 +386,7 @@ bool NodeInstance::has_input_link(const string &name) const
 
 bool NodeInstance::has_input_link(int 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list