diff options
Diffstat (limited to 'gfx/angle/checkout/src/compiler/translator/SymbolUniqueId.h')
-rw-r--r-- | gfx/angle/checkout/src/compiler/translator/SymbolUniqueId.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/compiler/translator/SymbolUniqueId.h b/gfx/angle/checkout/src/compiler/translator/SymbolUniqueId.h new file mode 100644 index 0000000000..7e0312d054 --- /dev/null +++ b/gfx/angle/checkout/src/compiler/translator/SymbolUniqueId.h @@ -0,0 +1,58 @@ +// +// Copyright 2017 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// SymbolUniqueId.h: Encapsulates a unique id for a symbol. + +#ifndef COMPILER_TRANSLATOR_SYMBOLUNIQUEID_H_ +#define COMPILER_TRANSLATOR_SYMBOLUNIQUEID_H_ + +#include "compiler/translator/Common.h" + +namespace sh +{ + +class TSymbolTable; +class TSymbol; + +class TSymbolUniqueId +{ + public: + POOL_ALLOCATOR_NEW_DELETE + explicit TSymbolUniqueId(const TSymbol &symbol); + constexpr TSymbolUniqueId(const TSymbolUniqueId &) = default; + TSymbolUniqueId &operator =(const TSymbolUniqueId &); + bool operator==(const TSymbolUniqueId &) const; + + constexpr int get() const { return mId; } + + private: + friend class TSymbolTable; + explicit TSymbolUniqueId(TSymbolTable *symbolTable); + + friend class BuiltInId; + constexpr TSymbolUniqueId(int staticId) : mId(staticId) {} + + int mId; +}; + +enum class SymbolType : uint8_t +{ + BuiltIn, + UserDefined, + AngleInternal, + Empty // Meaning symbol without a name. +}; + +enum class SymbolClass : uint8_t +{ + Function, + Variable, + Struct, + InterfaceBlock +}; + +} // namespace sh + +#endif // COMPILER_TRANSLATOR_SYMBOLUNIQUEID_H_ |