#include "clang-include-cleaner/Record.h"
#include "clang-include-cleaner/Types.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclGroup.h"
#include "clang/Basic/FileEntry.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/Specifiers.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Lex/DirectoryLookup.h"
#include "clang/Lex/MacroInfo.h"
#include "clang/Lex/PPCallbacks.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Tooling/Inclusions/HeaderAnalysis.h"
#include "clang/Tooling/Inclusions/StandardLibrary.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FileSystem/UniqueID.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/StringSaver.h"
#include <algorithm>
#include <assert.h>
#include <memory>
#include <optional>
#include <set>
#include <utility>
#include <vector>
namespace clang::include_cleaner {
namespace {
class PPRecorder : public PPCallbacks { … };
}
class PragmaIncludes::RecordPragma : public PPCallbacks, public CommentHandler { … };
void PragmaIncludes::record(const CompilerInstance &CI) { … }
void PragmaIncludes::record(Preprocessor &P) { … }
llvm::StringRef PragmaIncludes::getPublic(const FileEntry *F) const { … }
static llvm::SmallVector<FileEntryRef>
toFileEntries(llvm::ArrayRef<StringRef> FileNames, FileManager &FM) { … }
llvm::SmallVector<FileEntryRef>
PragmaIncludes::getExporters(const FileEntry *File, FileManager &FM) const { … }
llvm::SmallVector<FileEntryRef>
PragmaIncludes::getExporters(tooling::stdlib::Header StdHeader,
FileManager &FM) const { … }
bool PragmaIncludes::isSelfContained(const FileEntry *FE) const { … }
bool PragmaIncludes::isPrivate(const FileEntry *FE) const { … }
bool PragmaIncludes::shouldKeep(const FileEntry *FE) const { … }
namespace {
template <typename T> bool isImplicitTemplateSpecialization(const Decl *D) { … }
}
std::unique_ptr<ASTConsumer> RecordedAST::record() { … }
std::unique_ptr<PPCallbacks> RecordedPP::record(const Preprocessor &PP) { … }
}