//===--- Sema.h - Semantic Analysis & AST Building --------------*- 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 Sema class, which performs semantic analysis and// builds ASTs.////===----------------------------------------------------------------------===//#ifndef LLVM_CLANG_AST_SEMA_H#define LLVM_CLANG_AST_SEMA_H#include"IdentifierResolver.h"#include"CXXFieldCollector.h"#include"SemaOverload.h"#include"clang/Parse/Action.h"#include"llvm/ADT/SmallVector.h"#include"llvm/ADT/DenseSet.h"#include"llvm/ADT/SmallPtrSet.h"#include"llvm/ADT/OwningPtr.h"#include<string>#include<vector>namespacellvm{classAPSInt;}namespaceclang{classASTContext;classASTConsumer;classPreprocessor;classDecl;classDeclContext;classDeclSpec;classNamedDecl;classScopedDecl;classExpr;classInitListExpr;classCallExpr;classVarDecl;classParmVarDecl;classTypedefDecl;classFunctionDecl;classQualType;structLangOptions;classToken;classIntegerLiteral;classStringLiteral;classArrayType;classLabelStmt;classSwitchStmt;classExtVectorType;classTypedefDecl;classObjCInterfaceDecl;classObjCCompatibleAliasDecl;classObjCProtocolDecl;classObjCImplementationDecl;classObjCCategoryImplDecl;classObjCCategoryDecl;classObjCIvarDecl;classObjCMethodDecl;classObjCPropertyDecl;structBlockSemaInfo;classBasePaths;/// PragmaPackStack - Simple class to wrap the stack used by #pragma/// pack.classPragmaPackStack{typedefstd::vector<std::pair<unsigned,std::string>>stack_ty;/// Alignment - The current user specified alignment.unsignedAlignment;/// Stack - Entries in the #pragma pack stack. stack_t