11 #include "clang/Basic/CharInfo.h"
12 #include "llvm/Support/Path.h"
19 SourceLocation
Loc,
const SourceManager &
SM,
21 SourceLocation ExpansionLoc = SM.getExpansionLoc(Loc);
22 StringRef FileExtension =
23 llvm::sys::path::extension(SM.getFilename(ExpansionLoc));
24 return HeaderFileExtensions.count(FileExtension.substr(1)) > 0;
28 SourceLocation
Loc, SourceManager &
SM,
30 PresumedLoc PresumedLocation = SM.getPresumedLoc(Loc);
31 StringRef FileExtension =
32 llvm::sys::path::extension(PresumedLocation.getFilename());
33 return HeaderFileExtensions.count(FileExtension.substr(1)) > 0;
37 SourceLocation
Loc, SourceManager &
SM,
39 SourceLocation SpellingLoc = SM.getSpellingLoc(Loc);
40 StringRef FileExtension =
41 llvm::sys::path::extension(SM.getFilename(SpellingLoc));
43 return HeaderFileExtensions.count(FileExtension.substr(1)) > 0;
49 SmallVector<StringRef, 5> Suffixes;
50 AllHeaderFileExtensions.split(Suffixes, delimiter);
51 HeaderFileExtensions.clear();
52 for (StringRef Suffix : Suffixes) {
53 StringRef Extension = Suffix.trim();
54 for (StringRef::const_iterator it = Extension.begin();
55 it != Extension.end(); ++it) {
56 if (!isAlphanumeric(*it))
59 HeaderFileExtensions.insert(Extension);
SourceLocation Loc
'#' location in the include directive
bool parseHeaderFileExtensions(StringRef AllHeaderFileExtensions, HeaderFileExtensionsSet &HeaderFileExtensions, char delimiter)
Parses header file extensions from a semicolon-separated list.
bool isSpellingLocInHeaderFile(SourceLocation Loc, SourceManager &SM, const HeaderFileExtensionsSet &HeaderFileExtensions)
Checks whether spelling location of Loc is in header file.
bool isPresumedLocInHeaderFile(SourceLocation Loc, SourceManager &SM, const HeaderFileExtensionsSet &HeaderFileExtensions)
Checks whether presumed location of Loc is in header file.
bool isExpansionLocInHeaderFile(SourceLocation Loc, const SourceManager &SM, const HeaderFileExtensionsSet &HeaderFileExtensions)
Checks whether expansion location of Loc is in header file.
llvm::SmallSet< llvm::StringRef, 5 > HeaderFileExtensionsSet