[Bf-blender-cvs] [7a1a29a] depsgraph_refactor: Convenience API's and debugging funcs for all "keys" used when building the graph

Joshua Leung noreply at git.blender.org
Wed Dec 17 04:41:32 CET 2014


Commit: 7a1a29ab5d6d4317f23609818648f3a8ccad7320
Author: Joshua Leung
Date:   Wed Dec 17 16:12:42 2014 +1300
Branches: depsgraph_refactor
https://developer.blender.org/rB7a1a29ab5d6d4317f23609818648f3a8ccad7320

Convenience API's and debugging funcs for all "keys" used when building the graph

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

M	source/blender/depsgraph/intern/depsgraph_build.cpp
M	source/blender/depsgraph/intern/depsgraph_build.h
M	source/blender/depsgraph/intern/depsnode_component.cpp
M	source/blender/depsgraph/intern/depsnode_component.h

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build.cpp b/source/blender/depsgraph/intern/depsgraph_build.cpp
index 47d20cb..7f6e2aa 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build.cpp
@@ -311,13 +311,6 @@ RNAPathKey::RNAPathKey(ID *id, const string &path) :
 	}
 }
 
-RNAPathKey::RNAPathKey(ID *id, const PointerRNA &ptr, PropertyRNA *prop) :
-    id(id),
-    ptr(ptr),
-    prop(prop)
-{
-}
-
 DepsgraphRelationBuilder::DepsgraphRelationBuilder(Depsgraph *graph) :
     m_graph(graph)
 {
diff --git a/source/blender/depsgraph/intern/depsgraph_build.h b/source/blender/depsgraph/intern/depsgraph_build.h
index bbeb9d3b..00c15a2 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.h
+++ b/source/blender/depsgraph/intern/depsgraph_build.h
@@ -122,13 +122,32 @@ struct TimeSourceKey
 	TimeSourceKey() : id(NULL) {}
 	TimeSourceKey(ID *id) : id(id) {}
 	
+	string identifier() const
+	{
+		return string("TimeSourceKey");
+	}
+	
 	ID *id;
 };
 
 struct ComponentKey
 {
-	ComponentKey() : id(NULL), type(DEPSNODE_TYPE_UNDEFINED), name("") {}
-	ComponentKey(ID *id, eDepsNode_Type type, const string &name = "") : id(id), type(type), name(name) {}
+	ComponentKey() :
+	    id(NULL), type(DEPSNODE_TYPE_UNDEFINED), name("")
+	{}
+	ComponentKey(ID *id, eDepsNode_Type type, const string &name = "") :
+	    id(id), type(type), name(name)
+	{}
+	
+	string identifier() const
+	{
+		const char *idname = (id) ? id->name : "<None>";
+		
+		char typebuf[5];
+		sprintf(typebuf, "%d", type);
+		
+		return string("ComponentKey(") + idname + ", " + typebuf + ", '" + name + "')";
+	}
 	
 	ID *id;
 	eDepsNode_Type type;
@@ -162,6 +181,16 @@ struct OperationKey
 	    id(id), component_type(component_type), component_name(component_name), opcode(opcode), name(name)
 	{}
 	
+	string identifier() const
+	{
+		char typebuf[5], codebuf[5];
+		
+		sprintf(typebuf, "%d", component_type);
+		sprintf(codebuf, "%d", opcode); // XXX: use the string defs instead
+		
+		return string("OperationKey(") + "t: " + typebuf + ", cn: '" + component_name + "', c: " + codebuf + ", n: '" + name + "')";
+	}
+	
 	
 	ID *id;
 	eDepsNode_Type component_type;
@@ -172,8 +201,14 @@ struct OperationKey
 
 struct RNAPathKey
 {
+	// Note: see depsgraph_build.cpp for implementation
 	RNAPathKey(ID *id, const string &path);
-	RNAPathKey(ID *id, const PointerRNA &ptr, PropertyRNA *prop);
+	
+	RNAPathKey(ID *id, const PointerRNA &ptr, PropertyRNA *prop) :
+	    id(id), ptr(ptr), prop(prop)
+	{}
+	
+	
 	ID *id;
 	PointerRNA ptr;
 	PropertyRNA *prop;
diff --git a/source/blender/depsgraph/intern/depsnode_component.cpp b/source/blender/depsgraph/intern/depsnode_component.cpp
index 718209e..860e448 100644
--- a/source/blender/depsgraph/intern/depsnode_component.cpp
+++ b/source/blender/depsgraph/intern/depsnode_component.cpp
@@ -97,12 +97,24 @@ string ComponentDepsNode::identifier() const
 	return string("Component(") + idname + " - " + typebuf + " " + name.c_str() + ")";
 }
 
+OperationDepsNode *ComponentDepsNode::find_operation(OperationIDKey key) const
+{
+	OperationMap::const_iterator it = this->operations.find(key);
+	
+	if (it != this->operations.end()) {
+		return it->second;
+	}
+	else {
+		fprintf(stderr, "%s: find_operation(%s) failed\n",
+		        this->identifier().c_str(), key.identifier().c_str());
+		return NULL;
+	}
+}
+
 OperationDepsNode *ComponentDepsNode::find_operation(eDepsOperation_Code opcode, const string &name) const
 {
 	OperationIDKey key(opcode, name);
-	
-	OperationMap::const_iterator it = this->operations.find(key);
-	return (it != this->operations.end()) ? it->second : NULL;
+	return find_operation(key);
 }
 
 OperationDepsNode *ComponentDepsNode::add_operation(eDepsOperation_Type optype, DepsEvalOperationCb op, eDepsOperation_Code opcode, const string &name)
diff --git a/source/blender/depsgraph/intern/depsnode_component.h b/source/blender/depsgraph/intern/depsnode_component.h
index 30e5a22..f892a7e 100644
--- a/source/blender/depsgraph/intern/depsnode_component.h
+++ b/source/blender/depsgraph/intern/depsnode_component.h
@@ -102,6 +102,7 @@ struct ComponentDepsNode : public DepsNode {
 	
 	string identifier() const;
 	
+	OperationDepsNode *find_operation(OperationIDKey key) const;
 	OperationDepsNode *find_operation(eDepsOperation_Code opcode, const string &name) const;
 	
 	/* Create a new node for representing an operation and add this to graph




More information about the Bf-blender-cvs mailing list