Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / angle / src / compiler / translator / RegenerateStructNames.h
1 //
2 // Copyright (c) 2002-2014 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
7 #ifndef COMPILER_TRANSLATOR_REGENERATE_STRUCT_NAMES_H_
8 #define COMPILER_TRANSLATOR_REGENERATE_STRUCT_NAMES_H_
9
10 #include "compiler/translator/Intermediate.h"
11 #include "compiler/translator/SymbolTable.h"
12
13 #include <set>
14
15 class RegenerateStructNames : public TIntermTraverser
16 {
17   public:
18     RegenerateStructNames(const TSymbolTable &symbolTable,
19                           int shaderVersion)
20         : mSymbolTable(symbolTable),
21           mShaderVersion(shaderVersion),
22           mScopeDepth(0) {}
23
24   protected:
25     virtual void visitSymbol(TIntermSymbol *);
26     virtual bool visitAggregate(Visit, TIntermAggregate *);
27
28   private:
29     const TSymbolTable &mSymbolTable;
30     int mShaderVersion;
31
32     // Indicating the depth of the current scope.
33     // The global scope is 1.
34     int mScopeDepth;
35
36     // If a struct's declared globally, push its ID in this set.
37     std::set<int> mDeclaredGlobalStructs;
38 };
39
40 #endif  // COMPILER_TRANSLATOR_REGENERATE_STRUCT_NAMES_H_