//===-- DeclBase.h - Base Classes for representing declarations -*- 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 Decl and DeclContext interfaces.////===----------------------------------------------------------------------===//#ifndef LLVM_CLANG_AST_DECLBASE_H#define LLVM_CLANG_AST_DECLBASE_H#include"clang/AST/Attr.h"#include"clang/AST/Type.h"#include"clang/Basic/Specifiers.h"#include"llvm/Support/PrettyStackTrace.h"#include"llvm/ADT/PointerUnion.h"namespaceclang{classDeclContext;classTranslationUnitDecl;classNamespaceDecl;classUsingDirectiveDecl;classNamedDecl;classFunctionDecl;classCXXRecordDecl;classEnumDecl;classObjCMethodDecl;classObjCContainerDecl;classObjCInterfaceDecl;classObjCCategoryDecl;classObjCProtocolDecl;classObjCImplementationDecl;classObjCCategoryImplDecl;classObjCImplDecl;classLinkageSpecDecl;classBlockDecl;classDeclarationName;classCompoundStmt;classStoredDeclsMap;classDependentDiagnostic;classASTMutationListener;}namespacellvm{// DeclContext* is only 4-byte aligned on 32-bit systems.template<>classPointerLikeTypeTraits<clang::DeclContext*>{typedefclang::DeclContext*PT;public:staticinlinevoid*getAsVoidPointer(PTP){returnP;}staticinlinePTgetFromVoidPointer(void*P){returnstatic_cast<PT>(P);}enum{NumLowBitsAvailable