1// 2// Copyright (c) 2002-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// UnfoldShortCircuit is an AST traverser to output short-circuiting operators as if-else statements 7// 8 9#ifndef COMPILER_UNFOLDSHORTCIRCUIT_H_ 10#define COMPILER_UNFOLDSHORTCIRCUIT_H_ 11 12#include "compiler/translator/IntermNode.h" 13#include "compiler/translator/ParseContext.h" 14 15namespace sh 16{ 17class OutputHLSL; 18 19class UnfoldShortCircuit : public TIntermTraverser 20{ 21 public: 22 UnfoldShortCircuit(TParseContext &context, OutputHLSL *outputHLSL); 23 24 void traverse(TIntermNode *node); 25 bool visitBinary(Visit visit, TIntermBinary*); 26 bool visitSelection(Visit visit, TIntermSelection *node); 27 bool visitLoop(Visit visit, TIntermLoop *node); 28 29 int getNextTemporaryIndex(); 30 31 protected: 32 TParseContext &mContext; 33 OutputHLSL *const mOutputHLSL; 34 35 int mTemporaryIndex; 36}; 37} 38 39#endif // COMPILER_UNFOLDSHORTCIRCUIT_H_ 40