#ifndef LLVM_CLANG_AST_DECLBASE_H
#define LLVM_CLANG_AST_DECLBASE_H
#include "clang/AST/ASTDumperUtils.h"
#include "clang/AST/AttrIterator.h"
#include "clang/AST/DeclID.h"
#include "clang/AST/DeclarationName.h"
#include "clang/AST/SelectorLocationsKind.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/iterator.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/VersionTuple.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <iterator>
#include <string>
#include <type_traits>
#include <utility>
namespace clang {
class ASTContext;
class ASTMutationListener;
class Attr;
class BlockDecl;
class DeclContext;
class ExternalSourceSymbolAttr;
class FunctionDecl;
class FunctionType;
class IdentifierInfo;
enum class Linkage : unsigned char;
class LinkageSpecDecl;
class Module;
class NamedDecl;
class ObjCContainerDecl;
class ObjCMethodDecl;
struct PrintingPolicy;
class RecordDecl;
class SourceManager;
class Stmt;
class StoredDeclsMap;
class TemplateDecl;
class TemplateParameterList;
class TranslationUnitDecl;
class UsingDirectiveDecl;
enum AvailabilityResult { … };
class alignas(8) Decl { … };
inline bool declaresSameEntity(const Decl *D1, const Decl *D2) { … }
class PrettyStackTraceDecl : public llvm::PrettyStackTraceEntry { … };
}
namespace llvm {
template <> struct PointerLikeTypeTraits<::clang::NamedDecl *> { … };
}
namespace clang {
class DeclListNode { … };
class DeclContextLookupResult { … };
enum class DeductionCandidate : unsigned char { … };
enum class RecordArgPassingKind;
enum class OMPDeclareReductionInitKind;
enum class ObjCImplementationControl;
enum class LinkageSpecLanguageIDs;
class DeclContext { … };
inline bool Decl::isTemplateParameter() const { … }
template <class ToTy,
bool IsKnownSubtype = ::std::is_base_of<DeclContext, ToTy>::value>
struct cast_convert_decl_context { … };
cast_convert_decl_context<ToTy, true>;
}
namespace llvm {
isa_impl<To, ::clang::DeclContext>;
cast_convert_val<ToTy, const ::clang::DeclContext, const ::clang::DeclContext>;
cast_convert_val<ToTy, ::clang::DeclContext, ::clang::DeclContext>;
cast_convert_val<ToTy, const ::clang::DeclContext *, const ::clang::DeclContext *>;
cast_convert_val<ToTy, ::clang::DeclContext *, ::clang::DeclContext *>;
cast_convert_val< ::clang::DeclContext, FromTy, FromTy>;
cast_convert_val< ::clang::DeclContext, FromTy *, FromTy *>;
cast_convert_val<const ::clang::DeclContext, FromTy, FromTy>;
cast_convert_val<const ::clang::DeclContext, FromTy *, FromTy *>;
}
#endif