• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2002 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_TREEOPS_REGENERATESTRUCTNAMES_H_
8 #define COMPILER_TRANSLATOR_TREEOPS_REGENERATESTRUCTNAMES_H_
9 
10 #include "compiler/translator/SymbolTable.h"
11 #include "compiler/translator/tree_util/IntermTraverse.h"
12 
13 #include <set>
14 
15 namespace sh
16 {
17 
18 class RegenerateStructNames : public TIntermTraverser
19 {
20   public:
RegenerateStructNames(TSymbolTable * symbolTable)21     RegenerateStructNames(TSymbolTable *symbolTable)
22         : TIntermTraverser(true, false, false, symbolTable), mScopeDepth(0)
23     {}
24 
25   protected:
26     void visitSymbol(TIntermSymbol *) override;
27     bool visitBlock(Visit, TIntermBlock *block) override;
28 
29   private:
30     // Indicating the depth of the current scope.
31     // The global scope is 1.
32     int mScopeDepth;
33 
34     // If a struct's declared globally, push its ID in this set.
35     std::set<int> mDeclaredGlobalStructs;
36 };
37 
38 }  // namespace sh
39 
40 #endif  // COMPILER_TRANSLATOR_TREEOPS_REGENERATESTRUCTNAMES_H_
41