clang: include/clang/InstallAPI/HeaderFile.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_CLANG_INSTALLAPI_HEADERFILE_H

14#define LLVM_CLANG_INSTALLAPI_HEADERFILE_H

15

19#include "llvm/ADT/StringRef.h"

20#include "llvm/Support/ErrorHandling.h"

21#include "llvm/Support/Regex.h"

22#include

23#include

24

27

29

31

32

34

36};

37

39 switch (T) {

41 return "Public";

43 return "Private";

45 return "Project";

47 return "Unknown";

48 }

49 llvm_unreachable("unexpected header type");

50}

51

53

54 std::string FullPath;

55

57

58 std::string IncludeName;

59

60 std::optionalclang::Language Language;

61

62 bool Excluded{false};

63

64 bool Extra{false};

65

66 bool Umbrella{false};

67

68public:

71 StringRef IncludeName = StringRef(),

72 std::optionalclang::Language Language = std::nullopt)

73 : FullPath(FullPath), Type(Type), IncludeName(IncludeName),

75

77

80 StringRef getPath() const { return FullPath; }

81

85 bool isExtra() const { return Extra; }

88

91 }

92

94 return std::tie(Type, FullPath, IncludeName, Language, Excluded, Extra,

95 Umbrella) == std::tie(Other.Type, Other.FullPath,

99 }

100

102

103

104

105

106

108 return std::tie(Type, Umbrella) < std::tie(Other.Type, Other.Umbrella);

109

110 return std::tie(Type, Umbrella, Extra, FullPath) <

112 }

113};

114

115

117private:

118 std::string GlobString;

119 llvm::Regex Rule;

121 bool FoundMatch{false};

122

123public:

125

126

129

130

132

133

134

136

137

138 StringRef str() { return GlobString; }

139};

140

141

142

143

144

145

146

147

148

151

152

153

154

155

157

158

159

160

161

163 StringRef Directory);

164

165}

166

167#endif

Defines the clang::FileManager interface and associated types.

Implements support for file system lookup, file system caching, and directory search management.

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::vector< HeaderFile > HeaderSeq

@ 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.

Language

The language for the input, used to select and validate the language standard and possible actions.

const FunctionProtoType * T

@ Other

Other implicit parameter.