UnfoldSelect.h revision a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579
1a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block//
2a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// Use of this source code is governed by a BSD-style license that can be
4a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block// found in the LICENSE file.
5a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block//
6a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
7a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#ifndef COMPILER_UNFOLDSELECT_H_
8a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#define COMPILER_UNFOLDSELECT_H_
9a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
10a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include "compiler/intermediate.h"
11a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#include "compiler/ParseHelper.h"
12a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
13a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blocknamespace sh
14a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block{
15a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockclass OutputHLSL;
16a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
17a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Blockclass UnfoldSelect : public TIntermTraverser
18a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block{
19a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block  public:
20a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    UnfoldSelect(TParseContext &context, OutputHLSL *outputHLSL);
21a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
22a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    void traverse(TIntermNode *node);
23a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    bool visitSelection(Visit visit, TIntermSelection *node);
24a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
25a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    int getTemporaryIndex();
26a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
27a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block  protected:
28a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    TParseContext &mContext;
29a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    OutputHLSL *const mOutputHLSL;
30a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
31a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block    int mTemporaryIndex;
32a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block};
33a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block}
34a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block
35a9bfd6c4a32dfd9cc032cb67c6ccb8d09c16f579Steve Block#endif   // COMPILER_UNFOLDSELECT_H_
36