// // Copyright (c) 2002-2013 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. // #ifndef COMPILER_INITIALIZE_VARIABLES_H_ #define COMPILER_INITIALIZE_VARIABLES_H_ #include "compiler/translator/intermediate.h" class InitializeVariables : public TIntermTraverser { public: struct InitVariableInfo { TString name; TType type; InitVariableInfo(const TString& _name, const TType& _type) : name(_name), type(_type) { } }; typedef TVector InitVariableInfoList; InitializeVariables(const InitVariableInfoList& vars) : mCodeInserted(false), mVariables(vars) { } protected: virtual bool visitBinary(Visit visit, TIntermBinary* node) { return false; } virtual bool visitUnary(Visit visit, TIntermUnary* node) { return false; } virtual bool visitSelection(Visit visit, TIntermSelection* node) { return false; } virtual bool visitLoop(Visit visit, TIntermLoop* node) { return false; } virtual bool visitBranch(Visit visit, TIntermBranch* node) { return false; } virtual bool visitAggregate(Visit visit, TIntermAggregate* node); private: void insertInitCode(TIntermSequence& sequence); InitVariableInfoList mVariables; bool mCodeInserted; }; #endif // COMPILER_INITIALIZE_VARIABLES_H_