Commit: 21dc6752861178d440fe68db29ad203c101f0347
Author: Sergey Sharybin
Date:   Mon Mar 16 16:35:28 2015 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rB21dc6752861178d440fe68db29ad203c101f0347

Depsgraph: Code cleanup, move functions to corresponding implementation files

Previously some utility functions for nodes and relations builder were
implemented in general builder file, which kept it a bit tricky to
keep track of the changes.

Now all nodes/relations builder functions are implemented in single file,
without spreading out across the whole filesystem.

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

M       source/blender/depsgraph/intern/depsgraph_build.cpp
M       source/blender/depsgraph/intern/depsgraph_build_idusers.cpp
M       source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
M       source/blender/depsgraph/intern/depsgraph_build_relations.cpp

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build.cpp 
b/source/blender/depsgraph/intern/depsgraph_build.cpp
index dc4ae34..a803309 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build.cpp
@@ -67,7 +67,6 @@ extern "C" {
 #include "BKE_effect.h"
 #include "BKE_fcurve.h"
 #include "BKE_group.h"
-#include "BKE_idcode.h"
 #include "BKE_key.h"
 #include "BKE_library.h"
 #include "BKE_main.h"
@@ -178,236 +177,6 @@ string deg_fcurve_id_name(const FCurve *fcu)
        return string(fcu->rna_path) + index_buf;
 }
 
-/* ************************************************* */
-/* Node Builder */
-
-DepsgraphNodeBuilder::DepsgraphNodeBuilder(Main *bmain, Depsgraph *graph) :
-    m_bmain(bmain),
-    m_graph(graph)
-{
-}
-
-DepsgraphNodeBuilder::~DepsgraphNodeBuilder()
-{
-}
-
-RootDepsNode *DepsgraphNodeBuilder::add_root_node()
-{
-       return m_graph->add_root_node();
-}
-
-IDDepsNode *DepsgraphNodeBuilder::add_id_node(ID *id)
-{
-       const char *idtype_name = BKE_idcode_to_name(GS(id->name));
-       return m_graph->add_id_node(id, string(id->name+2) + "[" + idtype_name 
+ "]");
-}
-
-TimeSourceDepsNode *DepsgraphNodeBuilder::add_time_source(ID *id)
-{
-       /* determine which node to attach timesource to */
-       if (id) {
-#if 0 /* XXX TODO */
-               /* get ID node */
-               IDDepsNode id_node = m_graph->find_id_node(id);
-
-               /* depends on what this is... */
-               switch (GS(id->name)) {
-                       case ID_SCE: /* Scene - Usually sequencer strip causing 
time remapping... */
-                       {
-                               // TODO...
-                       }
-                       break;
-
-                       case ID_GR: /* Group */
-                       {
-                               // TODO...
-                       }
-                       break;
-
-                       // XXX: time source...
-
-                       default:     /* Unhandled */
-                               printf("%s(): Unhandled ID - %s \n", __func__, 
id->name);
-                               break;
-               }
-#endif
-       }
-       else {
-               /* root-node */
-               RootDepsNode *root_node = m_graph->root_node;
-               if (root_node) {
-                       return root_node->add_time_source("Time Source");
-               }
-       }
-
-       return NULL;
-}
-
-ComponentDepsNode *DepsgraphNodeBuilder::add_component_node(ID *id, 
eDepsNode_Type comp_type, const string &comp_name)
-{
-       IDDepsNode *id_node = add_id_node(id);
-       ComponentDepsNode *comp_node = id_node->add_component(comp_type, 
comp_name);
-       comp_node->owner = id_node;
-       return comp_node;
-}
-
-OperationDepsNode *DepsgraphNodeBuilder::add_operation_node(ComponentDepsNode 
*comp_node,
-                                                            
eDepsOperation_Type optype,
-                                                            
DepsEvalOperationCb op,
-                                                            
eDepsOperation_Code opcode,
-                                                            const string 
&description)
-{
-       OperationDepsNode *op_node = comp_node->has_operation(opcode, 
description);
-       if (op_node == NULL) {
-               op_node = comp_node->add_operation(optype, op, opcode, 
description);
-               m_graph->operations.push_back(op_node);
-       }
-       else {
-               fprintf(stderr, "add_operation: Operation already exists - %s 
has %s at %p\n",
-                       comp_node->identifier().c_str(),
-                       op_node->identifier().c_str(),
-                       op_node);
-               BLI_assert(!"Should not happen!");
-       }
-       return op_node;
-}
-
-OperationDepsNode *DepsgraphNodeBuilder::add_operation_node(ID *id,
-                                                            eDepsNode_Type 
comp_type,
-                                                            const string 
&comp_name,
-                                                            
eDepsOperation_Type optype,
-                                                            
DepsEvalOperationCb op,
-                                                            
eDepsOperation_Code opcode,
-                                                            const string 
&description)
-{
-       ComponentDepsNode *comp_node = add_component_node(id, comp_type, 
comp_name);
-       return add_operation_node(comp_node, optype, op, opcode, description);
-}
-
-bool DepsgraphNodeBuilder::has_operation_node(ID *id,
-                                              eDepsNode_Type comp_type,
-                                              const string &comp_name,
-                                              eDepsOperation_Type optype,
-                                              eDepsOperation_Code opcode,
-                                              const string &description)
-{
-       return find_operation_node(id, comp_type, comp_name, optype, opcode, 
description) != NULL;
-}
-
-OperationDepsNode *DepsgraphNodeBuilder::find_operation_node(ID *id,
-                                                             eDepsNode_Type 
comp_type,
-                                                             const string 
&comp_name,
-                                                             
eDepsOperation_Type optype,
-                                                             
eDepsOperation_Code opcode,
-                                                             const string 
&description)
-{
-       ComponentDepsNode *comp_node = add_component_node(id, comp_type, 
comp_name);
-       return comp_node->has_operation(opcode, description);
-}
-
-/* ************************************************* */
-/* Relations Builder */
-
-RNAPathKey::RNAPathKey(ID *id, const string &path) :
-    id(id)
-{
-       /* create ID pointer for root of path lookup */
-       PointerRNA id_ptr;
-       RNA_id_pointer_create(id, &id_ptr);
-       /* try to resolve path... */
-       if (!RNA_path_resolve(&id_ptr, path.c_str(), &this->ptr, &this->prop)) {
-               this->ptr = PointerRNA_NULL;
-               this->prop = NULL;
-       }
-}
-
-DepsgraphRelationBuilder::DepsgraphRelationBuilder(Depsgraph *graph) :
-    m_graph(graph)
-{
-}
-
-RootDepsNode *DepsgraphRelationBuilder::find_node(const RootKey &key) const
-{
-       return m_graph->root_node;
-}
-
-TimeSourceDepsNode *DepsgraphRelationBuilder::find_node(const TimeSourceKey 
&key) const
-{
-       if (key.id) {
-               /* XXX TODO */
-               return NULL;
-       }
-       else {
-               return m_graph->root_node->time_source;
-       }
-}
-
-ComponentDepsNode *DepsgraphRelationBuilder::find_node(const ComponentKey 
&key) const
-{
-       IDDepsNode *id_node = m_graph->find_id_node(key.id);
-       if (!id_node) {
-               fprintf(stderr, "find_node component: Could not find ID %s\n",
-                       (key.id != NULL) ? key.id->name : "<null>");
-               return NULL;
-       }
-
-       ComponentDepsNode *node = id_node->find_component(key.type, key.name);
-       return node;
-}
-
-OperationDepsNode *DepsgraphRelationBuilder::find_node(const OperationKey 
&key) const
-{
-       IDDepsNode *id_node = m_graph->find_id_node(key.id);
-       if (!id_node) {
-               fprintf(stderr, "find_node operation: Could not find ID\n");
-               return NULL;
-       }
-
-       ComponentDepsNode *comp_node = 
id_node->find_component(key.component_type, key.component_name);
-       if (!comp_node) {
-               fprintf(stderr, "find_node operation: Could not find 
component\n");
-               return NULL;
-       }
-
-       OperationDepsNode *op_node = comp_node->find_operation(key.opcode, 
key.name);
-       if (!op_node) {
-               fprintf(stderr, "find_node_operation: Failed for (%s, '%s')\n", 
DEG_OPNAMES[key.opcode], key.name.c_str());
-       }
-       return op_node;
-}
-
-DepsNode *DepsgraphRelationBuilder::find_node(const RNAPathKey &key) const
-{
-       return m_graph->find_node_from_pointer(&key.ptr, key.prop);
-}
-
-void DepsgraphRelationBuilder::add_time_relation(TimeSourceDepsNode *timesrc, 
DepsNode *node_to, const string &description)
-{
-       if (timesrc && node_to) {
-               m_graph->add_new_relation(timesrc, node_to, DEPSREL_TYPE_TIME, 
description);
-       }
-       else {
-               DEG_DEBUG_PRINTF("add_time_relation(%p = %s, %p = %s, %s) 
Failed\n",
-                                timesrc,   (timesrc) ? 
timesrc->identifier().c_str() : "<None>",
-                                node_to,   (node_to) ? 
node_to->identifier().c_str() : "<None>",
-                                description.c_str());
-       }
-}
-
-void DepsgraphRelationBuilder::add_operation_relation(OperationDepsNode 
*node_from, OperationDepsNode *node_to,
-                                                      eDepsRelation_Type type, 
const string &description)
-{
-       if (node_from && node_to) {
-               m_graph->add_new_relation(node_from, node_to, type, 
description);
-       }
-       else {
-               DEG_DEBUG_PRINTF("add_operation_relation(%p = %s, %p = %s, %d, 
%s) Failed\n",
-                                node_from, (node_from) ? 
node_from->identifier().c_str() : "<None>",
-                                node_to,   (node_to)   ? 
node_to->identifier().c_str() : "<None>",
-                                type, description.c_str());
-       }
-}
-
 /* -------------------------------------------------- */
 
 /* performs a transitive reduction to remove redundant relations
@@ -564,34 +333,6 @@ static void deg_graph_build_finalize(Depsgraph *graph)
        }
 }
 
-/* ************************************************* */
-/* Datablock User Relationships Builder */
-
-DepsgraphIDUsersBuilder::DepsgraphIDUsersBuilder(Depsgraph *graph) :
-    m_graph(graph)
-{
-}
-
-
-void DepsgraphIDUsersBuilder::add_relation(const ID *from_id, const ID *to_id,
-                                              eDepsRelation_Type type, const 
string &description)
-{
-       IDDepsNode *node_from = m_graph->find_id_node(from_id);
-       IDDepsNode *node_to = m_graph->find_id_node(to_id);
-
-       if (node_from && node_to) {
-               m_graph->add_new_relation(node_from, node_to, type, 
description);
-       }
-       else {
-               fprintf(stderr, "ID Builder add_relation(%s => %s, %s => %s, 
%d, %s) Failed\n",
-                       (from_id) ? from_id->name : "<No ID>",
-                       (node_from) ? node_from->identifier().c_str() : 
"<None>",
-                       (to_id) ? to_id->name : "<No ID>",
-                       (node_to)   ? node_to->identifier().c_str() : "<None>",
-                       type, description.c_str());
-       }
-}
-
 /* *************** */
 /* Cycle detection */
 
diff --git a/source/blender/depsgraph/intern/depsgraph_build_idusers.cpp 
b/source/blender/depsgraph/intern/depsgraph_build_idusers.cpp
index 3c03e6f..d5faa1c 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_idusers.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_idusers.cpp
@@ -107,6 +107,31 @@ extern "C" {
  *       For example, "ob.data" becomes "obdata -> object"
  */
 
+DepsgraphIDUsersBuilder::DepsgraphIDUsersBuilder(Depsgraph *graph) :
+    m_graph(graph)
+{
+}
+
+
+void DepsgraphIDUsersBuilder::add_relation(const ID *from_id, const ID *to_id,
+                           

@@ 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