10#include "llvm/TextAPI/Utils.h"
16 return llvm::Regex(
"/(.+)\\.framework/(.+)?Headers/(.+)");
21 std::string Pattern =
"/include/";
22 auto PathPrefix = FullPath.find(Pattern);
23 if (PathPrefix != StringRef::npos) {
24 PathPrefix += Pattern.size();
25 return FullPath.drop_front(PathPrefix).str();
32 if (Matches.size() != 4)
35 return Matches[1].drop_front(Matches[1].rfind(
'/') + 1).str() +
"/" +
40 return StringSwitch<bool>(sys::path::extension(
Path))
41 .Cases(
".h",
".H",
".hh",
".hpp",
".hxx",
true)
49 for (llvm::vfs::recursive_directory_iterator i(FS, Directory, EC), ie;
50 i != ie; i.increment(EC)) {
52 return errorCodeToError(EC);
55 if (FS.status(i->path()) == std::errc::no_such_file_or_directory)
58 StringRef
Path = i->path();
60 Files.emplace_back(
Path);
73 bool Match = Rule.match(Header.
getPath());
81 auto Rule = MachO::createRegexFromGlob(GlobString);
83 return Rule.takeError();
85 return std::make_unique<HeaderGlob>(GlobString, std::move(*Rule),
Type);
llvm::MachO::PathSeq PathSeq
Implements support for file system lookup, file system caching, and directory search management.
llvm::vfs::FileSystem & getVirtualFileSystem() const
The base class of the type hierarchy.
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.
std::optional< std::string > createIncludeHeaderName(const StringRef FullPath)
Assemble expected way header will be included by clients.
const Regex Rule("(.+)/(.+)\\.framework/")
bool isHeaderFile(StringRef Path)
Determine if Path is a header file.
Diagnostic wrappers for TextAPI types for error reporting.