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
15namespace sh
16{
17class OutputHLSL;
18
19class 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