1 //
2 // Copyright (c) 2002-2010 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 // UnfoldSelect is an AST traverser to output the select operator ?: as if-else statements
7 //
8 
9 #ifndef COMPILER_UNFOLDSELECT_H_
10 #define COMPILER_UNFOLDSELECT_H_
11 
12 #include "compiler/intermediate.h"
13 #include "compiler/ParseHelper.h"
14 
15 namespace sh
16 {
17 class OutputHLSL;
18 
19 class UnfoldSelect : public TIntermTraverser
20 {
21   public:
22     UnfoldSelect(TParseContext &context, OutputHLSL *outputHLSL);
23 
24     void traverse(TIntermNode *node);
25     bool visitSelection(Visit visit, TIntermSelection *node);
26 
27     int getTemporaryIndex();
28 
29   protected:
30     TParseContext &mContext;
31     OutputHLSL *const mOutputHLSL;
32 
33     int mTemporaryIndex;
34 };
35 }
36 
37 #endif   // COMPILER_UNFOLDSELECT_H_
38