[Bf-blender-cvs] [d9de6a8] depsgraph_refactor: Depsgraph: Code cleanup
Sergey Sharybin
noreply at git.blender.org
Thu Dec 18 15:26:28 CET 2014
Commit: d9de6a8a87e2752eac30cef97608b63af01de26d
Author: Sergey Sharybin
Date: Thu Dec 18 19:26:17 2014 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rBd9de6a8a87e2752eac30cef97608b63af01de26d
Depsgraph: Code cleanup
===================================================================
M source/blender/depsgraph/intern/depsnode.h
===================================================================
diff --git a/source/blender/depsgraph/intern/depsnode.h b/source/blender/depsgraph/intern/depsnode.h
index a692554..f7a47e0 100644
--- a/source/blender/depsgraph/intern/depsnode.h
+++ b/source/blender/depsgraph/intern/depsnode.h
@@ -45,55 +45,65 @@ struct DepsRelation;
struct DepsgraphCopyContext;
struct OperationDepsNode;
-/* ************************************* */
+/* *********************************** */
/* Base-Defines for Nodes in Depsgraph */
-/* All nodes in Depsgraph are descended from this */
+/* All nodes in Depsgraph are descended from this. */
struct DepsNode {
- /* Helper class for static typeinfo in subclasses */
+ /* Helper class for static typeinfo in subclasses. */
struct TypeInfo {
TypeInfo(eDepsNode_Type type, const string &tname);
-
+
eDepsNode_Type type;
eDepsNode_Class tclass;
string tname;
};
-
- string name; /* identifier - mainly for debugging purposes... */
-
- eDepsNode_Type type; /* structural type of node */
- eDepsNode_Class tclass; /* type of data/behaviour represented by node... */
-
-
+
+ /* Identifier - mainly for debugging purposes. */
+ string name;
+
+ /* Structural type of node. */
+ eDepsNode_Type type;
+
+ /* Type of data/behaviour represented by node... */
+ eDepsNode_Class tclass;
+
/* Relationships between nodes
- * The reason why all depsgraph nodes are descended from this type (apart from basic serialisation
- * benefits - from the typeinfo) is that we can have relationships between these nodes!
+ * The reason why all depsgraph nodes are descended from this type (apart
+ * from basic serialisation benefits - from the typeinfo) is that we can have
+ * relationships between these nodes!
*/
typedef unordered_set<DepsRelation *> Relations;
-
- Relations inlinks; /* nodes which this one depends on */
- Relations outlinks; /* nodes which depend on this one */
-
- int done; /* generic tag for traversal algorithms */
-
-public:
+
+ /* Nodes which this one depends on. */
+ Relations inlinks;
+
+ /* Nodes which depend on this one. */
+ Relations outlinks;
+
+ /* Generic tag for traversal algorithms */
+ int done;
+
+ /* Methods. */
+
DepsNode();
virtual ~DepsNode();
-
+
virtual string identifier() const;
-
+
virtual void init(const ID *id, const string &subdata) {}
virtual void copy(DepsgraphCopyContext *dcc, const DepsNode *src) {}
-
+
virtual void tag_update(Depsgraph *graph) {}
};
-/* Macros for common static typeinfo */
+/* Macros for common static typeinfo. */
#define DEG_DEPSNODE_DECLARE \
static const DepsNode::TypeInfo typeinfo
#define DEG_DEPSNODE_DEFINE(NodeType, type_, tname_) \
const DepsNode::TypeInfo NodeType::typeinfo = DepsNode::TypeInfo(type_, tname_)
+/* TODO(sergey): Move to depsgraph_types.h. */
using std::vector;
/* Generic Nodes ======================= */
@@ -101,46 +111,56 @@ using std::vector;
struct ComponentDepsNode;
struct IDDepsNode;
-/* Time Source Node */
+/* Time Source Node. */
struct TimeSourceDepsNode : public DepsNode {
- double cfra; /* new "current time" */
- double offset; /* time-offset relative to the "official" time source that this one has */
-
+ /* TODO(sergey): Time in blender is float, not double. */
+ /* New "current time". */
+ double cfra;
+
+ /* time-offset relative to the "official" time source that this one has. */
+ double offset;
+
// TODO: evaluate() operation needed
-
+
void tag_update(Depsgraph *graph);
-
+
DEG_DEPSNODE_DECLARE;
};
-/* Root Node */
+/* Root Node. */
struct RootDepsNode : public DepsNode {
~RootDepsNode();
TimeSourceDepsNode *add_time_source(const string &name = "");
-
- struct Scene *scene; /* scene that this corresponds to */
- TimeSourceDepsNode *time_source; /* entrypoint node for time-changed */
-
+
+ /* scene that this corresponds to */
+ Scene *scene;
+
+ /* Entrypoint node for time-changed. */
+ TimeSourceDepsNode *time_source;
+
DEG_DEPSNODE_DECLARE;
};
/* ID-Block Reference */
struct IDDepsNode : public DepsNode {
struct ComponentKey {
- ComponentKey(eDepsNode_Type type_, const string &name_ = "") : type(type_), name(name_) {}
-
+ ComponentKey(eDepsNode_Type type, const string &name = "")
+ : type(type), name(name) {}
+
bool operator== (const ComponentKey &other) const
{
return type == other.type && name == other.name;
}
-
+
eDepsNode_Type type;
string name;
};
-
- /* XXX can't specialize std::hash for this purpose, because ComponentKey is a nested type ...
- * http://stackoverflow.com/a/951245
+
+ /* XXX can't specialize std::hash for this purpose, because ComponentKey is
+ * a nested type ...
+ *
+ * http://stackoverflow.com/a/951245
*/
struct component_key_hash {
bool operator() (const ComponentKey &key) const
@@ -148,49 +168,71 @@ struct IDDepsNode : public DepsNode {
return hash_combine(hash<int>()(key.type), hash<string>()(key.name));
}
};
-
- typedef unordered_map<ComponentKey, ComponentDepsNode *, component_key_hash> ComponentMap;
-
+
+ typedef unordered_map<ComponentKey,
+ ComponentDepsNode*,
+ component_key_hash> ComponentMap;
+
void init(const ID *id, const string &subdata);
void copy(DepsgraphCopyContext *dcc, const IDDepsNode *src);
~IDDepsNode();
-
- ComponentDepsNode *find_component(eDepsNode_Type type, const string &name = "") const;
- ComponentDepsNode *add_component(eDepsNode_Type type, const string &name = "");
+
+ ComponentDepsNode *find_component(eDepsNode_Type type,
+ const string &name = "") const;
+ ComponentDepsNode *add_component(eDepsNode_Type type,
+ const string &name = "");
void remove_component(eDepsNode_Type type, const string &name = "");
void clear_components();
-
+
void tag_update(Depsgraph *graph);
-
- struct ID *id; /* ID Block referenced */
- ComponentMap components; /* hash to make it faster to look up components */
-
+
+ /* ID Block referenced. */
+ ID *id;
+
+ /* Hash to make it faster to look up components. */
+ ComponentMap components;
+
DEG_DEPSNODE_DECLARE;
};
-/* Subgraph Reference */
+/* Subgraph Reference. */
struct SubgraphDepsNode : public DepsNode {
void init(const ID *id, const string &subdata);
void copy(DepsgraphCopyContext *dcc, const SubgraphDepsNode *src);
~SubgraphDepsNode();
-
- Depsgraph *graph; /* instanced graph */
- struct ID *root_id; /* ID-block at root of subgraph (if applicable) */
-
- size_t num_users; /* number of nodes which use/reference this subgraph - if just 1, it may be possible to merge into main */
- int flag; /* (eSubgraphRef_Flag) assorted settings for subgraph node */
-
+
+ /* Instanced graph. */
+ Depsgraph *graph;
+
+ /* ID-block at root of subgraph (if applicable). */
+ ID *root_id;
+
+ /* Number of nodes which use/reference this subgraph - if just 1, it may be
+ * possible to merge into main,
+ */
+ size_t num_users;
+
+ /* (eSubgraphRef_Flag) assorted settings for subgraph node. */
+ int flag;
+
DEG_DEPSNODE_DECLARE;
};
/* Flags for subgraph node */
typedef enum eSubgraphRef_Flag {
- SUBGRAPH_FLAG_SHARED = (1 << 0), /* subgraph referenced is shared with another reference, so shouldn't free on exit */
- SUBGRAPH_FLAG_FIRSTREF = (1 << 1), /* node is first reference to subgraph, so it can be freed when we are removed */
+ /* Subgraph referenced is shared with another reference, so shouldn't
+ * free on exit.
+ */
+ SUBGRAPH_FLAG_SHARED = (1 << 0),
+
+ /* Node is first reference to subgraph, so it can be freed when we are
+ * removed.
+ */
+ SUBGRAPH_FLAG_FIRSTREF = (1 << 1),
} eSubgraphRef_Flag;
/* ************************************* */
void DEG_register_base_depsnodes();
-#endif // __DEPSNODE_H__
+#endif /* __DEPSNODE_H__ */
More information about the Bf-blender-cvs
mailing list