Commit: 13329d9a632973a17aab11218b57e93b139d9ccd
Author: Lukas Tönne
Date:   Tue Dec 22 12:02:19 2015 +0100
Branches: object_nodes
https://developer.blender.org/rB13329d9a632973a17aab11218b57e93b139d9ccd

Reordered data types a bit, so mesh and other complex types are at the end.

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

M       source/blender/blenvm/BVM_types.h
M       source/blender/blenvm/bvm/bvm_eval.cc
M       source/blender/blenvm/bvm/bvm_opcode.h
M       source/blender/blenvm/compile/bvm_codegen.cc
M       source/blender/blenvm/compile/bvm_nodegraph.cc
M       source/blender/blenvm/util/bvm_util_typedesc.h
M       source/blender/makesrna/intern/rna_blenvm.c

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

diff --git a/source/blender/blenvm/BVM_types.h 
b/source/blender/blenvm/BVM_types.h
index ce9cfb8..1291c71 100644
--- a/source/blender/blenvm/BVM_types.h
+++ b/source/blender/blenvm/BVM_types.h
@@ -42,9 +42,9 @@ typedef enum BVMType {
        BVM_FLOAT4,
        BVM_INT,
        BVM_MATRIX44,
+       BVM_STRING,
        BVM_POINTER,
        BVM_MESH,
-       BVM_STRING,
 } BVMType;
 
 typedef enum BVMBufferType {
diff --git a/source/blender/blenvm/bvm/bvm_eval.cc 
b/source/blender/blenvm/bvm/bvm_eval.cc
index e9d0c14..da7d2a9 100644
--- a/source/blender/blenvm/bvm/bvm_eval.cc
+++ b/source/blender/blenvm/bvm/bvm_eval.cc
@@ -324,6 +324,12 @@ void EvalContext::eval_instructions(const EvalGlobals 
*globals, const Function *
                                eval_op_value_matrix44(stack, value, offset);
                                break;
                        }
+                       case OP_VALUE_STRING: {
+                               const char *value = fn->read_string(&instr);
+                               StackIndex offset = 
fn->read_stack_index(&instr);
+                               eval_op_value_string(stack, value, offset);
+                               break;
+                       }
                        case OP_VALUE_POINTER: {
                                StackIndex offset = 
fn->read_stack_index(&instr);
                                eval_op_value_pointer(stack, offset);
@@ -334,12 +340,6 @@ void EvalContext::eval_instructions(const EvalGlobals 
*globals, const Function *
                                eval_op_value_mesh(stack, offset);
                                break;
                        }
-                       case OP_VALUE_STRING: {
-                               const char *value = fn->read_string(&instr);
-                               StackIndex offset = 
fn->read_stack_index(&instr);
-                               eval_op_value_string(stack, value, offset);
-                               break;
-                       }
                        case OP_FLOAT_TO_INT: {
                                StackIndex offset_from = 
fn->read_stack_index(&instr);
                                StackIndex offset_to = 
fn->read_stack_index(&instr);
diff --git a/source/blender/blenvm/bvm/bvm_opcode.h 
b/source/blender/blenvm/bvm/bvm_opcode.h
index 9f7e682..33042ea 100644
--- a/source/blender/blenvm/bvm/bvm_opcode.h
+++ b/source/blender/blenvm/bvm/bvm_opcode.h
@@ -41,9 +41,9 @@ enum OpCode {
        OP_VALUE_FLOAT4,
        OP_VALUE_INT,
        OP_VALUE_MATRIX44,
+       OP_VALUE_STRING,
        OP_VALUE_POINTER,
        OP_VALUE_MESH,
-       OP_VALUE_STRING,
        
        OP_FLOAT_TO_INT,
        OP_INT_TO_FLOAT,
diff --git a/source/blender/blenvm/compile/bvm_codegen.cc 
b/source/blender/blenvm/compile/bvm_codegen.cc
index b9a7887..1855370 100644
--- a/source/blender/blenvm/compile/bvm_codegen.cc
+++ b/source/blender/blenvm/compile/bvm_codegen.cc
@@ -333,19 +333,22 @@ void BVMCompiler::push_constant(const Value *value) const
                        push_matrix44(m);
                        break;
                }
+               case BVM_STRING: {
+                       const char *s = "";
+                       value->get(&s);
+                       
+                       push_string(s);
+                       break;
+               }
                case BVM_POINTER: {
                        /* POINTER type can not be stored as a constant */
                        break;
                }
-               case BVM_MESH:
+               
+               case BVM_MESH: {
                        /* MESH type can not be stored as a constant */
                        break;
-               case BVM_STRING:
-                       const char *s = "";
-                       value->get(&s);
-                       
-                       push_string(s);
-                       break;
+               }
        }
 }
 
@@ -397,23 +400,26 @@ void BVMCompiler::codegen_value(const Value *value, 
StackIndex offset) const
                        push_stack_index(offset);
                        break;
                }
+               case BVM_STRING: {
+                       const char *s = "";
+                       value->get(&s);
+                       
+                       push_opcode(OP_VALUE_STRING);
+                       push_string(s);
+                       push_stack_index(offset);
+                       break;
+               }
                case BVM_POINTER: {
                        push_opcode(OP_VALUE_POINTER);
                        push_stack_index(offset);
                        break;
                }
-               case BVM_MESH:
+               
+               case BVM_MESH: {
                        push_opcode(OP_VALUE_MESH);
                        push_stack_index(offset);
                        break;
-               case BVM_STRING:
-                       const char *s = "";
-                       value->get(&s);
-                       
-                       push_opcode(OP_VALUE_STRING);
-                       push_string(s);
-                       push_stack_index(offset);
-                       break;
+               }
        }
 }
 
@@ -425,8 +431,8 @@ static OpCode ptr_init_opcode(const TypeDesc &typedesc)
                case BVM_FLOAT4:
                case BVM_INT:
                case BVM_MATRIX44:
-               case BVM_POINTER:
                case BVM_STRING:
+               case BVM_POINTER:
                        return OP_NOOP;
                
                case BVM_MESH:
@@ -443,8 +449,8 @@ static OpCode ptr_release_opcode(const TypeDesc &typedesc)
                case BVM_FLOAT4:
                case BVM_INT:
                case BVM_MATRIX44:
-               case BVM_POINTER:
                case BVM_STRING:
+               case BVM_POINTER:
                        return OP_NOOP;
                
                case BVM_MESH:
diff --git a/source/blender/blenvm/compile/bvm_nodegraph.cc 
b/source/blender/blenvm/compile/bvm_nodegraph.cc
index 6dee415..63b7e0e 100644
--- a/source/blender/blenvm/compile/bvm_nodegraph.cc
+++ b/source/blender/blenvm/compile/bvm_nodegraph.cc
@@ -602,9 +602,9 @@ SocketPair NodeGraph::add_proxy(const TypeDesc &typedesc, 
Value *default_value)
                                case BVM_FLOAT4: node = 
add_node("PASS_FLOAT4"); break;
                                case BVM_INT: node = add_node("PASS_INT"); 
break;
                                case BVM_MATRIX44: node = 
add_node("PASS_MATRIX44"); break;
-                               case BVM_MESH: node = add_node("PASS_MESH"); 
break;
-                               case BVM_POINTER: node = 
add_node("PASS_POINTER"); break;
                                case BVM_STRING: node = 
add_node("PASS_STRING"); break;
+                               case BVM_POINTER: node = 
add_node("PASS_POINTER"); break;
+                               case BVM_MESH: node = add_node("PASS_MESH"); 
break;
                        }
                        break;
                case BVM_BUFFER_ARRAY:
@@ -614,9 +614,9 @@ SocketPair NodeGraph::add_proxy(const TypeDesc &typedesc, 
Value *default_value)
                                case BVM_FLOAT4: node = 
add_node("PASS_FLOAT4_ARRAY"); break;
                                case BVM_INT: node = 
add_node("PASS_INT_ARRAY"); break;
                                case BVM_MATRIX44: node = 
add_node("PASS_MATRIX44_ARRAY"); break;
-                               case BVM_MESH: node = 
add_node("PASS_MESH_ARRAY"); break;
-                               case BVM_POINTER: node = 
add_node("PASS_POINTER_ARRAY"); break;
                                case BVM_STRING: node = 
add_node("PASS_STRING_ARRAY"); break;
+                               case BVM_POINTER: node = 
add_node("PASS_POINTER_ARRAY"); break;
+                               case BVM_MESH: node = 
add_node("PASS_MESH_ARRAY"); break;
                        }
                        break;
        }
@@ -634,9 +634,9 @@ SocketPair NodeGraph::add_value_node(Value *value)
                case BVM_FLOAT4: node = add_node("VALUE_FLOAT4"); break;
                case BVM_INT: node = add_node("VALUE_INT"); break;
                case BVM_MATRIX44: node = add_node("VALUE_MATRIX44"); break;
+               case BVM_STRING: node = add_node("VALUE_STRING"); break;
                case BVM_POINTER: node = add_node("VALUE_POINTER"); break;
                case BVM_MESH: node = add_node("VALUE_MESH"); break;
-               case BVM_STRING: node = add_node("VALUE_STRING"); break;
        }
        if (node)
                node->set_input_value("value", value);
@@ -652,9 +652,9 @@ SocketPair NodeGraph::add_argument_node(const TypeDesc 
&typedesc)
                case BVM_FLOAT4: node = add_node("ARG_FLOAT4"); break;
                case BVM_INT: node = add_node("ARG_INT"); break;
                case BVM_MATRIX44: node = add_node("ARG_MATRIX44"); break;
+               case BVM_STRING: node = add_node("ARG_STRING"); break;
                case BVM_POINTER: node = add_node("ARG_POINTER"); break;
                case BVM_MESH: node = add_node("ARG_MESH"); break;
-               case BVM_STRING: node = add_node("ARG_STRING"); break;
        }
        return SocketPair(node, "value");
 }
@@ -791,9 +791,9 @@ OpCode get_opcode_from_node_type(const string &node)
        NODETYPE(VALUE_FLOAT4);
        NODETYPE(VALUE_INT);
        NODETYPE(VALUE_MATRIX44);
+       NODETYPE(VALUE_STRING);
        NODETYPE(VALUE_POINTER);
        NODETYPE(VALUE_MESH);
-       NODETYPE(VALUE_STRING);
        
        NODETYPE(FLOAT_TO_INT);
        NODETYPE(INT_TO_FLOAT);
@@ -918,6 +918,10 @@ static void register_opcode_node_types()
        nt->add_input("value", TYPE_MATRIX44, matrix44::identity());
        nt->add_output("value", TYPE_MATRIX44);
        
+       nt = NodeGraph::add_pass_node_type("PASS_STRING");
+       nt->add_input("value", TYPE_STRING, "");
+       nt->add_output("value", TYPE_STRING);
+       
        nt = NodeGraph::add_pass_node_type("PASS_POINTER");
        nt->add_input("value", TYPE_POINTER, PointerRNA_NULL);
        nt->add_output("value", TYPE_POINTER);
@@ -926,10 +930,6 @@ static void register_opcode_node_types()
        nt->add_input("value", TYPE_MESH, __empty_mesh__);
        nt->add_output("value", TYPE_MESH);
        
-       nt = NodeGraph::add_pass_node_type("PASS_STRING");
-       nt->add_input("value", TYPE_STRING, "");
-       nt->add_output("value", TYPE_STRING);
-       
        nt = NodeGraph::add_pass_node_type("PASS_FLOAT_ARRAY");
        nt->add_input("value", TYPE_FLOAT_ARRAY, array<BVM_FLOAT>());
        nt->add_output("value", TYPE_FLOAT_ARRAY);
@@ -950,15 +950,15 @@ static void register_opcode_node_types()
        nt->add_input("value", TYPE_FLOAT_ARRAY, array<BVM_FLOAT>());
        nt->add_output("value", TYPE_FLOAT_ARRAY);
        
-       nt = NodeGraph::add_pass_node_type("PASS_POINTER_ARRAY");
+       nt = NodeGraph::add_pass_node_type("PASS_STRING_ARRAY");
        nt->add_input("value", TYPE_FLOAT_ARRAY, array<BVM_FLOAT>());
        nt->add_output("value", TYPE_FLOAT_ARRAY);
        
-       nt = NodeGraph::add_pass_node_type("PASS_MESH_ARRAY");
+       nt = NodeGraph::add_pass_node_type("PASS_POINTER_ARRAY");
        nt->add_input("value", TYPE_FLOAT_ARRAY, array<BVM_FLOAT>());
        nt->add_output("value", TYPE_FLOAT_ARRAY);
        
-       nt = NodeGraph::add_pass_node_type("PASS_STRING_ARRAY");
+       nt = NodeGraph::add_pass_node_type("PASS_MESH_ARRAY");
        nt->add_input("value", TYPE_FLOAT_ARRAY, array<BVM_FLOAT>());
        nt->add_output("value", TYPE_FLOAT_ARRAY);
        
@@ -977,15 +977,15 @@ static void register_opcode_node_types()
        nt = NodeGraph::add_function_node_type("ARG_MATRIX44");
        nt->add_output("value", TYPE_MATRIX44);
        
+       nt = NodeGraph::add_function_node_type("ARG_STRING");
+       nt->add_output("value", TYPE_STRING);
+       
        nt = NodeGraph::add_function_node_type("ARG_POINTER");
        nt->add_output("value", TYPE_POINTER);
        
        nt = NodeGraph::add_function_node_type("ARG_MESH");
        nt->add_output("value", TYPE_MESH);
        
-       nt = NodeGraph::add_function_node_type("ARG_STRING");
-       nt->add_output("value", TYPE_STRING);
-       
        nt = NodeGraph::add_function_node_type("VALUE_FLOAT");
        nt->add_input("value", TYPE_FLOAT, 0.0f, INPUT_CONSTANT);
        nt->add_output("value", TYPE_FLOAT);
@@ -1006,6 +1006,10 @@ static void register_opcode_node_types()
        nt->add_input("value", TYPE_MATRIX44, matrix44::identity(), 
INPUT_CONSTANT);
        nt->add_output("value", TYPE_MATRIX44);
        
+       nt = NodeGraph::add_function_node_type("VALUE_STRING");
+       nt->add_input("value", TYPE_STRING, "", INPUT_CONSTANT);
+       nt->add_output("value", TYPE_STRING);
+       
        nt = NodeGraph::add_function_node_type("VALUE_POINTER");
        nt->add_input("value", TYPE_POINTER, PointerRNA_NULL, INPUT_CONSTANT);
        nt->add_output("value", TYPE_POINTER);
@@ -1014,10 +1018,6 @@ static void register_opcode_node_types()
        nt->add_input("value", TYPE_MESH, __empty_mesh__, INPUT_CONSTANT);
        nt->add_output("value", TYPE_MESH);
        
-       nt = NodeGraph::add_function_node_type("VALUE_STRING");
-       nt->add_input("value", TYPE_STRING, "", INPUT_CONSTANT);
-       nt->add_output("value", TYPE_STRING);
-       
        nt 

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to