#ifndef COMPILER_TRANSLATOR_INTERMNODE_H_
#define COMPILER_TRANSLATOR_INTERMNODE_H_
#include "GLSLANG/ShaderLang.h"
#include <algorithm>
#include <queue>
#include "common/angleutils.h"
#include "compiler/translator/Common.h"
#include "compiler/translator/ConstantUnion.h"
#include "compiler/translator/ImmutableString.h"
#include "compiler/translator/Operator_autogen.h"
#include "compiler/translator/SymbolUniqueId.h"
#include "compiler/translator/Types.h"
#include "compiler/translator/tree_util/Visit.h"
namespace sh
{
class TDiagnostics;
class TIntermTraverser;
class TIntermAggregate;
class TIntermBlock;
class TIntermGlobalQualifierDeclaration;
class TIntermDeclaration;
class TIntermFunctionPrototype;
class TIntermFunctionDefinition;
class TIntermSwizzle;
class TIntermBinary;
class TIntermUnary;
class TIntermConstantUnion;
class TIntermTernary;
class TIntermIfElse;
class TIntermSwitch;
class TIntermCase;
class TIntermTyped;
class TIntermSymbol;
class TIntermLoop;
class TInfoSink;
class TInfoSinkBase;
class TIntermBranch;
class TIntermPreprocessorDirective;
class TSymbolTable;
class TFunction;
class TVariable;
class TIntermNode : angle::NonCopyable
{ … };
struct TIntermNodePair
{ … };
class TIntermTyped : public TIntermNode
{ … };
enum TLoopType
{ … };
class TIntermLoop : public TIntermNode
{ … };
class TIntermBranch : public TIntermNode
{ … };
class TIntermSymbol : public TIntermTyped
{ … };
class TIntermExpression : public TIntermTyped
{ … };
class TIntermConstantUnion : public TIntermExpression
{ … };
class TIntermOperator : public TIntermExpression
{ … };
class TIntermSwizzle : public TIntermExpression
{ … };
class TIntermBinary : public TIntermOperator
{ … };
class TIntermUnary : public TIntermOperator
{ … };
TIntermSequence;
TQualifierList;
class TIntermAggregateBase
{ … };
class TIntermAggregate : public TIntermOperator, public TIntermAggregateBase
{ … };
class TIntermBlock : public TIntermNode, public TIntermAggregateBase
{ … };
class TIntermFunctionPrototype : public TIntermTyped
{ … };
class TIntermFunctionDefinition : public TIntermNode
{ … };
class TIntermDeclaration : public TIntermNode, public TIntermAggregateBase
{ … };
class TIntermGlobalQualifierDeclaration : public TIntermNode
{ … };
class TIntermTernary : public TIntermExpression
{ … };
class TIntermIfElse : public TIntermNode
{ … };
class TIntermSwitch : public TIntermNode
{ … };
class TIntermCase : public TIntermNode
{ … };
enum class PreprocessorDirective
{ … };
class TIntermPreprocessorDirective final : public TIntermNode
{ … };
inline TIntermBlock *TIntermLoop::EnsureBody(TIntermBlock *body)
{ … }
}
#endif