Edit

kc3-lang/angle/src/compiler/UnfoldSelect.h

Branch :

  • Show log

    Commit

  • Author : daniel@transgaming.com
    Date : 2011-10-04 18:43:40
    Hash : ccb38417
    Message : Support multiple nested ternary operators per statement TRAC #18382 ANGLEBUG=203,208 Signed-off-by: Daniel Koch Author: Nicolas Capens - by incrementing the temporary index, adding 1 for every nesting level, and rewinding it after each traverse. Also fixed multiple ternary operator unfolding for loops. git-svn-id: https://angleproject.googlecode.com/svn/trunk@784 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/compiler/UnfoldSelect.h
  • //
    // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    // UnfoldSelect is an AST traverser to output the select operator ?: as if-else statements
    //
    
    #ifndef COMPILER_UNFOLDSELECT_H_
    #define COMPILER_UNFOLDSELECT_H_
    
    #include "compiler/intermediate.h"
    #include "compiler/ParseHelper.h"
    
    namespace sh
    {
    class OutputHLSL;
    
    class UnfoldSelect : public TIntermTraverser
    {
      public:
        UnfoldSelect(TParseContext &context, OutputHLSL *outputHLSL);
    
        void traverse(TIntermNode *node);
        bool visitSelection(Visit visit, TIntermSelection *node);
        bool visitLoop(Visit visit, TIntermLoop *node);
    
        int getNextTemporaryIndex();
    
      protected:
        TParseContext &mContext;
        OutputHLSL *const mOutputHLSL;
    
        int mTemporaryIndex;
    };
    }
    
    #endif   // COMPILER_UNFOLDSELECT_H_