1//
2// Copyright (c) 2002-2011 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
15namespace sh
16{
17
18class TIntermBlock;
19class TSymbolTable;
20
21void CollectVariables(TIntermBlock *root,
22 std::vector<Attribute> *attributes,
23 std::vector<OutputVariable> *outputVariables,
24 std::vector<Uniform> *uniforms,
25 std::vector<Varying> *inputVaryings,
26 std::vector<Varying> *outputVaryings,
27 std::vector<InterfaceBlock> *uniformBlocks,
28 std::vector<InterfaceBlock> *shaderStorageBlocks,
29 std::vector<InterfaceBlock> *inBlocks,
30 ShHashFunction64 hashFunction,
31 TSymbolTable *symbolTable,
32 GLenum shaderType,
33 const TExtensionBehavior &extensionBehavior);
34} // namespace sh
35
36#endif // COMPILER_TRANSLATOR_COLLECTVARIABLES_H_
37