clang: include/clang/Lex/HeaderSearchOptions.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9#ifndef LLVM_CLANG_LEX_HEADERSEARCHOPTIONS_H

10#define LLVM_CLANG_LEX_HEADERSEARCHOPTIONS_H

11

13#include "llvm/ADT/CachedHashString.h"

14#include "llvm/ADT/SetVector.h"

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

16#include "llvm/Support/HashBuilder.h"

17#include

18#include

19#include

20#include

21

23

24namespace frontend {

25

26

27

28

29

30

32

34

35

37

38

40

41

43

44

46

47

49

50

52

53

55

56

59

60}

61

62

63

65public:

69 LLVM_PREFERRED_TYPE(bool)

71

72

73

74

75 LLVM_PREFERRED_TYPE(bool)

77

78 Entry(StringRef path, frontend::IncludeDirGroup group, bool isFramework,

79 bool ignoreSysRoot)

82 };

83

85

87

88

89

91

94 };

95

96

97

99

100

102

103

105

106

107

109

110

112

113

115

116

118

119

121

122

124

125

126

127

128

129 LLVM_PREFERRED_TYPE(bool)

131

132

133

134 LLVM_PREFERRED_TYPE(bool)

136

137

138

139

140

141

142

143

144 LLVM_PREFERRED_TYPE(bool)

146

147

148

149

150

151 LLVM_PREFERRED_TYPE(bool)

153

154

155

156 LLVM_PREFERRED_TYPE(bool)

158

159

160

161

162

163

164

165

167

168

169

170

171

172

173

174

176

177

178

179

180

182

183

184

186

187

189

190

191 LLVM_PREFERRED_TYPE(bool)

193

194

195 LLVM_PREFERRED_TYPE(bool)

197

198

199 LLVM_PREFERRED_TYPE(bool)

201

202

203 LLVM_PREFERRED_TYPE(bool)

205

206

207 LLVM_PREFERRED_TYPE(bool)

209

210

211

212

213 LLVM_PREFERRED_TYPE(bool)

215

216

217 LLVM_PREFERRED_TYPE(bool)

219

220

221

222 LLVM_PREFERRED_TYPE(bool)

224

225

226 LLVM_PREFERRED_TYPE(bool)

228

229

230 LLVM_PREFERRED_TYPE(bool)

232

233 LLVM_PREFERRED_TYPE(bool)

235

236

237

238 LLVM_PREFERRED_TYPE(bool)

240

241

242

243 LLVM_PREFERRED_TYPE(bool)

245

246

247

248 LLVM_PREFERRED_TYPE(bool)

250

251

252 LLVM_PREFERRED_TYPE(bool)

254

255 LLVM_PREFERRED_TYPE(bool)

257

258

259 LLVM_PREFERRED_TYPE(bool)

261

262

263

264

265

266

267 LLVM_PREFERRED_TYPE(bool)

269

270

271 LLVM_PREFERRED_TYPE(bool)

273

274

275

276

277 LLVM_PREFERRED_TYPE(bool)

279

298

299

301 bool IsFramework, bool IgnoreSysRoot) {

302 UserEntries.emplace_back(Path, Group, IsFramework, IgnoreSysRoot);

303 }

304

305

306

307

310 }

311

314 }

315

318 }

319};

320

321template <typename HasherT, llvm::endianness Endianness>

322inline void addHash(llvm::HashBuilder<HasherT, Endianness> &HBuilder,

324 HBuilder.add(E.Path, E.Group, E.IsFramework, E.IgnoreSysRoot);

325}

326

327template <typename HasherT, llvm::endianness Endianness>

328inline void addHash(llvm::HashBuilder<HasherT, Endianness> &HBuilder,

331}

332

333}

334

335#endif

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

IncludeDirGroup

IncludeDirGroup - Identifies the group an include Entry belongs to, representing its relative positiv...

@ CXXSystem

Like System, but only used for C++.

@ Angled

Paths for '#include <>' added by '-I'.

@ CSystem

Like System, but only used for C.

@ System

Like Angled, but marks system directories.

@ Quoted

'#include ""' paths, added by 'gcc -iquote'.

@ ExternCSystem

Like System, but headers are implicitly wrapped in extern "C".

@ ObjCSystem

Like System, but only used for ObjC.

@ ObjCXXSystem

Like System, but only used for ObjC++.

@ After

Like System, but searched after the system directories.

The JSON file list parser is used to communicate input to InstallAPI.

void addHash(llvm::HashBuilder< HasherT, Endianness > &HBuilder, const HeaderSearchOptions::Entry &E)

Diagnostic wrappers for TextAPI types for error reporting.