[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