13#ifndef LLVM_CLANG_INSTALLAPI_HEADERFILE_H
14#define LLVM_CLANG_INSTALLAPI_HEADERFILE_H
19#include "llvm/ADT/StringRef.h"
20#include "llvm/Support/ErrorHandling.h"
21#include "llvm/Support/Regex.h"
49 llvm_unreachable(
"unexpected header type");
58 std::string IncludeName;
60 std::optional<clang::Language> Language;
71 StringRef IncludeName = StringRef(),
72 std::optional<clang::Language> Language = std::nullopt)
73 : FullPath(FullPath), Type(Type), IncludeName(IncludeName),
80 StringRef
getPath()
const {
return FullPath; }
94 return std::tie(Type, FullPath, IncludeName, Language, Excluded, Extra,
95 Umbrella) == std::tie(
Other.Type,
Other.FullPath,
108 return std::tie(Type, Umbrella) < std::tie(
Other.Type,
Other.Umbrella);
110 return std::tie(Type, Umbrella, Extra, FullPath) <
118 std::string GlobString;
121 bool FoundMatch{
false};
138 StringRef
str() {
return GlobString; }
163 StringRef Directory);
Defines the clang::FileManager interface and associated types.
Implements support for file system lookup, file system caching, and directory search management.
The DirectoryScanner for collecting library files on the file system.
llvm::Expected< PathSeq > enumerateFiles(clang::FileManager &FM, StringRef Directory)
Given input directory, collect all header files.
@ Public
Represents declarations accessible to all clients.
@ Private
Represents declarations accessible to a disclosed set of clients.
@ Unknown
Unset or unknown type.
@ Project
Represents declarations only accessible as implementation details to the input library.
std::optional< std::string > createIncludeHeaderName(const StringRef FullPath)
Assemble expected way header will be included by clients.
StringRef getName(const HeaderType T)
bool isHeaderFile(StringRef Path)
Determine if Path is a header file.
std::vector< HeaderFile > HeaderSeq
const FunctionProtoType * T
@ Other
Other implicit parameter.