Home | History | Annotate | Download | only in compiler
      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/intermediate.h"
     13 #include "compiler/ParseContext.h"
     14 
     15 namespace sh
     16 {
     17 class OutputHLSL;
     18 
     19 class 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