166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com//
266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// Use of this source code is governed by a BSD-style license that can be
466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// found in the LICENSE file.
566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com//
666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com
766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com#ifndef COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H
866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com#define COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H
966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com
10dcefb75e81f3eec28fb1d2d3b3847682659e7378Geoff Lang#include "compiler/translator/depgraph/DependencyGraph.h"
11dcefb75e81f3eec28fb1d2d3b3847682659e7378Geoff Lang#include "compiler/translator/InfoSink.h"
1266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com
1366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comclass TDependencyGraphOutput : public TDependencyGraphTraverser {
1466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.compublic:
1566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    TDependencyGraphOutput(TInfoSinkBase& sink) : mSink(sink) {}
1666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    virtual void visitSymbol(TGraphSymbol* symbol);
1766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    virtual void visitArgument(TGraphArgument* parameter);
1866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    virtual void visitFunctionCall(TGraphFunctionCall* functionCall);
1966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    virtual void visitSelection(TGraphSelection* selection);
2066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    virtual void visitLoop(TGraphLoop* loop);
2166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    virtual void visitLogicalOp(TGraphLogicalOp* logicalOp);
2266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com
2366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    void outputAllSpanningTrees(TDependencyGraph& graph);
2466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comprivate:
2566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    void outputIndentation();
2666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com
2766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com    TInfoSinkBase& mSink;
2866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com};
2966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com
3066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com#endif  // COMPILER_DEPGRAPH_DEPENDENCY_GRAPH_OUTPUT_H
31