// // Copyright 2002 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. // #ifndef COMPILER_TRANSLATOR_TYPES_H_ #define COMPILER_TRANSLATOR_TYPES_H_ #include "common/angleutils.h" #include "common/debug.h" #include "compiler/translator/BaseTypes.h" #include "compiler/translator/Common.h" #include "compiler/translator/ImmutableString.h" #include "compiler/translator/SymbolUniqueId.h" namespace sh { struct TPublicType; class TType; class TInterfaceBlock; class TStructure; class TSymbol; class TVariable; class TIntermSymbol; class TSymbolTable; class TField : angle::NonCopyable { … }; TFieldList; class TFieldListCollection : angle::NonCopyable { … }; // // Base class for things that have a type. // class TType { … }; // TTypeSpecifierNonArray stores all of the necessary fields for type_specifier_nonarray from the // grammar struct TTypeSpecifierNonArray { … }; // // This is a workaround for a problem with the yacc stack, It can't have // types that it thinks have non-trivial constructors. It should // just be used while recognizing the grammar, not anything else. Pointers // could be used, but also trying to avoid lots of memory management overhead. // // Not as bad as it looks, there is no actual assumption that the fields // match up or are name the same or anything like that. // struct TPublicType { … }; } // namespace sh #endif // COMPILER_TRANSLATOR_TYPES_H_