zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DependencyGraphTraverse.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
8 
9 // These methods do a breadth-first traversal through the graph and mark visited nodes.
10 
12 {
13  graphTraverser->markVisited(this);
14 }
15 
17 {
18  TGraphNode::traverse(graphTraverser);
19 
20  graphTraverser->incrementDepth();
21 
22  // Visit the parent node's children.
23  for (TGraphNodeSet::const_iterator iter = mDependentNodes.begin();
24  iter != mDependentNodes.end();
25  ++iter)
26  {
27  TGraphNode* node = *iter;
28  if (!graphTraverser->isVisited(node))
29  node->traverse(graphTraverser);
30  }
31 
32  graphTraverser->decrementDepth();
33 }
34 
36 {
37  graphTraverser->visitArgument(this);
38  TGraphParentNode::traverse(graphTraverser);
39 }
40 
42 {
43  graphTraverser->visitFunctionCall(this);
44  TGraphParentNode::traverse(graphTraverser);
45 }
46 
48 {
49  graphTraverser->visitSymbol(this);
50  TGraphParentNode::traverse(graphTraverser);
51 }
52 
54 {
55  graphTraverser->visitSelection(this);
56  TGraphNode::traverse(graphTraverser);
57 }
58 
60 {
61  graphTraverser->visitLoop(this);
62  TGraphNode::traverse(graphTraverser);
63 }
64 
66 {
67  graphTraverser->visitLogicalOp(this);
68  TGraphNode::traverse(graphTraverser);
69 }
virtual void traverse(TDependencyGraphTraverser *graphTraverser)
virtual void traverse(TDependencyGraphTraverser *graphTraverser)
virtual void visitSelection(TGraphSelection *selection)
virtual void traverse(TDependencyGraphTraverser *graphTraverser)
bool isVisited(TGraphNode *node) const
virtual void traverse(TDependencyGraphTraverser *graphTraverser)
void markVisited(TGraphNode *node)
virtual void traverse(TDependencyGraphTraverser *graphTraverser)
virtual void visitFunctionCall(TGraphFunctionCall *functionCall)
virtual void visitArgument(TGraphArgument *selection)
virtual void traverse(TDependencyGraphTraverser *graphTraverser)
virtual void visitLoop(TGraphLoop *loop)
virtual void visitSymbol(TGraphSymbol *symbol)
virtual void visitLogicalOp(TGraphLogicalOp *logicalOp)
virtual void traverse(TDependencyGraphTraverser *graphTraverser)
virtual void traverse(TDependencyGraphTraverser *graphTraverser)