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 7 #ifndef COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H 8 #define COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H 9 10 #include "compiler/depgraph/DependencyGraph.h" 11 #include "compiler/InfoSink.h" 12 13 class TDependencyGraphOutput : public TDependencyGraphTraverser { 14 public: 15 TDependencyGraphOutput(TInfoSinkBase& sink) : mSink(sink) {} 16 virtual void visitSymbol(TGraphSymbol* symbol); 17 virtual void visitArgument(TGraphArgument* parameter); 18 virtual void visitFunctionCall(TGraphFunctionCall* functionCall); 19 virtual void visitSelection(TGraphSelection* selection); 20 virtual void visitLoop(TGraphLoop* loop); 21 virtual void visitLogicalOp(TGraphLogicalOp* logicalOp); 22 23 void outputAllSpanningTrees(TDependencyGraph& graph); 24 private: 25 void outputIndentation(); 26 27 TInfoSinkBase& mSink; 28 }; 29 30 #endif // COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H 31