#ifndef COMPILER_TRANSLATOR_SYMBOLTABLE_H_
#define COMPILER_TRANSLATOR_SYMBOLTABLE_H_
#include <limits>
#include <memory>
#include <set>
#include "common/angleutils.h"
#include "compiler/translator/ExtensionBehavior.h"
#include "compiler/translator/ImmutableString.h"
#include "compiler/translator/InfoSink.h"
#include "compiler/translator/IntermNode.h"
#include "compiler/translator/Symbol.h"
#include "compiler/translator/SymbolTable_autogen.h"
enum class Shader : uint8_t
{ … };
namespace sh
{
struct UnmangledBuiltIn
{ … };
VarPointer;
ValidateExtension;
enum class Spec : uint8_t
{ … };
constexpr uint16_t kESSL1Only = …;
constexpr uint16_t kESSLInternalBackendBuiltIns = …;
static_assert …;
static_assert …;
#define EXT_INDEX(Ext) …
class SymbolRule
{ … };
constexpr SymbolRule::SymbolRule(Spec spec,
int version,
Shader shaders,
size_t extensionIndex,
const TSymbol *symbol)
: … { … }
constexpr SymbolRule::SymbolRule(Spec spec,
int version,
Shader shaders,
size_t extensionIndex,
VarPointer resourceVar)
: … { … }
template <Spec spec, int version, Shader shaders, size_t extensionIndex, typename T>
constexpr SymbolRule SymbolRule::Get(T value)
{ … }
const TSymbol *FindMangledBuiltIn(ShShaderSpec shaderSpec,
int shaderVersion,
sh::GLenum shaderType,
const ShBuiltInResources &resources,
const TSymbolTableBase &symbolTable,
const SymbolRule *rules,
uint16_t startIndex,
uint16_t endIndex);
class UnmangledEntry
{ … };
template <size_t ESSLExtCount>
constexpr UnmangledEntry::UnmangledEntry(const char *name,
const std::array<TExtension, ESSLExtCount> &esslExtensions,
TExtension glslExtension,
int esslVersion,
int glslVersion,
Shader shaderType)
: mName(name),
mESSLExtensions{ … }
class TSymbolTable : angle::NonCopyable, TSymbolTableBase
{ … };
}
#endif