[Bf-blender-cvs] [85c162b] depsgraph_refactor: Added methods to give useful identifiers for nodes

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


Commit: 85c162b475bd2d049a054636e15a14589b79f0c7
Author: Joshua Leung
Date:   Tue Dec 16 15:18:47 2014 +1300
Branches: depsgraph_refactor
https://developer.blender.org/rB85c162b475bd2d049a054636e15a14589b79f0c7

Added methods to give useful identifiers for nodes

* All basic nodes now use an identifier string defined in DepsNode,
  which gives the node type and the name of the node (if present)
* Operation nodes now report the operation opcode (human readable)
  as well as the name (if present)

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

M	source/blender/depsgraph/intern/depsgraph_build.h
M	source/blender/depsgraph/intern/depsnode.cpp
M	source/blender/depsgraph/intern/depsnode.h
M	source/blender/depsgraph/intern/depsnode_operation.cpp
M	source/blender/depsgraph/intern/depsnode_operation.h

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build.h b/source/blender/depsgraph/intern/depsgraph_build.h
index e586ff5..368a275 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.h
+++ b/source/blender/depsgraph/intern/depsgraph_build.h
@@ -256,10 +256,7 @@ struct DepsNodeHandle {
 BLI_INLINE string get_node_info_string(DepsNode *node)
 {
 	if (node != NULL) {
-		char typebuf[5];
-		sprintf(typebuf, "%d", node->type);
-		
-		return string("Node(") + typebuf + ", " + node->name + ")";
+		return node->identifier();
 	}
 	else {
 		return string("<No Node>");
diff --git a/source/blender/depsgraph/intern/depsnode.cpp b/source/blender/depsgraph/intern/depsnode.cpp
index f623b78..405548a 100644
--- a/source/blender/depsgraph/intern/depsnode.cpp
+++ b/source/blender/depsgraph/intern/depsnode.cpp
@@ -25,6 +25,7 @@
  */
 
 #include <stdlib.h>
+#include <string.h>
 
 #include "BLI_utildefines.h"
 
@@ -65,6 +66,15 @@ DepsNode::~DepsNode()
 }
 
 
+/* Generic identifier for Depsgraph Nodes */
+string DepsNode::identifier()
+{
+	char typebuf[5];
+	sprintf(typebuf, "%d", type);
+	
+	return string("Node(") + "t: " + typebuf + ", n: '" + name + "')";
+}
+
 /* ******************************************************** */
 /* Generic Nodes */
 
diff --git a/source/blender/depsgraph/intern/depsnode.h b/source/blender/depsgraph/intern/depsnode.h
index 346e2bf..e80541c 100644
--- a/source/blender/depsgraph/intern/depsnode.h
+++ b/source/blender/depsgraph/intern/depsnode.h
@@ -68,6 +68,8 @@ public:
 	DepsNode();
 	virtual ~DepsNode();
 	
+	virtual string identifier();
+	
 	virtual void init(const ID *id, const string &subdata) {}
 	virtual void copy(DepsgraphCopyContext *dcc, const DepsNode *src) {}
 	
diff --git a/source/blender/depsgraph/intern/depsnode_operation.cpp b/source/blender/depsgraph/intern/depsnode_operation.cpp
index 8df9abc..9d06f8e 100644
--- a/source/blender/depsgraph/intern/depsnode_operation.cpp
+++ b/source/blender/depsgraph/intern/depsnode_operation.cpp
@@ -62,6 +62,21 @@ OperationDepsNode::~OperationDepsNode()
 	DEPSNODE_RELATIONS_ITER_END;
 }
 
+string OperationDepsNode::identifier()
+{
+	/* identifiers for operations */
+	const char *DEG_OPNAMES[] = {
+		#define DEF_DEG_OPCODE(label) #label,
+		#include "depsnode_opcodes.h"
+		#undef DEF_DEG_OPCODE
+		
+		"<Invalid>"
+	};
+	
+	BLI_assert((opcode > 0) && (opcode < ARRAY_SIZE(DEG_OPNAMES)));
+	return string(DEG_OPNAMES[opcode]) + "(" + name + ")";
+}
+
 void OperationDepsNode::tag_update(Depsgraph *graph)
 {
 	/* tag for update, but also note that this was the source of an update */
diff --git a/source/blender/depsgraph/intern/depsnode_operation.h b/source/blender/depsgraph/intern/depsnode_operation.h
index 0441edf..63ff10f 100644
--- a/source/blender/depsgraph/intern/depsnode_operation.h
+++ b/source/blender/depsgraph/intern/depsnode_operation.h
@@ -67,6 +67,8 @@ struct OperationDepsNode : public DepsNode {
 	OperationDepsNode();
 	~OperationDepsNode();
 	
+	string identifier();
+	
 	void tag_update(Depsgraph *graph);
 	
 	bool is_noop() const { return (bool)evaluate == false; }




More information about the Bf-blender-cvs mailing list