//===--- ASTContext.h - Context to hold long-lived AST nodes ----*- C++ -*-===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file defines the ASTContext interface.////===----------------------------------------------------------------------===//#ifndef LLVM_CLANG_AST_ASTCONTEXT_H#define LLVM_CLANG_AST_ASTCONTEXT_H#include"clang/Basic/IdentifierTable.h"#include"clang/Basic/LangOptions.h"#include"clang/Basic/OperatorKinds.h"#include"clang/AST/Attr.h"#include"clang/AST/Decl.h"#include"clang/AST/NestedNameSpecifier.h"#include"clang/AST/PrettyPrinter.h"#include"clang/AST/TemplateName.h"#include"clang/AST/Type.h"#include"clang/AST/CanonicalType.h"#include"llvm/ADT/DenseMap.h"#include"llvm/ADT/FoldingSet.h"#include"llvm/ADT/OwningPtr.h"#include"llvm/Support/Allocator.h"#include<vector>namespacellvm{structfltSemantics;}namespaceclang{classFileManager;classASTRecordLayout;classBlockExpr;classCharUnits;classExpr;classExternalASTSource;classIdentifierTable;classSelectorTable;classSourceManager;classTargetInfo;// DeclsclassCXXMethodDecl;classCXXRecordDecl;classDecl;classFieldDecl;classObjCIvarDecl;classObjCIvarRefExpr;classObjCPropertyDecl;classRecordDecl;classTagDecl;classTemplateTypeParmDecl;classTranslationUnitDecl;classTypeDecl;classTypedefDecl;classUsingDecl;classUsingShadowDecl;classUnresolvedSetIterator;namespaceBuiltin{classContext;}/// ASTContext - This class holds long-lived AST nodes (such as types and/// decls) that can be referred to throughout the semantic analysis of a file.classASTContext{std::vector<Type*>Types;llvm::FoldingSet<ExtQuals>ExtQualNodes;llvm::FoldingSet<ComplexType>ComplexTypes;llvm::FoldingSet<PointerType>PointerTypes;llvm::FoldingSet<BlockPointerType>BlockPointerTypes;llvm::FoldingSet<LValueReferenceType>LValueReferenceTypes;llvm::FoldingSet<RValueReferenceType>RValueReferenceTypes;llvm::FoldingSet<MemberPointerType>MemberPointerTypes;llvm::FoldingSet<ConstantArrayType>ConstantArrayTypes;llvm::FoldingSet<IncompleteArrayType>IncompleteArrayTypes;std::vector<VariableArrayType*>VariableArrayTypes;llvm::FoldingSet<DependentSizedArrayType>DependentSizedArrayTypes;llvm::FoldingSet<DependentSizedExtVectorType>DependentSizedExtVectorTypes;llvm::FoldingSet<VectorType>VectorTypes;llvm::FoldingSet<FunctionNoProtoType>FunctionNoProtoTypes;llvm::FoldingSet<FunctionProtoType>FunctionProtoTypes;llvm::FoldingSet<DependentTypeOfExprType>DependentTypeOfExpr