[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