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 // CollectVariables.h: Collect lists of shader interface variables based on the AST.
7 
8 #ifndef COMPILER_TRANSLATOR_COLLECTVARIABLES_H_
9 #define COMPILER_TRANSLATOR_COLLECTVARIABLES_H_
10 
11 #include <GLSLANG/ShaderLang.h>
12 
13 #include "compiler/translator/ExtensionBehavior.h"
14 
15 namespace sh
16 {
17 
18 class TIntermBlock;
19 class TSymbolTable;
20 
21 void CollectVariables(TIntermBlock *root,
22                       std::vector<ShaderVariable> *attributes,
23                       std::vector<ShaderVariable> *outputVariables,
24                       std::vector<ShaderVariable> *uniforms,
25                       std::vector<ShaderVariable> *inputVaryings,
26                       std::vector<ShaderVariable> *outputVaryings,
27                       std::vector<ShaderVariable> *sharedVariables,
28                       std::vector<InterfaceBlock> *uniformBlocks,
29                       std::vector<InterfaceBlock> *shaderStorageBlocks,
30                       ShHashFunction64 hashFunction,
31                       TSymbolTable *symbolTable,
32                       GLenum shaderType,
33                       const TExtensionBehavior &extensionBehavior,
34                       const ShBuiltInResources &resources,
35                       int tessControlShaderOutputVertices);
36 }  // namespace sh
37 
38 #endif  // COMPILER_TRANSLATOR_COLLECTVARIABLES_H_
39