• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: Apache-2.0
2 
3 //! Rust bindings for `libclang`.
4 //!
5 //! ## [Documentation](https://docs.rs/clang-sys)
6 //!
7 //! Note that the documentation on https://docs.rs for this crate assumes usage
8 //! of the `runtime` Cargo feature as well as the Cargo feature for the latest
9 //! supported version of `libclang` (e.g., `clang_11_0`), neither of which are
10 //! enabled by default.
11 //!
12 //! Due to the usage of the `runtime` Cargo feature, this documentation will
13 //! contain some additional types and functions to manage a dynamically loaded
14 //! `libclang` instance at runtime.
15 //!
16 //! Due to the usage of the Cargo feature for the latest supported version of
17 //! `libclang`, this documentation will contain constants and functions that are
18 //! not available in the oldest supported version of `libclang` (3.5). All of
19 //! these types and functions have a documentation comment which specifies the
20 //! minimum `libclang` version required to use the item.
21 
22 #![allow(non_camel_case_types, non_snake_case, non_upper_case_globals)]
23 #![cfg_attr(feature = "cargo-clippy", allow(clippy::unreadable_literal))]
24 
25 extern crate glob;
26 extern crate libc;
27 #[cfg(feature = "runtime")]
28 extern crate libloading;
29 
30 pub mod support;
31 
32 #[macro_use]
33 mod link;
34 
35 use std::mem;
36 
37 use libc::*;
38 
39 pub type CXClientData = *mut c_void;
40 pub type CXCursorVisitor = extern "C" fn(CXCursor, CXCursor, CXClientData) -> CXChildVisitResult;
41 #[cfg(feature = "clang_3_7")]
42 pub type CXFieldVisitor = extern "C" fn(CXCursor, CXClientData) -> CXVisitorResult;
43 pub type CXInclusionVisitor = extern "C" fn(CXFile, *mut CXSourceLocation, c_uint, CXClientData);
44 
45 //================================================
46 // Macros
47 //================================================
48 
49 /// Defines a C enum as a series of constants.
50 macro_rules! cenum {
51     ($(#[$meta:meta])* enum $name:ident {
52         $($(#[$vmeta:meta])* const $variant:ident = $value:expr), +,
53     }) => (
54         pub type $name = c_int;
55 
56         $($(#[$vmeta])* pub const $variant: $name = $value;)+
57     );
58     ($(#[$meta:meta])* enum $name:ident {
59         $($(#[$vmeta:meta])* const $variant:ident = $value:expr); +;
60     }) => (
61         pub type $name = c_int;
62 
63         $($(#[$vmeta])* pub const $variant: $name = $value;)+
64     );
65 }
66 
67 /// Implements a zeroing implementation of `Default` for the supplied type.
68 macro_rules! default {
69     (#[$meta:meta] $ty:ty) => {
70         #[$meta]
71         impl Default for $ty {
72             fn default() -> $ty {
73                 unsafe { mem::zeroed() }
74             }
75         }
76     };
77 
78     ($ty:ty) => {
79         impl Default for $ty {
80             fn default() -> $ty {
81                 unsafe { mem::zeroed() }
82             }
83         }
84     };
85 }
86 
87 //================================================
88 // Enums
89 //================================================
90 
91 cenum! {
92     enum CXAvailabilityKind {
93         const CXAvailability_Available = 0,
94         const CXAvailability_Deprecated = 1,
95         const CXAvailability_NotAvailable = 2,
96         const CXAvailability_NotAccessible = 3,
97     }
98 }
99 
100 cenum! {
101     enum CXCallingConv {
102         const CXCallingConv_Default = 0,
103         const CXCallingConv_C = 1,
104         const CXCallingConv_X86StdCall = 2,
105         const CXCallingConv_X86FastCall = 3,
106         const CXCallingConv_X86ThisCall = 4,
107         const CXCallingConv_X86Pascal = 5,
108         const CXCallingConv_AAPCS = 6,
109         const CXCallingConv_AAPCS_VFP = 7,
110         /// Only produced by `libclang` 4.0 and later.
111         const CXCallingConv_X86RegCall = 8,
112         const CXCallingConv_IntelOclBicc = 9,
113         const CXCallingConv_Win64 = 10,
114         const CXCallingConv_X86_64Win64 = 10,
115         const CXCallingConv_X86_64SysV = 11,
116         /// Only produced by `libclang` 3.6 and later.
117         const CXCallingConv_X86VectorCall = 12,
118         /// Only produced by `libclang` 3.9 and later.
119         const CXCallingConv_Swift = 13,
120         /// Only produced by `libclang` 3.9 and later.
121         const CXCallingConv_PreserveMost = 14,
122         /// Only produced by `libclang` 3.9 and later.
123         const CXCallingConv_PreserveAll = 15,
124         /// Only produced by `libclang` 8.0 and later.
125         const CXCallingConv_AArch64VectorCall = 16,
126         const CXCallingConv_Invalid = 100,
127         const CXCallingConv_Unexposed = 200,
128         /// Only produced by `libclang` 13.0 and later.
129         const CXCallingConv_SwiftAsync = 17,
130         /// Only produced by `libclang` 15.0 and later.
131         const CXCallingConv_AArch64SVEPCS = 18,
132     }
133 }
134 
135 cenum! {
136     enum CXChildVisitResult {
137         const CXChildVisit_Break = 0,
138         const CXChildVisit_Continue = 1,
139         const CXChildVisit_Recurse = 2,
140     }
141 }
142 
143 cenum! {
144     enum CXCommentInlineCommandRenderKind {
145         const CXCommentInlineCommandRenderKind_Normal = 0,
146         const CXCommentInlineCommandRenderKind_Bold = 1,
147         const CXCommentInlineCommandRenderKind_Monospaced = 2,
148         const CXCommentInlineCommandRenderKind_Emphasized = 3,
149     }
150 }
151 
152 cenum! {
153     enum CXCommentKind {
154         const CXComment_Null = 0,
155         const CXComment_Text = 1,
156         const CXComment_InlineCommand = 2,
157         const CXComment_HTMLStartTag = 3,
158         const CXComment_HTMLEndTag = 4,
159         const CXComment_Paragraph = 5,
160         const CXComment_BlockCommand = 6,
161         const CXComment_ParamCommand = 7,
162         const CXComment_TParamCommand = 8,
163         const CXComment_VerbatimBlockCommand = 9,
164         const CXComment_VerbatimBlockLine = 10,
165         const CXComment_VerbatimLine = 11,
166         const CXComment_FullComment = 12,
167     }
168 }
169 
170 cenum! {
171     enum CXCommentParamPassDirection {
172         const CXCommentParamPassDirection_In = 0,
173         const CXCommentParamPassDirection_Out = 1,
174         const CXCommentParamPassDirection_InOut = 2,
175     }
176 }
177 
178 cenum! {
179     enum CXCompilationDatabase_Error {
180         const CXCompilationDatabase_NoError = 0,
181         const CXCompilationDatabase_CanNotLoadDatabase = 1,
182     }
183 }
184 
185 cenum! {
186     enum CXCompletionChunkKind {
187         const CXCompletionChunk_Optional = 0,
188         const CXCompletionChunk_TypedText = 1,
189         const CXCompletionChunk_Text = 2,
190         const CXCompletionChunk_Placeholder = 3,
191         const CXCompletionChunk_Informative = 4,
192         const CXCompletionChunk_CurrentParameter = 5,
193         const CXCompletionChunk_LeftParen = 6,
194         const CXCompletionChunk_RightParen = 7,
195         const CXCompletionChunk_LeftBracket = 8,
196         const CXCompletionChunk_RightBracket = 9,
197         const CXCompletionChunk_LeftBrace = 10,
198         const CXCompletionChunk_RightBrace = 11,
199         const CXCompletionChunk_LeftAngle = 12,
200         const CXCompletionChunk_RightAngle = 13,
201         const CXCompletionChunk_Comma = 14,
202         const CXCompletionChunk_ResultType = 15,
203         const CXCompletionChunk_Colon = 16,
204         const CXCompletionChunk_SemiColon = 17,
205         const CXCompletionChunk_Equal = 18,
206         const CXCompletionChunk_HorizontalSpace = 19,
207         const CXCompletionChunk_VerticalSpace = 20,
208     }
209 }
210 
211 cenum! {
212     enum CXCursorKind {
213         const CXCursor_UnexposedDecl = 1,
214         const CXCursor_StructDecl = 2,
215         const CXCursor_UnionDecl = 3,
216         const CXCursor_ClassDecl = 4,
217         const CXCursor_EnumDecl = 5,
218         const CXCursor_FieldDecl = 6,
219         const CXCursor_EnumConstantDecl = 7,
220         const CXCursor_FunctionDecl = 8,
221         const CXCursor_VarDecl = 9,
222         const CXCursor_ParmDecl = 10,
223         const CXCursor_ObjCInterfaceDecl = 11,
224         const CXCursor_ObjCCategoryDecl = 12,
225         const CXCursor_ObjCProtocolDecl = 13,
226         const CXCursor_ObjCPropertyDecl = 14,
227         const CXCursor_ObjCIvarDecl = 15,
228         const CXCursor_ObjCInstanceMethodDecl = 16,
229         const CXCursor_ObjCClassMethodDecl = 17,
230         const CXCursor_ObjCImplementationDecl = 18,
231         const CXCursor_ObjCCategoryImplDecl = 19,
232         const CXCursor_TypedefDecl = 20,
233         const CXCursor_CXXMethod = 21,
234         const CXCursor_Namespace = 22,
235         const CXCursor_LinkageSpec = 23,
236         const CXCursor_Constructor = 24,
237         const CXCursor_Destructor = 25,
238         const CXCursor_ConversionFunction = 26,
239         const CXCursor_TemplateTypeParameter = 27,
240         const CXCursor_NonTypeTemplateParameter = 28,
241         const CXCursor_TemplateTemplateParameter = 29,
242         const CXCursor_FunctionTemplate = 30,
243         const CXCursor_ClassTemplate = 31,
244         const CXCursor_ClassTemplatePartialSpecialization = 32,
245         const CXCursor_NamespaceAlias = 33,
246         const CXCursor_UsingDirective = 34,
247         const CXCursor_UsingDeclaration = 35,
248         const CXCursor_TypeAliasDecl = 36,
249         const CXCursor_ObjCSynthesizeDecl = 37,
250         const CXCursor_ObjCDynamicDecl = 38,
251         const CXCursor_CXXAccessSpecifier = 39,
252         const CXCursor_ObjCSuperClassRef = 40,
253         const CXCursor_ObjCProtocolRef = 41,
254         const CXCursor_ObjCClassRef = 42,
255         const CXCursor_TypeRef = 43,
256         const CXCursor_CXXBaseSpecifier = 44,
257         const CXCursor_TemplateRef = 45,
258         const CXCursor_NamespaceRef = 46,
259         const CXCursor_MemberRef = 47,
260         const CXCursor_LabelRef = 48,
261         const CXCursor_OverloadedDeclRef = 49,
262         const CXCursor_VariableRef = 50,
263         const CXCursor_InvalidFile = 70,
264         const CXCursor_NoDeclFound = 71,
265         const CXCursor_NotImplemented = 72,
266         const CXCursor_InvalidCode = 73,
267         const CXCursor_UnexposedExpr = 100,
268         const CXCursor_DeclRefExpr = 101,
269         const CXCursor_MemberRefExpr = 102,
270         const CXCursor_CallExpr = 103,
271         const CXCursor_ObjCMessageExpr = 104,
272         const CXCursor_BlockExpr = 105,
273         const CXCursor_IntegerLiteral = 106,
274         const CXCursor_FloatingLiteral = 107,
275         const CXCursor_ImaginaryLiteral = 108,
276         const CXCursor_StringLiteral = 109,
277         const CXCursor_CharacterLiteral = 110,
278         const CXCursor_ParenExpr = 111,
279         const CXCursor_UnaryOperator = 112,
280         const CXCursor_ArraySubscriptExpr = 113,
281         const CXCursor_BinaryOperator = 114,
282         const CXCursor_CompoundAssignOperator = 115,
283         const CXCursor_ConditionalOperator = 116,
284         const CXCursor_CStyleCastExpr = 117,
285         const CXCursor_CompoundLiteralExpr = 118,
286         const CXCursor_InitListExpr = 119,
287         const CXCursor_AddrLabelExpr = 120,
288         const CXCursor_StmtExpr = 121,
289         const CXCursor_GenericSelectionExpr = 122,
290         const CXCursor_GNUNullExpr = 123,
291         const CXCursor_CXXStaticCastExpr = 124,
292         const CXCursor_CXXDynamicCastExpr = 125,
293         const CXCursor_CXXReinterpretCastExpr = 126,
294         const CXCursor_CXXConstCastExpr = 127,
295         const CXCursor_CXXFunctionalCastExpr = 128,
296         const CXCursor_CXXTypeidExpr = 129,
297         const CXCursor_CXXBoolLiteralExpr = 130,
298         const CXCursor_CXXNullPtrLiteralExpr = 131,
299         const CXCursor_CXXThisExpr = 132,
300         const CXCursor_CXXThrowExpr = 133,
301         const CXCursor_CXXNewExpr = 134,
302         const CXCursor_CXXDeleteExpr = 135,
303         const CXCursor_UnaryExpr = 136,
304         const CXCursor_ObjCStringLiteral = 137,
305         const CXCursor_ObjCEncodeExpr = 138,
306         const CXCursor_ObjCSelectorExpr = 139,
307         const CXCursor_ObjCProtocolExpr = 140,
308         const CXCursor_ObjCBridgedCastExpr = 141,
309         const CXCursor_PackExpansionExpr = 142,
310         const CXCursor_SizeOfPackExpr = 143,
311         const CXCursor_LambdaExpr = 144,
312         const CXCursor_ObjCBoolLiteralExpr = 145,
313         const CXCursor_ObjCSelfExpr = 146,
314         /// Only produced by `libclang` 3.8 and later.
315         const CXCursor_OMPArraySectionExpr = 147,
316         /// Only produced by `libclang` 3.9 and later.
317         const CXCursor_ObjCAvailabilityCheckExpr = 148,
318         /// Only produced by `libclang` 7.0 and later.
319         const CXCursor_FixedPointLiteral = 149,
320         /// Only produced by `libclang` 12.0 and later.
321         const CXCursor_OMPArrayShapingExpr = 150,
322         /// Only produced by `libclang` 12.0 and later.
323         const CXCursor_OMPIteratorExpr = 151,
324         /// Only produced by `libclang` 12.0 and later.
325         const CXCursor_CXXAddrspaceCastExpr = 152,
326         /// Only produced by `libclang` 15.0 and later.
327         const CXCursor_ConceptSpecializationExpr = 153,
328         /// Only produced by `libclang` 15.0 and later.
329         const CXCursor_RequiresExpr = 154,
330         const CXCursor_UnexposedStmt = 200,
331         const CXCursor_LabelStmt = 201,
332         const CXCursor_CompoundStmt = 202,
333         const CXCursor_CaseStmt = 203,
334         const CXCursor_DefaultStmt = 204,
335         const CXCursor_IfStmt = 205,
336         const CXCursor_SwitchStmt = 206,
337         const CXCursor_WhileStmt = 207,
338         const CXCursor_DoStmt = 208,
339         const CXCursor_ForStmt = 209,
340         const CXCursor_GotoStmt = 210,
341         const CXCursor_IndirectGotoStmt = 211,
342         const CXCursor_ContinueStmt = 212,
343         const CXCursor_BreakStmt = 213,
344         const CXCursor_ReturnStmt = 214,
345         /// Duplicate of `CXCursor_GccAsmStmt`.
346         const CXCursor_AsmStmt = 215,
347         const CXCursor_ObjCAtTryStmt = 216,
348         const CXCursor_ObjCAtCatchStmt = 217,
349         const CXCursor_ObjCAtFinallyStmt = 218,
350         const CXCursor_ObjCAtThrowStmt = 219,
351         const CXCursor_ObjCAtSynchronizedStmt = 220,
352         const CXCursor_ObjCAutoreleasePoolStmt = 221,
353         const CXCursor_ObjCForCollectionStmt = 222,
354         const CXCursor_CXXCatchStmt = 223,
355         const CXCursor_CXXTryStmt = 224,
356         const CXCursor_CXXForRangeStmt = 225,
357         const CXCursor_SEHTryStmt = 226,
358         const CXCursor_SEHExceptStmt = 227,
359         const CXCursor_SEHFinallyStmt = 228,
360         const CXCursor_MSAsmStmt = 229,
361         const CXCursor_NullStmt = 230,
362         const CXCursor_DeclStmt = 231,
363         const CXCursor_OMPParallelDirective = 232,
364         const CXCursor_OMPSimdDirective = 233,
365         const CXCursor_OMPForDirective = 234,
366         const CXCursor_OMPSectionsDirective = 235,
367         const CXCursor_OMPSectionDirective = 236,
368         const CXCursor_OMPSingleDirective = 237,
369         const CXCursor_OMPParallelForDirective = 238,
370         const CXCursor_OMPParallelSectionsDirective = 239,
371         const CXCursor_OMPTaskDirective = 240,
372         const CXCursor_OMPMasterDirective = 241,
373         const CXCursor_OMPCriticalDirective = 242,
374         const CXCursor_OMPTaskyieldDirective = 243,
375         const CXCursor_OMPBarrierDirective = 244,
376         const CXCursor_OMPTaskwaitDirective = 245,
377         const CXCursor_OMPFlushDirective = 246,
378         const CXCursor_SEHLeaveStmt = 247,
379         /// Only produced by `libclang` 3.6 and later.
380         const CXCursor_OMPOrderedDirective = 248,
381         /// Only produced by `libclang` 3.6 and later.
382         const CXCursor_OMPAtomicDirective = 249,
383         /// Only produced by `libclang` 3.6 and later.
384         const CXCursor_OMPForSimdDirective = 250,
385         /// Only produced by `libclang` 3.6 and later.
386         const CXCursor_OMPParallelForSimdDirective = 251,
387         /// Only produced by `libclang` 3.6 and later.
388         const CXCursor_OMPTargetDirective = 252,
389         /// Only produced by `libclang` 3.6 and later.
390         const CXCursor_OMPTeamsDirective = 253,
391         /// Only produced by `libclang` 3.7 and later.
392         const CXCursor_OMPTaskgroupDirective = 254,
393         /// Only produced by `libclang` 3.7 and later.
394         const CXCursor_OMPCancellationPointDirective = 255,
395         /// Only produced by `libclang` 3.7 and later.
396         const CXCursor_OMPCancelDirective = 256,
397         /// Only produced by `libclang` 3.8 and later.
398         const CXCursor_OMPTargetDataDirective = 257,
399         /// Only produced by `libclang` 3.8 and later.
400         const CXCursor_OMPTaskLoopDirective = 258,
401         /// Only produced by `libclang` 3.8 and later.
402         const CXCursor_OMPTaskLoopSimdDirective = 259,
403         /// Only produced by `libclang` 3.8 and later.
404         const CXCursor_OMPDistributeDirective = 260,
405         /// Only produced by `libclang` 3.9 and later.
406         const CXCursor_OMPTargetEnterDataDirective = 261,
407         /// Only produced by `libclang` 3.9 and later.
408         const CXCursor_OMPTargetExitDataDirective = 262,
409         /// Only produced by `libclang` 3.9 and later.
410         const CXCursor_OMPTargetParallelDirective = 263,
411         /// Only produced by `libclang` 3.9 and later.
412         const CXCursor_OMPTargetParallelForDirective = 264,
413         /// Only produced by `libclang` 3.9 and later.
414         const CXCursor_OMPTargetUpdateDirective = 265,
415         /// Only produced by `libclang` 3.9 and later.
416         const CXCursor_OMPDistributeParallelForDirective = 266,
417         /// Only produced by `libclang` 3.9 and later.
418         const CXCursor_OMPDistributeParallelForSimdDirective = 267,
419         /// Only produced by `libclang` 3.9 and later.
420         const CXCursor_OMPDistributeSimdDirective = 268,
421         /// Only produced by `libclang` 3.9 and later.
422         const CXCursor_OMPTargetParallelForSimdDirective = 269,
423         /// Only produced by `libclang` 4.0 and later.
424         const CXCursor_OMPTargetSimdDirective = 270,
425         /// Only produced by `libclang` 4.0 and later.
426         const CXCursor_OMPTeamsDistributeDirective = 271,
427         /// Only produced by `libclang` 4.0 and later.
428         const CXCursor_OMPTeamsDistributeSimdDirective = 272,
429         /// Only produced by `libclang` 4.0 and later.
430         const CXCursor_OMPTeamsDistributeParallelForSimdDirective = 273,
431         /// Only produced by `libclang` 4.0 and later.
432         const CXCursor_OMPTeamsDistributeParallelForDirective = 274,
433         /// Only produced by `libclang` 4.0 and later.
434         const CXCursor_OMPTargetTeamsDirective = 275,
435         /// Only produced by `libclang` 4.0 and later.
436         const CXCursor_OMPTargetTeamsDistributeDirective = 276,
437         /// Only produced by `libclang` 4.0 and later.
438         const CXCursor_OMPTargetTeamsDistributeParallelForDirective = 277,
439         /// Only produced by `libclang` 4.0 and later.
440         const CXCursor_OMPTargetTeamsDistributeParallelForSimdDirective = 278,
441         /// Only producer by `libclang` 4.0 and later.
442         const CXCursor_OMPTargetTeamsDistributeSimdDirective = 279,
443         /// Only produced by 'libclang' 9.0 and later.
444         const CXCursor_BuiltinBitCastExpr = 280,
445         /// Only produced by `libclang` 10.0 and later.
446         const CXCursor_OMPMasterTaskLoopDirective = 281,
447         /// Only produced by `libclang` 10.0 and later.
448         const CXCursor_OMPParallelMasterTaskLoopDirective = 282,
449         /// Only produced by `libclang` 10.0 and later.
450         const CXCursor_OMPMasterTaskLoopSimdDirective = 283,
451         /// Only produced by `libclang` 10.0 and later.
452         const CXCursor_OMPParallelMasterTaskLoopSimdDirective = 284,
453         /// Only produced by `libclang` 10.0 and later.
454         const CXCursor_OMPParallelMasterDirective = 285,
455         /// Only produced by `libclang` 11.0 and later.
456         const CXCursor_OMPDepobjDirective = 286,
457         /// Only produced by `libclang` 11.0 and later.
458         const CXCursor_OMPScanDirective = 287,
459         /// Only produced by `libclang` 13.0 and later.
460         const CXCursor_OMPTileDirective = 288,
461         /// Only produced by `libclang` 13.0 and later.
462         const CXCursor_OMPCanonicalLoop = 289,
463         /// Only produced by `libclang` 13.0 and later.
464         const CXCursor_OMPInteropDirective = 290,
465         /// Only produced by `libclang` 13.0 and later.
466         const CXCursor_OMPDispatchDirective = 291,
467         /// Only produced by `libclang` 13.0 and later.
468         const CXCursor_OMPMaskedDirective = 292,
469         /// Only produced by `libclang` 13.0 and later.
470         const CXCursor_OMPUnrollDirective = 293,
471         /// Only produced by `libclang` 14.0 and later.
472         const CXCursor_OMPMetaDirective = 294,
473         /// Only produced by `libclang` 14.0 and later.
474         const CXCursor_OMPGenericLoopDirective = 295,
475         /// Only produced by `libclang` 15.0 and later.
476         const CXCursor_OMPTeamsGenericLoopDirective = 296,
477         /// Only produced by `libclang` 15.0 and later.
478         const CXCursor_OMPTargetTeamsGenericLoopDirective = 297,
479         /// Only produced by `libclang` 15.0 and later.
480         const CXCursor_OMPParallelGenericLoopDirective = 298,
481         /// Only produced by `libclang` 15.0 and later.
482         const CXCursor_OMPTargetParallelGenericLoopDirective = 299,
483         /// Only produced by `libclang` 15.0 and later.
484         const CXCursor_OMPParallelMaskedDirective = 300,
485         /// Only produced by `libclang` 15.0 and later.
486         const CXCursor_OMPMaskedTaskLoopDirective = 301,
487         /// Only produced by `libclang` 15.0 and later.
488         const CXCursor_OMPMaskedTaskLoopSimdDirective = 302,
489         /// Only produced by `libclang` 15.0 and later.
490         const CXCursor_OMPParallelMaskedTaskLoopDirective = 303,
491         /// Only produced by `libclang` 15.0 and later.
492         const CXCursor_OMPParallelMaskedTaskLoopSimdDirective = 304,
493         #[cfg(not(feature="clang_15_0"))]
494         const CXCursor_TranslationUnit = 300,
495         #[cfg(feature="clang_15_0")]
496         const CXCursor_TranslationUnit = 350,
497         const CXCursor_UnexposedAttr = 400,
498         const CXCursor_IBActionAttr = 401,
499         const CXCursor_IBOutletAttr = 402,
500         const CXCursor_IBOutletCollectionAttr = 403,
501         const CXCursor_CXXFinalAttr = 404,
502         const CXCursor_CXXOverrideAttr = 405,
503         const CXCursor_AnnotateAttr = 406,
504         const CXCursor_AsmLabelAttr = 407,
505         const CXCursor_PackedAttr = 408,
506         const CXCursor_PureAttr = 409,
507         const CXCursor_ConstAttr = 410,
508         const CXCursor_NoDuplicateAttr = 411,
509         const CXCursor_CUDAConstantAttr = 412,
510         const CXCursor_CUDADeviceAttr = 413,
511         const CXCursor_CUDAGlobalAttr = 414,
512         const CXCursor_CUDAHostAttr = 415,
513         /// Only produced by `libclang` 3.6 and later.
514         const CXCursor_CUDASharedAttr = 416,
515         /// Only produced by `libclang` 3.8 and later.
516         const CXCursor_VisibilityAttr = 417,
517         /// Only produced by `libclang` 3.8 and later.
518         const CXCursor_DLLExport = 418,
519         /// Only produced by `libclang` 3.8 and later.
520         const CXCursor_DLLImport = 419,
521         /// Only produced by `libclang` 8.0 and later.
522         const CXCursor_NSReturnsRetained = 420,
523         /// Only produced by `libclang` 8.0 and later.
524         const CXCursor_NSReturnsNotRetained = 421,
525         /// Only produced by `libclang` 8.0 and later.
526         const CXCursor_NSReturnsAutoreleased = 422,
527         /// Only produced by `libclang` 8.0 and later.
528         const CXCursor_NSConsumesSelf = 423,
529         /// Only produced by `libclang` 8.0 and later.
530         const CXCursor_NSConsumed = 424,
531         /// Only produced by `libclang` 8.0 and later.
532         const CXCursor_ObjCException = 425,
533         /// Only produced by `libclang` 8.0 and later.
534         const CXCursor_ObjCNSObject = 426,
535         /// Only produced by `libclang` 8.0 and later.
536         const CXCursor_ObjCIndependentClass = 427,
537         /// Only produced by `libclang` 8.0 and later.
538         const CXCursor_ObjCPreciseLifetime = 428,
539         /// Only produced by `libclang` 8.0 and later.
540         const CXCursor_ObjCReturnsInnerPointer = 429,
541         /// Only produced by `libclang` 8.0 and later.
542         const CXCursor_ObjCRequiresSuper = 430,
543         /// Only produced by `libclang` 8.0 and later.
544         const CXCursor_ObjCRootClass = 431,
545         /// Only produced by `libclang` 8.0 and later.
546         const CXCursor_ObjCSubclassingRestricted = 432,
547         /// Only produced by `libclang` 8.0 and later.
548         const CXCursor_ObjCExplicitProtocolImpl = 433,
549         /// Only produced by `libclang` 8.0 and later.
550         const CXCursor_ObjCDesignatedInitializer = 434,
551         /// Only produced by `libclang` 8.0 and later.
552         const CXCursor_ObjCRuntimeVisible = 435,
553         /// Only produced by `libclang` 8.0 and later.
554         const CXCursor_ObjCBoxable = 436,
555         /// Only produced by `libclang` 8.0 and later.
556         const CXCursor_FlagEnum = 437,
557         /// Only produced by `libclang` 9.0 and later.
558         const CXCursor_ConvergentAttr  = 438,
559         /// Only produced by `libclang` 9.0 and later.
560         const CXCursor_WarnUnusedAttr = 439,
561         /// Only produced by `libclang` 9.0 and later.
562         const CXCursor_WarnUnusedResultAttr = 440,
563         /// Only produced by `libclang` 9.0 and later.
564         const CXCursor_AlignedAttr = 441,
565         const CXCursor_PreprocessingDirective = 500,
566         const CXCursor_MacroDefinition = 501,
567         /// Duplicate of `CXCursor_MacroInstantiation`.
568         const CXCursor_MacroExpansion = 502,
569         const CXCursor_InclusionDirective = 503,
570         const CXCursor_ModuleImportDecl = 600,
571         /// Only produced by `libclang` 3.8 and later.
572         const CXCursor_TypeAliasTemplateDecl = 601,
573         /// Only produced by `libclang` 3.9 and later.
574         const CXCursor_StaticAssert = 602,
575         /// Only produced by `libclang` 4.0 and later.
576         const CXCursor_FriendDecl = 603,
577         /// Only produced by `libclang` 15.0 and later.
578         const CXCursor_ConceptDecl = 604,
579         /// Only produced by `libclang` 3.7 and later.
580         const CXCursor_OverloadCandidate = 700,
581     }
582 }
583 
584 cenum! {
585     /// Only available on `libclang` 5.0 and later.
586     #[cfg(feature = "clang_5_0")]
587     enum CXCursor_ExceptionSpecificationKind {
588         const CXCursor_ExceptionSpecificationKind_None = 0,
589         const CXCursor_ExceptionSpecificationKind_DynamicNone = 1,
590         const CXCursor_ExceptionSpecificationKind_Dynamic = 2,
591         const CXCursor_ExceptionSpecificationKind_MSAny = 3,
592         const CXCursor_ExceptionSpecificationKind_BasicNoexcept = 4,
593         const CXCursor_ExceptionSpecificationKind_ComputedNoexcept = 5,
594         const CXCursor_ExceptionSpecificationKind_Unevaluated = 6,
595         const CXCursor_ExceptionSpecificationKind_Uninstantiated = 7,
596         const CXCursor_ExceptionSpecificationKind_Unparsed = 8,
597         /// Only available on `libclang` 9.0 and later.
598         #[cfg(feature = "clang_9_0")]
599         const CXCursor_ExceptionSpecificationKind_NoThrow = 9,
600     }
601 }
602 
603 cenum! {
604     enum CXDiagnosticSeverity {
605         const CXDiagnostic_Ignored = 0,
606         const CXDiagnostic_Note = 1,
607         const CXDiagnostic_Warning = 2,
608         const CXDiagnostic_Error = 3,
609         const CXDiagnostic_Fatal = 4,
610     }
611 }
612 
613 cenum! {
614     enum CXErrorCode {
615         const CXError_Success = 0,
616         const CXError_Failure = 1,
617         const CXError_Crashed = 2,
618         const CXError_InvalidArguments = 3,
619         const CXError_ASTReadError = 4,
620     }
621 }
622 
623 cenum! {
624     enum CXEvalResultKind {
625         const CXEval_UnExposed = 0,
626         const CXEval_Int = 1 ,
627         const CXEval_Float = 2,
628         const CXEval_ObjCStrLiteral = 3,
629         const CXEval_StrLiteral = 4,
630         const CXEval_CFStr = 5,
631         const CXEval_Other = 6,
632     }
633 }
634 
635 cenum! {
636     enum CXIdxAttrKind {
637         const CXIdxAttr_Unexposed = 0,
638         const CXIdxAttr_IBAction = 1,
639         const CXIdxAttr_IBOutlet = 2,
640         const CXIdxAttr_IBOutletCollection = 3,
641     }
642 }
643 
644 cenum! {
645     enum CXIdxEntityCXXTemplateKind {
646         const CXIdxEntity_NonTemplate = 0,
647         const CXIdxEntity_Template = 1,
648         const CXIdxEntity_TemplatePartialSpecialization = 2,
649         const CXIdxEntity_TemplateSpecialization = 3,
650     }
651 }
652 
653 cenum! {
654     enum CXIdxEntityKind {
655         const CXIdxEntity_Unexposed = 0,
656         const CXIdxEntity_Typedef = 1,
657         const CXIdxEntity_Function = 2,
658         const CXIdxEntity_Variable = 3,
659         const CXIdxEntity_Field = 4,
660         const CXIdxEntity_EnumConstant = 5,
661         const CXIdxEntity_ObjCClass = 6,
662         const CXIdxEntity_ObjCProtocol = 7,
663         const CXIdxEntity_ObjCCategory = 8,
664         const CXIdxEntity_ObjCInstanceMethod = 9,
665         const CXIdxEntity_ObjCClassMethod = 10,
666         const CXIdxEntity_ObjCProperty = 11,
667         const CXIdxEntity_ObjCIvar = 12,
668         const CXIdxEntity_Enum = 13,
669         const CXIdxEntity_Struct = 14,
670         const CXIdxEntity_Union = 15,
671         const CXIdxEntity_CXXClass = 16,
672         const CXIdxEntity_CXXNamespace = 17,
673         const CXIdxEntity_CXXNamespaceAlias = 18,
674         const CXIdxEntity_CXXStaticVariable = 19,
675         const CXIdxEntity_CXXStaticMethod = 20,
676         const CXIdxEntity_CXXInstanceMethod = 21,
677         const CXIdxEntity_CXXConstructor = 22,
678         const CXIdxEntity_CXXDestructor = 23,
679         const CXIdxEntity_CXXConversionFunction = 24,
680         const CXIdxEntity_CXXTypeAlias = 25,
681         const CXIdxEntity_CXXInterface = 26,
682         /// Only produced by `libclang` 15.0 and later.
683         const CXIdxEntity_CXXConcept = 27,
684     }
685 }
686 
687 cenum! {
688     enum CXIdxEntityLanguage {
689         const CXIdxEntityLang_None = 0,
690         const CXIdxEntityLang_C = 1,
691         const CXIdxEntityLang_ObjC = 2,
692         const CXIdxEntityLang_CXX = 3,
693         /// Only produced by `libclang` 5.0 and later.
694         const CXIdxEntityLang_Swift = 4,
695     }
696 }
697 
698 cenum! {
699     enum CXIdxEntityRefKind {
700         const CXIdxEntityRef_Direct = 1,
701         const CXIdxEntityRef_Implicit = 2,
702     }
703 }
704 
705 cenum! {
706     enum CXIdxObjCContainerKind {
707         const CXIdxObjCContainer_ForwardRef = 0,
708         const CXIdxObjCContainer_Interface = 1,
709         const CXIdxObjCContainer_Implementation = 2,
710     }
711 }
712 
713 cenum! {
714     enum CXLanguageKind {
715         const CXLanguage_Invalid = 0,
716         const CXLanguage_C = 1,
717         const CXLanguage_ObjC = 2,
718         const CXLanguage_CPlusPlus = 3,
719     }
720 }
721 
722 cenum! {
723     enum CXLinkageKind {
724         const CXLinkage_Invalid = 0,
725         const CXLinkage_NoLinkage = 1,
726         const CXLinkage_Internal = 2,
727         const CXLinkage_UniqueExternal = 3,
728         const CXLinkage_External = 4,
729     }
730 }
731 
732 cenum! {
733     enum CXLoadDiag_Error {
734         const CXLoadDiag_None = 0,
735         const CXLoadDiag_Unknown = 1,
736         const CXLoadDiag_CannotLoad = 2,
737         const CXLoadDiag_InvalidFile = 3,
738     }
739 }
740 
741 cenum! {
742     /// Only available on `libclang` 7.0 and later.
743     #[cfg(feature = "clang_7_0")]
744     enum CXPrintingPolicyProperty {
745         const CXPrintingPolicy_Indentation = 0,
746         const CXPrintingPolicy_SuppressSpecifiers = 1,
747         const CXPrintingPolicy_SuppressTagKeyword = 2,
748         const CXPrintingPolicy_IncludeTagDefinition = 3,
749         const CXPrintingPolicy_SuppressScope = 4,
750         const CXPrintingPolicy_SuppressUnwrittenScope = 5,
751         const CXPrintingPolicy_SuppressInitializers = 6,
752         const CXPrintingPolicy_ConstantArraySizeAsWritten = 7,
753         const CXPrintingPolicy_AnonymousTagLocations = 8,
754         const CXPrintingPolicy_SuppressStrongLifetime = 9,
755         const CXPrintingPolicy_SuppressLifetimeQualifiers = 10,
756         const CXPrintingPolicy_SuppressTemplateArgsInCXXConstructors = 11,
757         const CXPrintingPolicy_Bool = 12,
758         const CXPrintingPolicy_Restrict = 13,
759         const CXPrintingPolicy_Alignof = 14,
760         const CXPrintingPolicy_UnderscoreAlignof = 15,
761         const CXPrintingPolicy_UseVoidForZeroParams = 16,
762         const CXPrintingPolicy_TerseOutput = 17,
763         const CXPrintingPolicy_PolishForDeclaration = 18,
764         const CXPrintingPolicy_Half = 19,
765         const CXPrintingPolicy_MSWChar = 20,
766         const CXPrintingPolicy_IncludeNewlines = 21,
767         const CXPrintingPolicy_MSVCFormatting = 22,
768         const CXPrintingPolicy_ConstantsAsWritten = 23,
769         const CXPrintingPolicy_SuppressImplicitBase = 24,
770         const CXPrintingPolicy_FullyQualifiedName = 25,
771     }
772 }
773 
774 cenum! {
775     enum CXRefQualifierKind {
776         const CXRefQualifier_None = 0,
777         const CXRefQualifier_LValue = 1,
778         const CXRefQualifier_RValue = 2,
779     }
780 }
781 
782 cenum! {
783     enum CXResult {
784         const CXResult_Success = 0,
785         const CXResult_Invalid = 1,
786         const CXResult_VisitBreak = 2,
787     }
788 }
789 
790 cenum! {
791     enum CXSaveError {
792         const CXSaveError_None = 0,
793         const CXSaveError_Unknown = 1,
794         const CXSaveError_TranslationErrors = 2,
795         const CXSaveError_InvalidTU = 3,
796     }
797 }
798 
799 cenum! {
800     /// Only available on `libclang` 6.0 and later.
801     #[cfg(feature = "clang_6_0")]
802     enum CXTLSKind {
803         const CXTLS_None = 0,
804         const CXTLS_Dynamic = 1,
805         const CXTLS_Static = 2,
806     }
807 }
808 
809 cenum! {
810     enum CXTUResourceUsageKind {
811         const CXTUResourceUsage_AST = 1,
812         const CXTUResourceUsage_Identifiers = 2,
813         const CXTUResourceUsage_Selectors = 3,
814         const CXTUResourceUsage_GlobalCompletionResults = 4,
815         const CXTUResourceUsage_SourceManagerContentCache = 5,
816         const CXTUResourceUsage_AST_SideTables = 6,
817         const CXTUResourceUsage_SourceManager_Membuffer_Malloc = 7,
818         const CXTUResourceUsage_SourceManager_Membuffer_MMap = 8,
819         const CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9,
820         const CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10,
821         const CXTUResourceUsage_Preprocessor = 11,
822         const CXTUResourceUsage_PreprocessingRecord = 12,
823         const CXTUResourceUsage_SourceManager_DataStructures = 13,
824         const CXTUResourceUsage_Preprocessor_HeaderSearch = 14,
825     }
826 }
827 
828 cenum! {
829     /// Only available on `libclang` 3.6 and later.
830     #[cfg(feature = "clang_3_6")]
831     enum CXTemplateArgumentKind {
832         const CXTemplateArgumentKind_Null = 0,
833         const CXTemplateArgumentKind_Type = 1,
834         const CXTemplateArgumentKind_Declaration = 2,
835         const CXTemplateArgumentKind_NullPtr = 3,
836         const CXTemplateArgumentKind_Integral = 4,
837         const CXTemplateArgumentKind_Template = 5,
838         const CXTemplateArgumentKind_TemplateExpansion = 6,
839         const CXTemplateArgumentKind_Expression = 7,
840         const CXTemplateArgumentKind_Pack = 8,
841         const CXTemplateArgumentKind_Invalid = 9,
842     }
843 }
844 
845 cenum! {
846     enum CXTokenKind {
847         const CXToken_Punctuation = 0,
848         const CXToken_Keyword = 1,
849         const CXToken_Identifier = 2,
850         const CXToken_Literal = 3,
851         const CXToken_Comment = 4,
852     }
853 }
854 
855 cenum! {
856     enum CXTypeKind {
857         const CXType_Invalid = 0,
858         const CXType_Unexposed = 1,
859         const CXType_Void = 2,
860         const CXType_Bool = 3,
861         const CXType_Char_U = 4,
862         const CXType_UChar = 5,
863         const CXType_Char16 = 6,
864         const CXType_Char32 = 7,
865         const CXType_UShort = 8,
866         const CXType_UInt = 9,
867         const CXType_ULong = 10,
868         const CXType_ULongLong = 11,
869         const CXType_UInt128 = 12,
870         const CXType_Char_S = 13,
871         const CXType_SChar = 14,
872         const CXType_WChar = 15,
873         const CXType_Short = 16,
874         const CXType_Int = 17,
875         const CXType_Long = 18,
876         const CXType_LongLong = 19,
877         const CXType_Int128 = 20,
878         const CXType_Float = 21,
879         const CXType_Double = 22,
880         const CXType_LongDouble = 23,
881         const CXType_NullPtr = 24,
882         const CXType_Overload = 25,
883         const CXType_Dependent = 26,
884         const CXType_ObjCId = 27,
885         const CXType_ObjCClass = 28,
886         const CXType_ObjCSel = 29,
887         /// Only produced by `libclang` 3.9 and later.
888         const CXType_Float128 = 30,
889         /// Only produced by `libclang` 5.0 and later.
890         const CXType_Half = 31,
891         /// Only produced by `libclang` 6.0 and later.
892         const CXType_Float16 = 32,
893         /// Only produced by `libclang` 7.0 and later.
894         const CXType_ShortAccum = 33,
895         /// Only produced by `libclang` 7.0 and later.
896         const CXType_Accum = 34,
897         /// Only produced by `libclang` 7.0 and later.
898         const CXType_LongAccum = 35,
899         /// Only produced by `libclang` 7.0 and later.
900         const CXType_UShortAccum = 36,
901         /// Only produced by `libclang` 7.0 and later.
902         const CXType_UAccum = 37,
903         /// Only produced by `libclang` 7.0 and later.
904         const CXType_ULongAccum = 38,
905         /// Only produced by `libclang` 11.0 and later.
906         const CXType_BFloat16 = 39,
907         /// Only produced by `libclang` 14.0 and later.
908         const CXType_Ibm128 = 40,
909         const CXType_Complex = 100,
910         const CXType_Pointer = 101,
911         const CXType_BlockPointer = 102,
912         const CXType_LValueReference = 103,
913         const CXType_RValueReference = 104,
914         const CXType_Record = 105,
915         const CXType_Enum = 106,
916         const CXType_Typedef = 107,
917         const CXType_ObjCInterface = 108,
918         const CXType_ObjCObjectPointer = 109,
919         const CXType_FunctionNoProto = 110,
920         const CXType_FunctionProto = 111,
921         const CXType_ConstantArray = 112,
922         const CXType_Vector = 113,
923         const CXType_IncompleteArray = 114,
924         const CXType_VariableArray = 115,
925         const CXType_DependentSizedArray = 116,
926         const CXType_MemberPointer = 117,
927         /// Only produced by `libclang` 3.8 and later.
928         const CXType_Auto = 118,
929         /// Only produced by `libclang` 3.9 and later.
930         const CXType_Elaborated = 119,
931         /// Only produced by `libclang` 5.0 and later.
932         const CXType_Pipe = 120,
933         /// Only produced by `libclang` 5.0 and later.
934         const CXType_OCLImage1dRO = 121,
935         /// Only produced by `libclang` 5.0 and later.
936         const CXType_OCLImage1dArrayRO = 122,
937         /// Only produced by `libclang` 5.0 and later.
938         const CXType_OCLImage1dBufferRO = 123,
939         /// Only produced by `libclang` 5.0 and later.
940         const CXType_OCLImage2dRO = 124,
941         /// Only produced by `libclang` 5.0 and later.
942         const CXType_OCLImage2dArrayRO = 125,
943         /// Only produced by `libclang` 5.0 and later.
944         const CXType_OCLImage2dDepthRO = 126,
945         /// Only produced by `libclang` 5.0 and later.
946         const CXType_OCLImage2dArrayDepthRO = 127,
947         /// Only produced by `libclang` 5.0 and later.
948         const CXType_OCLImage2dMSAARO = 128,
949         /// Only produced by `libclang` 5.0 and later.
950         const CXType_OCLImage2dArrayMSAARO = 129,
951         /// Only produced by `libclang` 5.0 and later.
952         const CXType_OCLImage2dMSAADepthRO = 130,
953         /// Only produced by `libclang` 5.0 and later.
954         const CXType_OCLImage2dArrayMSAADepthRO = 131,
955         /// Only produced by `libclang` 5.0 and later.
956         const CXType_OCLImage3dRO = 132,
957         /// Only produced by `libclang` 5.0 and later.
958         const CXType_OCLImage1dWO = 133,
959         /// Only produced by `libclang` 5.0 and later.
960         const CXType_OCLImage1dArrayWO = 134,
961         /// Only produced by `libclang` 5.0 and later.
962         const CXType_OCLImage1dBufferWO = 135,
963         /// Only produced by `libclang` 5.0 and later.
964         const CXType_OCLImage2dWO = 136,
965         /// Only produced by `libclang` 5.0 and later.
966         const CXType_OCLImage2dArrayWO = 137,
967         /// Only produced by `libclang` 5.0 and later.
968         const CXType_OCLImage2dDepthWO = 138,
969         /// Only produced by `libclang` 5.0 and later.
970         const CXType_OCLImage2dArrayDepthWO = 139,
971         /// Only produced by `libclang` 5.0 and later.
972         const CXType_OCLImage2dMSAAWO = 140,
973         /// Only produced by `libclang` 5.0 and later.
974         const CXType_OCLImage2dArrayMSAAWO = 141,
975         /// Only produced by `libclang` 5.0 and later.
976         const CXType_OCLImage2dMSAADepthWO = 142,
977         /// Only produced by `libclang` 5.0 and later.
978         const CXType_OCLImage2dArrayMSAADepthWO = 143,
979         /// Only produced by `libclang` 5.0 and later.
980         const CXType_OCLImage3dWO = 144,
981         /// Only produced by `libclang` 5.0 and later.
982         const CXType_OCLImage1dRW = 145,
983         /// Only produced by `libclang` 5.0 and later.
984         const CXType_OCLImage1dArrayRW = 146,
985         /// Only produced by `libclang` 5.0 and later.
986         const CXType_OCLImage1dBufferRW = 147,
987         /// Only produced by `libclang` 5.0 and later.
988         const CXType_OCLImage2dRW = 148,
989         /// Only produced by `libclang` 5.0 and later.
990         const CXType_OCLImage2dArrayRW = 149,
991         /// Only produced by `libclang` 5.0 and later.
992         const CXType_OCLImage2dDepthRW = 150,
993         /// Only produced by `libclang` 5.0 and later.
994         const CXType_OCLImage2dArrayDepthRW = 151,
995         /// Only produced by `libclang` 5.0 and later.
996         const CXType_OCLImage2dMSAARW = 152,
997         /// Only produced by `libclang` 5.0 and later.
998         const CXType_OCLImage2dArrayMSAARW = 153,
999         /// Only produced by `libclang` 5.0 and later.
1000         const CXType_OCLImage2dMSAADepthRW = 154,
1001         /// Only produced by `libclang` 5.0 and later.
1002         const CXType_OCLImage2dArrayMSAADepthRW = 155,
1003         /// Only produced by `libclang` 5.0 and later.
1004         const CXType_OCLImage3dRW = 156,
1005         /// Only produced by `libclang` 5.0 and later.
1006         const CXType_OCLSampler = 157,
1007         /// Only produced by `libclang` 5.0 and later.
1008         const CXType_OCLEvent = 158,
1009         /// Only produced by `libclang` 5.0 and later.
1010         const CXType_OCLQueue = 159,
1011         /// Only produced by `libclang` 5.0 and later.
1012         const CXType_OCLReserveID = 160,
1013         /// Only produced by `libclang` 8.0 and later.
1014         const CXType_ObjCObject = 161,
1015         /// Only produced by `libclang` 8.0 and later.
1016         const CXType_ObjCTypeParam = 162,
1017         /// Only produced by `libclang` 8.0 and later.
1018         const CXType_Attributed = 163,
1019         /// Only produced by `libclang` 8.0 and later.
1020         const CXType_OCLIntelSubgroupAVCMcePayload = 164,
1021         /// Only produced by `libclang` 8.0 and later.
1022         const CXType_OCLIntelSubgroupAVCImePayload = 165,
1023         /// Only produced by `libclang` 8.0 and later.
1024         const CXType_OCLIntelSubgroupAVCRefPayload = 166,
1025         /// Only produced by `libclang` 8.0 and later.
1026         const CXType_OCLIntelSubgroupAVCSicPayload = 167,
1027         /// Only produced by `libclang` 8.0 and later.
1028         const CXType_OCLIntelSubgroupAVCMceResult = 168,
1029         /// Only produced by `libclang` 8.0 and later.
1030         const CXType_OCLIntelSubgroupAVCImeResult = 169,
1031         /// Only produced by `libclang` 8.0 and later.
1032         const CXType_OCLIntelSubgroupAVCRefResult = 170,
1033         /// Only produced by `libclang` 8.0 and later.
1034         const CXType_OCLIntelSubgroupAVCSicResult = 171,
1035         /// Only produced by `libclang` 8.0 and later.
1036         const CXType_OCLIntelSubgroupAVCImeResultSingleRefStreamout = 172,
1037         /// Only produced by `libclang` 8.0 and later.
1038         const CXType_OCLIntelSubgroupAVCImeResultDualRefStreamout = 173,
1039         /// Only produced by `libclang` 8.0 and later.
1040         const CXType_OCLIntelSubgroupAVCImeSingleRefStreamin = 174,
1041         /// Only produced by `libclang` 8.0 and later.
1042         const CXType_OCLIntelSubgroupAVCImeDualRefStreamin = 175,
1043         /// Only produced by `libclang` 9.0 and later.
1044         const CXType_ExtVector = 176,
1045         /// Only produced by `libclang` 11.0 and later.
1046         const CXType_Atomic = 177,
1047         /// Only produced by `libclang` 15.0 and later.
1048         const CXType_BTFTagAttributed = 178,
1049     }
1050 }
1051 
1052 cenum! {
1053     enum CXTypeLayoutError {
1054         const CXTypeLayoutError_Invalid = -1,
1055         const CXTypeLayoutError_Incomplete = -2,
1056         const CXTypeLayoutError_Dependent = -3,
1057         const CXTypeLayoutError_NotConstantSize = -4,
1058         const CXTypeLayoutError_InvalidFieldName = -5,
1059         /// Only produced by `libclang` 9.0 and later.
1060         const CXTypeLayoutError_Undeduced = -6,
1061     }
1062 }
1063 
1064 cenum! {
1065     /// Only available on `libclang` 3.8 and later.
1066     #[cfg(feature = "clang_3_8")]
1067     enum CXVisibilityKind {
1068         const CXVisibility_Invalid = 0,
1069         const CXVisibility_Hidden = 1,
1070         const CXVisibility_Protected = 2,
1071         const CXVisibility_Default = 3,
1072     }
1073 }
1074 
1075 cenum! {
1076     /// Only available on `libclang` 8.0 and later.
1077     #[cfg(feature = "clang_8_0")]
1078     enum CXTypeNullabilityKind {
1079         const CXTypeNullability_NonNull = 0,
1080         const CXTypeNullability_Nullable = 1,
1081         const CXTypeNullability_Unspecified = 2,
1082         const CXTypeNullability_Invalid = 3,
1083         /// Only produced by `libclang` 12.0 and later.
1084         const CXTypeNullability_NullableResult = 4,
1085     }
1086 }
1087 
1088 cenum! {
1089     enum CXVisitorResult {
1090         const CXVisit_Break = 0,
1091         const CXVisit_Continue = 1,
1092     }
1093 }
1094 
1095 cenum! {
1096     enum CX_CXXAccessSpecifier {
1097         const CX_CXXInvalidAccessSpecifier = 0,
1098         const CX_CXXPublic = 1,
1099         const CX_CXXProtected = 2,
1100         const CX_CXXPrivate = 3,
1101     }
1102 }
1103 
1104 cenum! {
1105     /// Only available on `libclang` 3.6 and later.
1106     #[cfg(feature = "clang_3_6")]
1107     enum CX_StorageClass {
1108         const CX_SC_Invalid = 0,
1109         const CX_SC_None = 1,
1110         const CX_SC_Extern = 2,
1111         const CX_SC_Static = 3,
1112         const CX_SC_PrivateExtern = 4,
1113         const CX_SC_OpenCLWorkGroupLocal = 5,
1114         const CX_SC_Auto = 6,
1115         const CX_SC_Register = 7,
1116     }
1117 }
1118 
1119 //================================================
1120 // Flags
1121 //================================================
1122 
1123 cenum! {
1124     enum CXCodeComplete_Flags {
1125         const CXCodeComplete_IncludeMacros = 1;
1126         const CXCodeComplete_IncludeCodePatterns = 2;
1127         const CXCodeComplete_IncludeBriefComments = 4;
1128         const CXCodeComplete_SkipPreamble = 8;
1129         const CXCodeComplete_IncludeCompletionsWithFixIts = 16;
1130     }
1131 }
1132 
1133 cenum! {
1134     enum CXCompletionContext {
1135         const CXCompletionContext_Unexposed = 0;
1136         const CXCompletionContext_AnyType = 1;
1137         const CXCompletionContext_AnyValue = 2;
1138         const CXCompletionContext_ObjCObjectValue = 4;
1139         const CXCompletionContext_ObjCSelectorValue = 8;
1140         const CXCompletionContext_CXXClassTypeValue = 16;
1141         const CXCompletionContext_DotMemberAccess = 32;
1142         const CXCompletionContext_ArrowMemberAccess = 64;
1143         const CXCompletionContext_ObjCPropertyAccess = 128;
1144         const CXCompletionContext_EnumTag = 256;
1145         const CXCompletionContext_UnionTag = 512;
1146         const CXCompletionContext_StructTag = 1024;
1147         const CXCompletionContext_ClassTag = 2048;
1148         const CXCompletionContext_Namespace = 4096;
1149         const CXCompletionContext_NestedNameSpecifier = 8192;
1150         const CXCompletionContext_ObjCInterface = 16384;
1151         const CXCompletionContext_ObjCProtocol = 32768;
1152         const CXCompletionContext_ObjCCategory = 65536;
1153         const CXCompletionContext_ObjCInstanceMessage = 131072;
1154         const CXCompletionContext_ObjCClassMessage = 262144;
1155         const CXCompletionContext_ObjCSelectorName = 524288;
1156         const CXCompletionContext_MacroName = 1048576;
1157         const CXCompletionContext_NaturalLanguage = 2097152;
1158         const CXCompletionContext_IncludedFile = 4194304;
1159         const CXCompletionContext_Unknown = 8388607;
1160     }
1161 }
1162 
1163 cenum! {
1164     enum CXDiagnosticDisplayOptions {
1165         const CXDiagnostic_DisplaySourceLocation = 1;
1166         const CXDiagnostic_DisplayColumn = 2;
1167         const CXDiagnostic_DisplaySourceRanges = 4;
1168         const CXDiagnostic_DisplayOption = 8;
1169         const CXDiagnostic_DisplayCategoryId = 16;
1170         const CXDiagnostic_DisplayCategoryName = 32;
1171     }
1172 }
1173 
1174 cenum! {
1175     enum CXGlobalOptFlags {
1176         const CXGlobalOpt_None = 0;
1177         const CXGlobalOpt_ThreadBackgroundPriorityForIndexing = 1;
1178         const CXGlobalOpt_ThreadBackgroundPriorityForEditing = 2;
1179         const CXGlobalOpt_ThreadBackgroundPriorityForAll = 3;
1180     }
1181 }
1182 
1183 cenum! {
1184     enum CXIdxDeclInfoFlags {
1185         const CXIdxDeclFlag_Skipped = 1;
1186     }
1187 }
1188 
1189 cenum! {
1190     enum CXIndexOptFlags {
1191         const CXIndexOptNone = 0;
1192         const CXIndexOptSuppressRedundantRefs = 1;
1193         const CXIndexOptIndexFunctionLocalSymbols = 2;
1194         const CXIndexOptIndexImplicitTemplateInstantiations = 4;
1195         const CXIndexOptSuppressWarnings = 8;
1196         const CXIndexOptSkipParsedBodiesInSession = 16;
1197     }
1198 }
1199 
1200 cenum! {
1201     enum CXNameRefFlags {
1202         const CXNameRange_WantQualifier = 1;
1203         const CXNameRange_WantTemplateArgs = 2;
1204         const CXNameRange_WantSinglePiece = 4;
1205     }
1206 }
1207 
1208 cenum! {
1209     enum CXObjCDeclQualifierKind {
1210         const CXObjCDeclQualifier_None = 0;
1211         const CXObjCDeclQualifier_In = 1;
1212         const CXObjCDeclQualifier_Inout = 2;
1213         const CXObjCDeclQualifier_Out = 4;
1214         const CXObjCDeclQualifier_Bycopy = 8;
1215         const CXObjCDeclQualifier_Byref = 16;
1216         const CXObjCDeclQualifier_Oneway = 32;
1217     }
1218 }
1219 
1220 cenum! {
1221     enum CXObjCPropertyAttrKind {
1222         const CXObjCPropertyAttr_noattr = 0;
1223         const CXObjCPropertyAttr_readonly = 1;
1224         const CXObjCPropertyAttr_getter = 2;
1225         const CXObjCPropertyAttr_assign = 4;
1226         const CXObjCPropertyAttr_readwrite = 8;
1227         const CXObjCPropertyAttr_retain = 16;
1228         const CXObjCPropertyAttr_copy = 32;
1229         const CXObjCPropertyAttr_nonatomic = 64;
1230         const CXObjCPropertyAttr_setter = 128;
1231         const CXObjCPropertyAttr_atomic = 256;
1232         const CXObjCPropertyAttr_weak = 512;
1233         const CXObjCPropertyAttr_strong = 1024;
1234         const CXObjCPropertyAttr_unsafe_unretained = 2048;
1235         /// Only available on `libclang` 3.9 and later.
1236         #[cfg(feature = "clang_3_9")]
1237         const CXObjCPropertyAttr_class = 4096;
1238     }
1239 }
1240 
1241 cenum! {
1242     enum CXReparse_Flags {
1243         const CXReparse_None = 0;
1244     }
1245 }
1246 
1247 cenum! {
1248     enum CXSaveTranslationUnit_Flags {
1249         const CXSaveTranslationUnit_None = 0;
1250     }
1251 }
1252 
1253 cenum! {
1254     /// Only available on `libclang` 7.0 and later.
1255     #[cfg(feature = "clang_7_0")]
1256     enum CXSymbolRole {
1257         const CXSymbolRole_None = 0;
1258         const CXSymbolRole_Declaration = 1;
1259         const CXSymbolRole_Definition = 2;
1260         const CXSymbolRole_Reference = 4;
1261         const CXSymbolRole_Read = 8;
1262         const CXSymbolRole_Write = 16;
1263         const CXSymbolRole_Call = 32;
1264         const CXSymbolRole_Dynamic = 64;
1265         const CXSymbolRole_AddressOf = 128;
1266         const CXSymbolRole_Implicit = 256;
1267     }
1268 }
1269 
1270 cenum! {
1271     enum CXTranslationUnit_Flags {
1272         const CXTranslationUnit_None = 0;
1273         const CXTranslationUnit_DetailedPreprocessingRecord = 1;
1274         const CXTranslationUnit_Incomplete = 2;
1275         const CXTranslationUnit_PrecompiledPreamble = 4;
1276         const CXTranslationUnit_CacheCompletionResults = 8;
1277         const CXTranslationUnit_ForSerialization = 16;
1278         const CXTranslationUnit_CXXChainedPCH = 32;
1279         const CXTranslationUnit_SkipFunctionBodies = 64;
1280         const CXTranslationUnit_IncludeBriefCommentsInCodeCompletion = 128;
1281         /// Only available on `libclang` 3.8 and later.
1282         #[cfg(feature = "clang_3_8")]
1283         const CXTranslationUnit_CreatePreambleOnFirstParse = 256;
1284         /// Only available on `libclang` 3.9 and later.
1285         #[cfg(feature = "clang_3_9")]
1286         const CXTranslationUnit_KeepGoing = 512;
1287         /// Only available on `libclang` 5.0 and later.
1288         #[cfg(feature = "clang_5_0")]
1289         const CXTranslationUnit_SingleFileParse = 1024;
1290         /// Only available on `libclang` 7.0 and later.
1291         #[cfg(feature = "clang_7_0")]
1292         const CXTranslationUnit_LimitSkipFunctionBodiesToPreamble = 2048;
1293         /// Only available on `libclang` 8.0 and later.
1294         #[cfg(feature = "clang_8_0")]
1295         const CXTranslationUnit_IncludeAttributedTypes = 4096;
1296         /// Only available on `libclang` 8.0 and later.
1297         #[cfg(feature = "clang_8_0")]
1298         const CXTranslationUnit_VisitImplicitAttributes = 8192;
1299         /// Only available on `libclang` 9.0 and later.
1300         #[cfg(feature = "clang_9_0")]
1301         const CXTranslationUnit_IgnoreNonErrorsFromIncludedFiles = 16384;
1302         /// Only available on `libclang` 10.0 and later.
1303         #[cfg(feature = "clang_10_0")]
1304         const CXTranslationUnit_RetainExcludedConditionalBlocks = 32768;
1305     }
1306 }
1307 
1308 //================================================
1309 // Structs
1310 //================================================
1311 
1312 // Opaque ________________________________________
1313 
1314 macro_rules! opaque {
1315     ($name:ident) => {
1316         pub type $name = *mut c_void;
1317     };
1318 }
1319 
1320 opaque!(CXCompilationDatabase);
1321 opaque!(CXCompileCommand);
1322 opaque!(CXCompileCommands);
1323 opaque!(CXCompletionString);
1324 opaque!(CXCursorSet);
1325 opaque!(CXDiagnostic);
1326 opaque!(CXDiagnosticSet);
1327 #[cfg(feature = "clang_3_9")]
1328 opaque!(CXEvalResult);
1329 opaque!(CXFile);
1330 opaque!(CXIdxClientASTFile);
1331 opaque!(CXIdxClientContainer);
1332 opaque!(CXIdxClientEntity);
1333 opaque!(CXIdxClientFile);
1334 opaque!(CXIndex);
1335 opaque!(CXIndexAction);
1336 opaque!(CXModule);
1337 #[cfg(feature = "clang_7_0")]
1338 opaque!(CXPrintingPolicy);
1339 opaque!(CXRemapping);
1340 #[cfg(feature = "clang_5_0")]
1341 opaque!(CXTargetInfo);
1342 opaque!(CXTranslationUnit);
1343 
1344 // Transparent ___________________________________
1345 
1346 #[derive(Copy, Clone, Debug)]
1347 #[repr(C)]
1348 pub struct CXCodeCompleteResults {
1349     pub Results: *mut CXCompletionResult,
1350     pub NumResults: c_uint,
1351 }
1352 
1353 default!(CXCodeCompleteResults);
1354 
1355 #[derive(Copy, Clone, Debug)]
1356 #[repr(C)]
1357 pub struct CXComment {
1358     pub ASTNode: *const c_void,
1359     pub TranslationUnit: CXTranslationUnit,
1360 }
1361 
1362 default!(CXComment);
1363 
1364 #[derive(Copy, Clone, Debug)]
1365 #[repr(C)]
1366 pub struct CXCompletionResult {
1367     pub CursorKind: CXCursorKind,
1368     pub CompletionString: CXCompletionString,
1369 }
1370 
1371 default!(CXCompletionResult);
1372 
1373 #[derive(Copy, Clone, Debug)]
1374 #[repr(C)]
1375 pub struct CXCursor {
1376     pub kind: CXCursorKind,
1377     pub xdata: c_int,
1378     pub data: [*const c_void; 3],
1379 }
1380 
1381 default!(CXCursor);
1382 
1383 #[derive(Copy, Clone, Debug)]
1384 #[repr(C)]
1385 pub struct CXCursorAndRangeVisitor {
1386     pub context: *mut c_void,
1387     pub visit: Option<extern "C" fn(*mut c_void, CXCursor, CXSourceRange) -> CXVisitorResult>,
1388 }
1389 
1390 default!(CXCursorAndRangeVisitor);
1391 
1392 #[derive(Copy, Clone, Debug)]
1393 #[repr(C)]
1394 pub struct CXFileUniqueID {
1395     pub data: [c_ulonglong; 3],
1396 }
1397 
1398 default!(CXFileUniqueID);
1399 
1400 #[derive(Copy, Clone, Debug)]
1401 #[repr(C)]
1402 pub struct CXIdxAttrInfo {
1403     pub kind: CXIdxAttrKind,
1404     pub cursor: CXCursor,
1405     pub loc: CXIdxLoc,
1406 }
1407 
1408 default!(CXIdxAttrInfo);
1409 
1410 #[derive(Copy, Clone, Debug)]
1411 #[repr(C)]
1412 pub struct CXIdxBaseClassInfo {
1413     pub base: *const CXIdxEntityInfo,
1414     pub cursor: CXCursor,
1415     pub loc: CXIdxLoc,
1416 }
1417 
1418 default!(CXIdxBaseClassInfo);
1419 
1420 #[derive(Copy, Clone, Debug)]
1421 #[repr(C)]
1422 pub struct CXIdxCXXClassDeclInfo {
1423     pub declInfo: *const CXIdxDeclInfo,
1424     pub bases: *const *const CXIdxBaseClassInfo,
1425     pub numBases: c_uint,
1426 }
1427 
1428 default!(CXIdxCXXClassDeclInfo);
1429 
1430 #[derive(Copy, Clone, Debug)]
1431 #[repr(C)]
1432 pub struct CXIdxContainerInfo {
1433     pub cursor: CXCursor,
1434 }
1435 
1436 default!(CXIdxContainerInfo);
1437 
1438 #[derive(Copy, Clone, Debug)]
1439 #[repr(C)]
1440 pub struct CXIdxDeclInfo {
1441     pub entityInfo: *const CXIdxEntityInfo,
1442     pub cursor: CXCursor,
1443     pub loc: CXIdxLoc,
1444     pub semanticContainer: *const CXIdxContainerInfo,
1445     pub lexicalContainer: *const CXIdxContainerInfo,
1446     pub isRedeclaration: c_int,
1447     pub isDefinition: c_int,
1448     pub isContainer: c_int,
1449     pub declAsContainer: *const CXIdxContainerInfo,
1450     pub isImplicit: c_int,
1451     pub attributes: *const *const CXIdxAttrInfo,
1452     pub numAttributes: c_uint,
1453     pub flags: c_uint,
1454 }
1455 
1456 default!(CXIdxDeclInfo);
1457 
1458 #[derive(Copy, Clone, Debug)]
1459 #[repr(C)]
1460 pub struct CXIdxEntityInfo {
1461     pub kind: CXIdxEntityKind,
1462     pub templateKind: CXIdxEntityCXXTemplateKind,
1463     pub lang: CXIdxEntityLanguage,
1464     pub name: *const c_char,
1465     pub USR: *const c_char,
1466     pub cursor: CXCursor,
1467     pub attributes: *const *const CXIdxAttrInfo,
1468     pub numAttributes: c_uint,
1469 }
1470 
1471 default!(CXIdxEntityInfo);
1472 
1473 #[derive(Copy, Clone, Debug)]
1474 #[repr(C)]
1475 pub struct CXIdxEntityRefInfo {
1476     pub kind: CXIdxEntityRefKind,
1477     pub cursor: CXCursor,
1478     pub loc: CXIdxLoc,
1479     pub referencedEntity: *const CXIdxEntityInfo,
1480     pub parentEntity: *const CXIdxEntityInfo,
1481     pub container: *const CXIdxContainerInfo,
1482     /// Only available on `libclang` 7.0 and later.
1483     #[cfg(feature = "clang_7_0")]
1484     pub role: CXSymbolRole,
1485 }
1486 
1487 default!(CXIdxEntityRefInfo);
1488 
1489 #[derive(Copy, Clone, Debug)]
1490 #[repr(C)]
1491 pub struct CXIdxIBOutletCollectionAttrInfo {
1492     pub attrInfo: *const CXIdxAttrInfo,
1493     pub objcClass: *const CXIdxEntityInfo,
1494     pub classCursor: CXCursor,
1495     pub classLoc: CXIdxLoc,
1496 }
1497 
1498 default!(CXIdxIBOutletCollectionAttrInfo);
1499 
1500 #[derive(Copy, Clone, Debug)]
1501 #[repr(C)]
1502 pub struct CXIdxImportedASTFileInfo {
1503     pub file: CXFile,
1504     pub module: CXModule,
1505     pub loc: CXIdxLoc,
1506     pub isImplicit: c_int,
1507 }
1508 
1509 default!(CXIdxImportedASTFileInfo);
1510 
1511 #[derive(Copy, Clone, Debug)]
1512 #[repr(C)]
1513 pub struct CXIdxIncludedFileInfo {
1514     pub hashLoc: CXIdxLoc,
1515     pub filename: *const c_char,
1516     pub file: CXFile,
1517     pub isImport: c_int,
1518     pub isAngled: c_int,
1519     pub isModuleImport: c_int,
1520 }
1521 
1522 default!(CXIdxIncludedFileInfo);
1523 
1524 #[derive(Copy, Clone, Debug)]
1525 #[repr(C)]
1526 pub struct CXIdxLoc {
1527     pub ptr_data: [*mut c_void; 2],
1528     pub int_data: c_uint,
1529 }
1530 
1531 default!(CXIdxLoc);
1532 
1533 #[derive(Copy, Clone, Debug)]
1534 #[repr(C)]
1535 pub struct CXIdxObjCCategoryDeclInfo {
1536     pub containerInfo: *const CXIdxObjCContainerDeclInfo,
1537     pub objcClass: *const CXIdxEntityInfo,
1538     pub classCursor: CXCursor,
1539     pub classLoc: CXIdxLoc,
1540     pub protocols: *const CXIdxObjCProtocolRefListInfo,
1541 }
1542 
1543 default!(CXIdxObjCCategoryDeclInfo);
1544 
1545 #[derive(Copy, Clone, Debug)]
1546 #[repr(C)]
1547 pub struct CXIdxObjCContainerDeclInfo {
1548     pub declInfo: *const CXIdxDeclInfo,
1549     pub kind: CXIdxObjCContainerKind,
1550 }
1551 
1552 default!(CXIdxObjCContainerDeclInfo);
1553 
1554 #[derive(Copy, Clone, Debug)]
1555 #[repr(C)]
1556 pub struct CXIdxObjCInterfaceDeclInfo {
1557     pub containerInfo: *const CXIdxObjCContainerDeclInfo,
1558     pub superInfo: *const CXIdxBaseClassInfo,
1559     pub protocols: *const CXIdxObjCProtocolRefListInfo,
1560 }
1561 
1562 default!(CXIdxObjCInterfaceDeclInfo);
1563 
1564 #[derive(Copy, Clone, Debug)]
1565 #[repr(C)]
1566 pub struct CXIdxObjCPropertyDeclInfo {
1567     pub declInfo: *const CXIdxDeclInfo,
1568     pub getter: *const CXIdxEntityInfo,
1569     pub setter: *const CXIdxEntityInfo,
1570 }
1571 
1572 default!(CXIdxObjCPropertyDeclInfo);
1573 
1574 #[derive(Copy, Clone, Debug)]
1575 #[repr(C)]
1576 pub struct CXIdxObjCProtocolRefInfo {
1577     pub protocol: *const CXIdxEntityInfo,
1578     pub cursor: CXCursor,
1579     pub loc: CXIdxLoc,
1580 }
1581 
1582 default!(CXIdxObjCProtocolRefInfo);
1583 
1584 #[derive(Copy, Clone, Debug)]
1585 #[repr(C)]
1586 pub struct CXIdxObjCProtocolRefListInfo {
1587     pub protocols: *const *const CXIdxObjCProtocolRefInfo,
1588     pub numProtocols: c_uint,
1589 }
1590 
1591 default!(CXIdxObjCProtocolRefListInfo);
1592 
1593 #[derive(Copy, Clone, Debug)]
1594 #[repr(C)]
1595 pub struct CXPlatformAvailability {
1596     pub Platform: CXString,
1597     pub Introduced: CXVersion,
1598     pub Deprecated: CXVersion,
1599     pub Obsoleted: CXVersion,
1600     pub Unavailable: c_int,
1601     pub Message: CXString,
1602 }
1603 
1604 default!(CXPlatformAvailability);
1605 
1606 #[derive(Copy, Clone, Debug)]
1607 #[repr(C)]
1608 pub struct CXSourceLocation {
1609     pub ptr_data: [*const c_void; 2],
1610     pub int_data: c_uint,
1611 }
1612 
1613 default!(CXSourceLocation);
1614 
1615 #[derive(Copy, Clone, Debug)]
1616 #[repr(C)]
1617 pub struct CXSourceRange {
1618     pub ptr_data: [*const c_void; 2],
1619     pub begin_int_data: c_uint,
1620     pub end_int_data: c_uint,
1621 }
1622 
1623 default!(CXSourceRange);
1624 
1625 #[derive(Copy, Clone, Debug)]
1626 #[repr(C)]
1627 pub struct CXSourceRangeList {
1628     pub count: c_uint,
1629     pub ranges: *mut CXSourceRange,
1630 }
1631 
1632 default!(CXSourceRangeList);
1633 
1634 #[derive(Copy, Clone, Debug)]
1635 #[repr(C)]
1636 pub struct CXString {
1637     pub data: *const c_void,
1638     pub private_flags: c_uint,
1639 }
1640 
1641 default!(CXString);
1642 
1643 #[cfg(feature = "clang_3_8")]
1644 #[derive(Copy, Clone, Debug)]
1645 #[repr(C)]
1646 pub struct CXStringSet {
1647     pub Strings: *mut CXString,
1648     pub Count: c_uint,
1649 }
1650 
1651 #[cfg(feature = "clang_3_8")]
1652 default!(CXStringSet);
1653 
1654 #[derive(Copy, Clone, Debug)]
1655 #[repr(C)]
1656 pub struct CXTUResourceUsage {
1657     pub data: *mut c_void,
1658     pub numEntries: c_uint,
1659     pub entries: *mut CXTUResourceUsageEntry,
1660 }
1661 
1662 default!(CXTUResourceUsage);
1663 
1664 #[derive(Copy, Clone, Debug)]
1665 #[repr(C)]
1666 pub struct CXTUResourceUsageEntry {
1667     pub kind: CXTUResourceUsageKind,
1668     pub amount: c_ulong,
1669 }
1670 
1671 default!(CXTUResourceUsageEntry);
1672 
1673 #[derive(Copy, Clone, Debug)]
1674 #[repr(C)]
1675 pub struct CXToken {
1676     pub int_data: [c_uint; 4],
1677     pub ptr_data: *mut c_void,
1678 }
1679 
1680 default!(CXToken);
1681 
1682 #[derive(Copy, Clone, Debug)]
1683 #[repr(C)]
1684 pub struct CXType {
1685     pub kind: CXTypeKind,
1686     pub data: [*mut c_void; 2],
1687 }
1688 
1689 default!(CXType);
1690 
1691 #[derive(Copy, Clone, Debug)]
1692 #[repr(C)]
1693 pub struct CXUnsavedFile {
1694     pub Filename: *const c_char,
1695     pub Contents: *const c_char,
1696     pub Length: c_ulong,
1697 }
1698 
1699 default!(CXUnsavedFile);
1700 
1701 #[derive(Copy, Clone, Debug)]
1702 #[repr(C)]
1703 pub struct CXVersion {
1704     pub Major: c_int,
1705     pub Minor: c_int,
1706     pub Subminor: c_int,
1707 }
1708 
1709 default!(CXVersion);
1710 
1711 #[derive(Copy, Clone, Debug)]
1712 #[repr(C)]
1713 #[rustfmt::skip]
1714 pub struct IndexerCallbacks {
1715     pub abortQuery: Option<extern "C" fn(CXClientData, *mut c_void) -> c_int>,
1716     pub diagnostic: Option<extern "C" fn(CXClientData, CXDiagnosticSet, *mut c_void)>,
1717     pub enteredMainFile: Option<extern "C" fn(CXClientData, CXFile, *mut c_void) -> CXIdxClientFile>,
1718     pub ppIncludedFile: Option<extern "C" fn(CXClientData, *const CXIdxIncludedFileInfo) -> CXIdxClientFile>,
1719     pub importedASTFile: Option<extern "C" fn(CXClientData, *const CXIdxImportedASTFileInfo) -> CXIdxClientASTFile>,
1720     pub startedTranslationUnit: Option<extern "C" fn(CXClientData, *mut c_void) -> CXIdxClientContainer>,
1721     pub indexDeclaration: Option<extern "C" fn(CXClientData, *const CXIdxDeclInfo)>,
1722     pub indexEntityReference: Option<extern "C" fn(CXClientData, *const CXIdxEntityRefInfo)>,
1723 }
1724 
1725 default!(IndexerCallbacks);
1726 
1727 //================================================
1728 // Functions
1729 //================================================
1730 
1731 link! {
1732     pub fn clang_CXCursorSet_contains(set: CXCursorSet, cursor: CXCursor) -> c_uint;
1733     pub fn clang_CXCursorSet_insert(set: CXCursorSet, cursor: CXCursor) -> c_uint;
1734     pub fn clang_CXIndex_getGlobalOptions(index: CXIndex) -> CXGlobalOptFlags;
1735     pub fn clang_CXIndex_setGlobalOptions(index: CXIndex, flags: CXGlobalOptFlags);
1736     /// Only available on `libclang` 6.0 and later.
1737     #[cfg(feature = "clang_6_0")]
1738     pub fn clang_CXIndex_setInvocationEmissionPathOption(index: CXIndex, path: *const c_char);
1739     /// Only available on `libclang` 3.9 and later.
1740     #[cfg(feature = "clang_3_9")]
1741     pub fn clang_CXXConstructor_isConvertingConstructor(cursor: CXCursor) -> c_uint;
1742     /// Only available on `libclang` 3.9 and later.
1743     #[cfg(feature = "clang_3_9")]
1744     pub fn clang_CXXConstructor_isCopyConstructor(cursor: CXCursor) -> c_uint;
1745     /// Only available on `libclang` 3.9 and later.
1746     #[cfg(feature = "clang_3_9")]
1747     pub fn clang_CXXConstructor_isDefaultConstructor(cursor: CXCursor) -> c_uint;
1748     /// Only available on `libclang` 3.9 and later.
1749     #[cfg(feature = "clang_3_9")]
1750     pub fn clang_CXXConstructor_isMoveConstructor(cursor: CXCursor) -> c_uint;
1751     /// Only available on `libclang` 3.8 and later.
1752     #[cfg(feature = "clang_3_8")]
1753     pub fn clang_CXXField_isMutable(cursor: CXCursor) -> c_uint;
1754     pub fn clang_CXXMethod_isConst(cursor: CXCursor) -> c_uint;
1755     /// Only available on `libclang` 3.9 and later.
1756     #[cfg(feature = "clang_3_9")]
1757     pub fn clang_CXXMethod_isDefaulted(cursor: CXCursor) -> c_uint;
1758     pub fn clang_CXXMethod_isPureVirtual(cursor: CXCursor) -> c_uint;
1759     pub fn clang_CXXMethod_isStatic(cursor: CXCursor) -> c_uint;
1760     pub fn clang_CXXMethod_isVirtual(cursor: CXCursor) -> c_uint;
1761     /// Only available on `libclang` 6.0 and later.
1762     #[cfg(feature = "clang_6_0")]
1763     pub fn clang_CXXRecord_isAbstract(cursor: CXCursor) -> c_uint;
1764     pub fn clang_CompilationDatabase_dispose(database: CXCompilationDatabase);
1765     pub fn clang_CompilationDatabase_fromDirectory(directory: *const c_char, error: *mut CXCompilationDatabase_Error) -> CXCompilationDatabase;
1766     pub fn clang_CompilationDatabase_getAllCompileCommands(database: CXCompilationDatabase) -> CXCompileCommands;
1767     pub fn clang_CompilationDatabase_getCompileCommands(database: CXCompilationDatabase, filename: *const c_char) -> CXCompileCommands;
1768     pub fn clang_CompileCommand_getArg(command: CXCompileCommand, index: c_uint) -> CXString;
1769     pub fn clang_CompileCommand_getDirectory(command: CXCompileCommand) -> CXString;
1770     /// Only available on `libclang` 3.8 and later.
1771     #[cfg(feature = "clang_3_8")]
1772     pub fn clang_CompileCommand_getFilename(command: CXCompileCommand) -> CXString;
1773     /// Only available on `libclang` 3.8 and later.
1774     #[cfg(feature = "clang_3_8")]
1775     pub fn clang_CompileCommand_getMappedSourceContent(command: CXCompileCommand, index: c_uint) -> CXString;
1776     /// Only available on `libclang` 3.8 and later.
1777     #[cfg(feature = "clang_3_8")]
1778     pub fn clang_CompileCommand_getMappedSourcePath(command: CXCompileCommand, index: c_uint) -> CXString;
1779     pub fn clang_CompileCommand_getNumArgs(command: CXCompileCommand) -> c_uint;
1780     pub fn clang_CompileCommand_getNumMappedSources(command: CXCompileCommand) -> c_uint;
1781     pub fn clang_CompileCommands_dispose(command: CXCompileCommands);
1782     pub fn clang_CompileCommands_getCommand(command: CXCompileCommands, index: c_uint) -> CXCompileCommand;
1783     pub fn clang_CompileCommands_getSize(command: CXCompileCommands) -> c_uint;
1784     /// Only available on `libclang` 3.9 and later.
1785     #[cfg(feature = "clang_3_9")]
1786     pub fn clang_Cursor_Evaluate(cursor: CXCursor) -> CXEvalResult;
1787     pub fn clang_Cursor_getArgument(cursor: CXCursor, index: c_uint) -> CXCursor;
1788     pub fn clang_Cursor_getBriefCommentText(cursor: CXCursor) -> CXString;
1789     /// Only available on `libclang` 3.8 and later.
1790     #[cfg(feature = "clang_3_8")]
1791     pub fn clang_Cursor_getCXXManglings(cursor: CXCursor) -> *mut CXStringSet;
1792     pub fn clang_Cursor_getCommentRange(cursor: CXCursor) -> CXSourceRange;
1793     /// Only available on `libclang` 3.6 and later.
1794     #[cfg(feature = "clang_3_6")]
1795     pub fn clang_Cursor_getMangling(cursor: CXCursor) -> CXString;
1796     pub fn clang_Cursor_getModule(cursor: CXCursor) -> CXModule;
1797     pub fn clang_Cursor_getNumArguments(cursor: CXCursor) -> c_int;
1798     /// Only available on `libclang` 3.6 and later.
1799     #[cfg(feature = "clang_3_6")]
1800     pub fn clang_Cursor_getNumTemplateArguments(cursor: CXCursor) -> c_int;
1801     pub fn clang_Cursor_getObjCDeclQualifiers(cursor: CXCursor) -> CXObjCDeclQualifierKind;
1802     /// Only available on `libclang` 6.0 and later.
1803     #[cfg(feature = "clang_6_0")]
1804     pub fn clang_Cursor_getObjCManglings(cursor: CXCursor) -> *mut CXStringSet;
1805     pub fn clang_Cursor_getObjCPropertyAttributes(cursor: CXCursor, reserved: c_uint) -> CXObjCPropertyAttrKind;
1806     /// Only available on `libclang` 8.0 and later.
1807     #[cfg(feature = "clang_8_0")]
1808     pub fn clang_Cursor_getObjCPropertyGetterName(cursor: CXCursor) -> CXString;
1809     /// Only available on `libclang` 8.0 and later.
1810     #[cfg(feature = "clang_8_0")]
1811     pub fn clang_Cursor_getObjCPropertySetterName(cursor: CXCursor) -> CXString;
1812     pub fn clang_Cursor_getObjCSelectorIndex(cursor: CXCursor) -> c_int;
1813     /// Only available on `libclang` 3.7 and later.
1814     #[cfg(feature = "clang_3_7")]
1815     pub fn clang_Cursor_getOffsetOfField(cursor: CXCursor) -> c_longlong;
1816     pub fn clang_Cursor_getRawCommentText(cursor: CXCursor) -> CXString;
1817     pub fn clang_Cursor_getReceiverType(cursor: CXCursor) -> CXType;
1818     pub fn clang_Cursor_getSpellingNameRange(cursor: CXCursor, index: c_uint, reserved: c_uint) -> CXSourceRange;
1819     /// Only available on `libclang` 3.6 and later.
1820     #[cfg(feature = "clang_3_6")]
1821     pub fn clang_Cursor_getStorageClass(cursor: CXCursor) -> CX_StorageClass;
1822     /// Only available on `libclang` 3.6 and later.
1823     #[cfg(feature = "clang_3_6")]
1824     pub fn clang_Cursor_getTemplateArgumentKind(cursor: CXCursor, index: c_uint) -> CXTemplateArgumentKind;
1825     /// Only available on `libclang` 3.6 and later.
1826     #[cfg(feature = "clang_3_6")]
1827     pub fn clang_Cursor_getTemplateArgumentType(cursor: CXCursor, index: c_uint) -> CXType;
1828     /// Only available on `libclang` 3.6 and later.
1829     #[cfg(feature = "clang_3_6")]
1830     pub fn clang_Cursor_getTemplateArgumentUnsignedValue(cursor: CXCursor, index: c_uint) -> c_ulonglong;
1831     /// Only available on `libclang` 3.6 and later.
1832     #[cfg(feature = "clang_3_6")]
1833     pub fn clang_Cursor_getTemplateArgumentValue(cursor: CXCursor, index: c_uint) -> c_longlong;
1834     pub fn clang_Cursor_getTranslationUnit(cursor: CXCursor) -> CXTranslationUnit;
1835     /// Only available on `libclang` 12.0 and later.
1836     #[cfg(feature = "clang_12_0")]
1837     pub fn clang_Cursor_getVarDeclInitializer(cursor: CXCursor) -> CXCursor;
1838     /// Only available on `libclang` 3.9 and later.
1839     #[cfg(feature = "clang_3_9")]
1840     pub fn clang_Cursor_hasAttrs(cursor: CXCursor) -> c_uint;
1841     /// Only available on `libclang` 12.0 and later.
1842     #[cfg(feature = "clang_12_0")]
1843     pub fn clang_Cursor_hasVarDeclGlobalStorage(cursor: CXCursor) -> c_uint;
1844     /// Only available on `libclang` 12.0 and later.
1845     #[cfg(feature = "clang_12_0")]
1846     pub fn clang_Cursor_hasVarDeclExternalStorage(cursor: CXCursor) -> c_uint;
1847     /// Only available on `libclang` 3.7 and later.
1848     #[cfg(feature = "clang_3_7")]
1849     pub fn clang_Cursor_isAnonymous(cursor: CXCursor) -> c_uint;
1850     /// Only available on `libclang` 9.0 and later.
1851     #[cfg(feature = "clang_9_0")]
1852     pub fn clang_Cursor_isAnonymousRecordDecl(cursor: CXCursor) -> c_uint;
1853     pub fn clang_Cursor_isBitField(cursor: CXCursor) -> c_uint;
1854     pub fn clang_Cursor_isDynamicCall(cursor: CXCursor) -> c_int;
1855     /// Only available on `libclang` 5.0 and later.
1856     #[cfg(feature = "clang_5_0")]
1857     pub fn clang_Cursor_isExternalSymbol(cursor: CXCursor, language: *mut CXString, from: *mut CXString, generated: *mut c_uint) -> c_uint;
1858     /// Only available on `libclang` 3.9 and later.
1859     #[cfg(feature = "clang_3_9")]
1860     pub fn clang_Cursor_isFunctionInlined(cursor: CXCursor) -> c_uint;
1861     /// Only available on `libclang` 9.0 and later.
1862     #[cfg(feature = "clang_9_0")]
1863     pub fn clang_Cursor_isInlineNamespace(cursor: CXCursor) -> c_uint;
1864     /// Only available on `libclang` 3.9 and later.
1865     #[cfg(feature = "clang_3_9")]
1866     pub fn clang_Cursor_isMacroBuiltin(cursor: CXCursor) -> c_uint;
1867     /// Only available on `libclang` 3.9 and later.
1868     #[cfg(feature = "clang_3_9")]
1869     pub fn clang_Cursor_isMacroFunctionLike(cursor: CXCursor) -> c_uint;
1870     pub fn clang_Cursor_isNull(cursor: CXCursor) -> c_int;
1871     pub fn clang_Cursor_isObjCOptional(cursor: CXCursor) -> c_uint;
1872     pub fn clang_Cursor_isVariadic(cursor: CXCursor) -> c_uint;
1873     /// Only available on `libclang` 5.0 and later.
1874     #[cfg(feature = "clang_5_0")]
1875     pub fn clang_EnumDecl_isScoped(cursor: CXCursor) -> c_uint;
1876     /// Only available on `libclang` 3.9 and later.
1877     #[cfg(feature = "clang_3_9")]
1878     pub fn clang_EvalResult_dispose(result: CXEvalResult);
1879     /// Only available on `libclang` 3.9 and later.
1880     #[cfg(feature = "clang_3_9")]
1881     pub fn clang_EvalResult_getAsDouble(result: CXEvalResult) -> libc::c_double;
1882     /// Only available on `libclang` 3.9 and later.
1883     #[cfg(feature = "clang_3_9")]
1884     pub fn clang_EvalResult_getAsInt(result: CXEvalResult) -> c_int;
1885     /// Only available on `libclang` 4.0 and later.
1886     #[cfg(feature = "clang_4_0")]
1887     pub fn clang_EvalResult_getAsLongLong(result: CXEvalResult) -> c_longlong;
1888     /// Only available on `libclang` 3.9 and later.
1889     #[cfg(feature = "clang_3_9")]
1890     pub fn clang_EvalResult_getAsStr(result: CXEvalResult) -> *const c_char;
1891     /// Only available on `libclang` 4.0 and later.
1892     #[cfg(feature = "clang_4_0")]
1893     pub fn clang_EvalResult_getAsUnsigned(result: CXEvalResult) -> c_ulonglong;
1894     /// Only available on `libclang` 3.9 and later.
1895     #[cfg(feature = "clang_3_9")]
1896     pub fn clang_EvalResult_getKind(result: CXEvalResult) -> CXEvalResultKind;
1897     /// Only available on `libclang` 4.0 and later.
1898     #[cfg(feature = "clang_4_0")]
1899     pub fn clang_EvalResult_isUnsignedInt(result: CXEvalResult) -> c_uint;
1900     /// Only available on `libclang` 3.6 and later.
1901     #[cfg(feature = "clang_3_6")]
1902     pub fn clang_File_isEqual(left: CXFile, right: CXFile) -> c_int;
1903     /// Only available on `libclang` 7.0 and later.
1904     #[cfg(feature = "clang_7_0")]
1905     pub fn clang_File_tryGetRealPathName(file: CXFile) -> CXString;
1906     pub fn clang_IndexAction_create(index: CXIndex) -> CXIndexAction;
1907     pub fn clang_IndexAction_dispose(index: CXIndexAction);
1908     pub fn clang_Location_isFromMainFile(location: CXSourceLocation) -> c_int;
1909     pub fn clang_Location_isInSystemHeader(location: CXSourceLocation) -> c_int;
1910     pub fn clang_Module_getASTFile(module: CXModule) -> CXFile;
1911     pub fn clang_Module_getFullName(module: CXModule) -> CXString;
1912     pub fn clang_Module_getName(module: CXModule) -> CXString;
1913     pub fn clang_Module_getNumTopLevelHeaders(tu: CXTranslationUnit, module: CXModule) -> c_uint;
1914     pub fn clang_Module_getParent(module: CXModule) -> CXModule;
1915     pub fn clang_Module_getTopLevelHeader(tu: CXTranslationUnit, module: CXModule, index: c_uint) -> CXFile;
1916     pub fn clang_Module_isSystem(module: CXModule) -> c_int;
1917     /// Only available on `libclang` 7.0 and later.
1918     #[cfg(feature = "clang_7_0")]
1919     pub fn clang_PrintingPolicy_dispose(policy: CXPrintingPolicy);
1920     /// Only available on `libclang` 7.0 and later.
1921     #[cfg(feature = "clang_7_0")]
1922     pub fn clang_PrintingPolicy_getProperty(policy: CXPrintingPolicy, property: CXPrintingPolicyProperty) -> c_uint;
1923     /// Only available on `libclang` 7.0 and later.
1924     #[cfg(feature = "clang_7_0")]
1925     pub fn clang_PrintingPolicy_setProperty(policy: CXPrintingPolicy, property: CXPrintingPolicyProperty, value: c_uint);
1926     pub fn clang_Range_isNull(range: CXSourceRange) -> c_int;
1927     /// Only available on `libclang` 5.0 and later.
1928     #[cfg(feature = "clang_5_0")]
1929     pub fn clang_TargetInfo_dispose(info: CXTargetInfo);
1930     /// Only available on `libclang` 5.0 and later.
1931     #[cfg(feature = "clang_5_0")]
1932     pub fn clang_TargetInfo_getPointerWidth(info: CXTargetInfo) -> c_int;
1933     /// Only available on `libclang` 5.0 and later.
1934     #[cfg(feature = "clang_5_0")]
1935     pub fn clang_TargetInfo_getTriple(info: CXTargetInfo) -> CXString;
1936     pub fn clang_Type_getAlignOf(type_: CXType) -> c_longlong;
1937     pub fn clang_Type_getCXXRefQualifier(type_: CXType) -> CXRefQualifierKind;
1938     pub fn clang_Type_getClassType(type_: CXType) -> CXType;
1939     /// Only available on `libclang` 8.0 and later.
1940     #[cfg(feature = "clang_8_0")]
1941     pub fn clang_Type_getModifiedType(type_: CXType) -> CXType;
1942     /// Only available on `libclang` 3.9 and later.
1943     #[cfg(feature = "clang_3_9")]
1944     pub fn clang_Type_getNamedType(type_: CXType) -> CXType;
1945     /// Only available on `libclang` 8.0 and later.
1946     #[cfg(feature = "clang_8_0")]
1947     pub fn clang_Type_getNullability(type_: CXType) -> CXTypeNullabilityKind;
1948     /// Only available on `libclang` 8.0 and later.
1949     #[cfg(feature = "clang_8_0")]
1950     pub fn clang_Type_getNumObjCProtocolRefs(type_: CXType) -> c_uint;
1951     /// Only available on `libclang` 8.0 and later.
1952     #[cfg(feature = "clang_8_0")]
1953     pub fn clang_Type_getNumObjCTypeArgs(type_: CXType) -> c_uint;
1954     pub fn clang_Type_getNumTemplateArguments(type_: CXType) -> c_int;
1955     /// Only available on `libclang` 3.9 and later.
1956     #[cfg(feature = "clang_3_9")]
1957     pub fn clang_Type_getObjCEncoding(type_: CXType) -> CXString;
1958     /// Only available on `libclang` 8.0 and later.
1959     #[cfg(feature = "clang_8_0")]
1960     pub fn clang_Type_getObjCObjectBaseType(type_: CXType) -> CXType;
1961     /// Only available on `libclang` 8.0 and later.
1962     #[cfg(feature = "clang_8_0")]
1963     pub fn clang_Type_getObjCProtocolDecl(type_: CXType, index: c_uint) -> CXCursor;
1964     /// Only available on `libclang` 8.0 and later.
1965     #[cfg(feature = "clang_8_0")]
1966     pub fn clang_Type_getObjCTypeArg(type_: CXType, index: c_uint) -> CXType;
1967     pub fn clang_Type_getOffsetOf(type_: CXType, field: *const c_char) -> c_longlong;
1968     pub fn clang_Type_getSizeOf(type_: CXType) -> c_longlong;
1969     pub fn clang_Type_getTemplateArgumentAsType(type_: CXType, index: c_uint) -> CXType;
1970     /// Only available on `libclang` 11.0 and later.
1971     #[cfg(feature = "clang_11_0")]
1972     pub fn clang_Type_getValueType(type_: CXType) -> CXType;
1973     /// Only available on `libclang` 5.0 and later.
1974     #[cfg(feature = "clang_5_0")]
1975     pub fn clang_Type_isTransparentTagTypedef(type_: CXType) -> c_uint;
1976     /// Only available on `libclang` 3.7 and later.
1977     #[cfg(feature = "clang_3_7")]
1978     pub fn clang_Type_visitFields(type_: CXType, visitor: CXFieldVisitor, data: CXClientData) -> CXVisitorResult;
1979     pub fn clang_annotateTokens(tu: CXTranslationUnit, tokens: *mut CXToken, n_tokens: c_uint, cursors: *mut CXCursor);
1980     pub fn clang_codeCompleteAt(tu: CXTranslationUnit, file: *const c_char, line: c_uint, column: c_uint, unsaved: *mut CXUnsavedFile, n_unsaved: c_uint, flags: CXCodeComplete_Flags) -> *mut CXCodeCompleteResults;
1981     pub fn clang_codeCompleteGetContainerKind(results: *mut CXCodeCompleteResults, incomplete: *mut c_uint) -> CXCursorKind;
1982     pub fn clang_codeCompleteGetContainerUSR(results: *mut CXCodeCompleteResults) -> CXString;
1983     pub fn clang_codeCompleteGetContexts(results: *mut CXCodeCompleteResults) -> c_ulonglong;
1984     pub fn clang_codeCompleteGetDiagnostic(results: *mut CXCodeCompleteResults, index: c_uint) -> CXDiagnostic;
1985     pub fn clang_codeCompleteGetNumDiagnostics(results: *mut CXCodeCompleteResults) -> c_uint;
1986     pub fn clang_codeCompleteGetObjCSelector(results: *mut CXCodeCompleteResults) -> CXString;
1987     pub fn clang_constructUSR_ObjCCategory(class: *const c_char, category: *const c_char) -> CXString;
1988     pub fn clang_constructUSR_ObjCClass(class: *const c_char) -> CXString;
1989     pub fn clang_constructUSR_ObjCIvar(name: *const c_char, usr: CXString) -> CXString;
1990     pub fn clang_constructUSR_ObjCMethod(name: *const c_char, instance: c_uint, usr: CXString) -> CXString;
1991     pub fn clang_constructUSR_ObjCProperty(property: *const c_char, usr: CXString) -> CXString;
1992     pub fn clang_constructUSR_ObjCProtocol(protocol: *const c_char) -> CXString;
1993     pub fn clang_createCXCursorSet() -> CXCursorSet;
1994     pub fn clang_createIndex(exclude: c_int, display: c_int) -> CXIndex;
1995     pub fn clang_createTranslationUnit(index: CXIndex, file: *const c_char) -> CXTranslationUnit;
1996     pub fn clang_createTranslationUnit2(index: CXIndex, file: *const c_char, tu: *mut CXTranslationUnit) -> CXErrorCode;
1997     pub fn clang_createTranslationUnitFromSourceFile(index: CXIndex, file: *const c_char, n_arguments: c_int, arguments: *const *const c_char, n_unsaved: c_uint, unsaved: *mut CXUnsavedFile) -> CXTranslationUnit;
1998     pub fn clang_defaultCodeCompleteOptions() -> CXCodeComplete_Flags;
1999     pub fn clang_defaultDiagnosticDisplayOptions() -> CXDiagnosticDisplayOptions;
2000     pub fn clang_defaultEditingTranslationUnitOptions() -> CXTranslationUnit_Flags;
2001     pub fn clang_defaultReparseOptions(tu: CXTranslationUnit) -> CXReparse_Flags;
2002     pub fn clang_defaultSaveOptions(tu: CXTranslationUnit) -> CXSaveTranslationUnit_Flags;
2003     pub fn clang_disposeCXCursorSet(set: CXCursorSet);
2004     pub fn clang_disposeCXPlatformAvailability(availability: *mut CXPlatformAvailability);
2005     pub fn clang_disposeCXTUResourceUsage(usage: CXTUResourceUsage);
2006     pub fn clang_disposeCodeCompleteResults(results: *mut CXCodeCompleteResults);
2007     pub fn clang_disposeDiagnostic(diagnostic: CXDiagnostic);
2008     pub fn clang_disposeDiagnosticSet(diagnostic: CXDiagnosticSet);
2009     pub fn clang_disposeIndex(index: CXIndex);
2010     pub fn clang_disposeOverriddenCursors(cursors: *mut CXCursor);
2011     pub fn clang_disposeSourceRangeList(list: *mut CXSourceRangeList);
2012     pub fn clang_disposeString(string: CXString);
2013     /// Only available on `libclang` 3.8 and later.
2014     #[cfg(feature = "clang_3_8")]
2015     pub fn clang_disposeStringSet(set: *mut CXStringSet);
2016     pub fn clang_disposeTokens(tu: CXTranslationUnit, tokens: *mut CXToken, n_tokens: c_uint);
2017     pub fn clang_disposeTranslationUnit(tu: CXTranslationUnit);
2018     pub fn clang_enableStackTraces();
2019     pub fn clang_equalCursors(left: CXCursor, right: CXCursor) -> c_uint;
2020     pub fn clang_equalLocations(left: CXSourceLocation, right: CXSourceLocation) -> c_uint;
2021     pub fn clang_equalRanges(left: CXSourceRange, right: CXSourceRange) -> c_uint;
2022     pub fn clang_equalTypes(left: CXType, right: CXType) -> c_uint;
2023     pub fn clang_executeOnThread(function: extern fn(*mut c_void), data: *mut c_void, stack: c_uint);
2024     pub fn clang_findIncludesInFile(tu: CXTranslationUnit, file: CXFile, cursor: CXCursorAndRangeVisitor) -> CXResult;
2025     pub fn clang_findReferencesInFile(cursor: CXCursor, file: CXFile, visitor: CXCursorAndRangeVisitor) -> CXResult;
2026     pub fn clang_formatDiagnostic(diagnostic: CXDiagnostic, flags: CXDiagnosticDisplayOptions) -> CXString;
2027     /// Only available on `libclang` 3.7 and later.
2028     #[cfg(feature = "clang_3_7")]
2029     pub fn clang_free(buffer: *mut c_void);
2030     /// Only available on `libclang` 5.0 and later.
2031     #[cfg(feature = "clang_5_0")]
2032     pub fn clang_getAddressSpace(type_: CXType) -> c_uint;
2033     /// Only available on `libclang` 4.0 and later.
2034     #[cfg(feature = "clang_4_0")]
2035     pub fn clang_getAllSkippedRanges(tu: CXTranslationUnit) -> *mut CXSourceRangeList;
2036     pub fn clang_getArgType(type_: CXType, index: c_uint) -> CXType;
2037     pub fn clang_getArrayElementType(type_: CXType) -> CXType;
2038     pub fn clang_getArraySize(type_: CXType) -> c_longlong;
2039     pub fn clang_getCString(string: CXString) -> *const c_char;
2040     pub fn clang_getCXTUResourceUsage(tu: CXTranslationUnit) -> CXTUResourceUsage;
2041     pub fn clang_getCXXAccessSpecifier(cursor: CXCursor) -> CX_CXXAccessSpecifier;
2042     pub fn clang_getCanonicalCursor(cursor: CXCursor) -> CXCursor;
2043     pub fn clang_getCanonicalType(type_: CXType) -> CXType;
2044     pub fn clang_getChildDiagnostics(diagnostic: CXDiagnostic) -> CXDiagnosticSet;
2045     pub fn clang_getClangVersion() -> CXString;
2046     pub fn clang_getCompletionAnnotation(string: CXCompletionString, index: c_uint) -> CXString;
2047     pub fn clang_getCompletionAvailability(string: CXCompletionString) -> CXAvailabilityKind;
2048     pub fn clang_getCompletionBriefComment(string: CXCompletionString) -> CXString;
2049     pub fn clang_getCompletionChunkCompletionString(string: CXCompletionString, index: c_uint) -> CXCompletionString;
2050     pub fn clang_getCompletionChunkKind(string: CXCompletionString, index: c_uint) -> CXCompletionChunkKind;
2051     pub fn clang_getCompletionChunkText(string: CXCompletionString, index: c_uint) -> CXString;
2052     /// Only available on `libclang` 7.0 and later.
2053     #[cfg(feature = "clang_7_0")]
2054     pub fn clang_getCompletionFixIt(results: *mut CXCodeCompleteResults, completion_index: c_uint, fixit_index: c_uint, range: *mut CXSourceRange) -> CXString;
2055     pub fn clang_getCompletionNumAnnotations(string: CXCompletionString) -> c_uint;
2056     /// Only available on `libclang` 7.0 and later.
2057     #[cfg(feature = "clang_7_0")]
2058     pub fn clang_getCompletionNumFixIts(results: *mut CXCodeCompleteResults, completion_index: c_uint) -> c_uint;
2059     pub fn clang_getCompletionParent(string: CXCompletionString, kind: *mut CXCursorKind) -> CXString;
2060     pub fn clang_getCompletionPriority(string: CXCompletionString) -> c_uint;
2061     pub fn clang_getCursor(tu: CXTranslationUnit, location: CXSourceLocation) -> CXCursor;
2062     pub fn clang_getCursorAvailability(cursor: CXCursor) -> CXAvailabilityKind;
2063     pub fn clang_getCursorCompletionString(cursor: CXCursor) -> CXCompletionString;
2064     pub fn clang_getCursorDefinition(cursor: CXCursor) -> CXCursor;
2065     pub fn clang_getCursorDisplayName(cursor: CXCursor) -> CXString;
2066     /// Only available on `libclang` 5.0 and later.
2067     #[cfg(feature = "clang_5_0")]
2068     pub fn clang_getCursorExceptionSpecificationType(cursor: CXCursor) -> CXCursor_ExceptionSpecificationKind;
2069     pub fn clang_getCursorExtent(cursor: CXCursor) -> CXSourceRange;
2070     pub fn clang_getCursorKind(cursor: CXCursor) -> CXCursorKind;
2071     pub fn clang_getCursorKindSpelling(kind: CXCursorKind) -> CXString;
2072     pub fn clang_getCursorLanguage(cursor: CXCursor) -> CXLanguageKind;
2073     pub fn clang_getCursorLexicalParent(cursor: CXCursor) -> CXCursor;
2074     pub fn clang_getCursorLinkage(cursor: CXCursor) -> CXLinkageKind;
2075     pub fn clang_getCursorLocation(cursor: CXCursor) -> CXSourceLocation;
2076     pub fn clang_getCursorPlatformAvailability(cursor: CXCursor, deprecated: *mut c_int, deprecated_message: *mut CXString, unavailable: *mut c_int, unavailable_message: *mut CXString, availability: *mut CXPlatformAvailability, n_availability: c_int) -> c_int;
2077     /// Only available on `libclang` 7.0 and later.
2078     #[cfg(feature = "clang_7_0")]
2079     pub fn clang_getCursorPrettyPrinted(cursor: CXCursor, policy: CXPrintingPolicy) -> CXString;
2080     /// Only available on `libclang` 7.0 and later.
2081     #[cfg(feature = "clang_7_0")]
2082     pub fn clang_getCursorPrintingPolicy(cursor: CXCursor) -> CXPrintingPolicy;
2083     pub fn clang_getCursorReferenceNameRange(cursor: CXCursor, flags: CXNameRefFlags, index: c_uint) -> CXSourceRange;
2084     pub fn clang_getCursorReferenced(cursor: CXCursor) -> CXCursor;
2085     pub fn clang_getCursorResultType(cursor: CXCursor) -> CXType;
2086     pub fn clang_getCursorSemanticParent(cursor: CXCursor) -> CXCursor;
2087     pub fn clang_getCursorSpelling(cursor: CXCursor) -> CXString;
2088     /// Only available on `libclang` 6.0 and later.
2089     #[cfg(feature = "clang_6_0")]
2090     pub fn clang_getCursorTLSKind(cursor: CXCursor) -> CXTLSKind;
2091     pub fn clang_getCursorType(cursor: CXCursor) -> CXType;
2092     pub fn clang_getCursorUSR(cursor: CXCursor) -> CXString;
2093     /// Only available on `libclang` 3.8 and later.
2094     #[cfg(feature = "clang_3_8")]
2095     pub fn clang_getCursorVisibility(cursor: CXCursor) -> CXVisibilityKind;
2096     pub fn clang_getDeclObjCTypeEncoding(cursor: CXCursor) -> CXString;
2097     pub fn clang_getDefinitionSpellingAndExtent(cursor: CXCursor, start: *mut *const c_char, end: *mut *const c_char, start_line: *mut c_uint, start_column: *mut c_uint, end_line: *mut c_uint, end_column: *mut c_uint);
2098     pub fn clang_getDiagnostic(tu: CXTranslationUnit, index: c_uint) -> CXDiagnostic;
2099     pub fn clang_getDiagnosticCategory(diagnostic: CXDiagnostic) -> c_uint;
2100     pub fn clang_getDiagnosticCategoryName(category: c_uint) -> CXString;
2101     pub fn clang_getDiagnosticCategoryText(diagnostic: CXDiagnostic) -> CXString;
2102     pub fn clang_getDiagnosticFixIt(diagnostic: CXDiagnostic, index: c_uint, range: *mut CXSourceRange) -> CXString;
2103     pub fn clang_getDiagnosticInSet(diagnostic: CXDiagnosticSet, index: c_uint) -> CXDiagnostic;
2104     pub fn clang_getDiagnosticLocation(diagnostic: CXDiagnostic) -> CXSourceLocation;
2105     pub fn clang_getDiagnosticNumFixIts(diagnostic: CXDiagnostic) -> c_uint;
2106     pub fn clang_getDiagnosticNumRanges(diagnostic: CXDiagnostic) -> c_uint;
2107     pub fn clang_getDiagnosticOption(diagnostic: CXDiagnostic, option: *mut CXString) -> CXString;
2108     pub fn clang_getDiagnosticRange(diagnostic: CXDiagnostic, index: c_uint) -> CXSourceRange;
2109     pub fn clang_getDiagnosticSetFromTU(tu: CXTranslationUnit) -> CXDiagnosticSet;
2110     pub fn clang_getDiagnosticSeverity(diagnostic: CXDiagnostic) -> CXDiagnosticSeverity;
2111     pub fn clang_getDiagnosticSpelling(diagnostic: CXDiagnostic) -> CXString;
2112     pub fn clang_getElementType(type_: CXType) -> CXType;
2113     pub fn clang_getEnumConstantDeclUnsignedValue(cursor: CXCursor) -> c_ulonglong;
2114     pub fn clang_getEnumConstantDeclValue(cursor: CXCursor) -> c_longlong;
2115     pub fn clang_getEnumDeclIntegerType(cursor: CXCursor) -> CXType;
2116     /// Only available on `libclang` 5.0 and later.
2117     #[cfg(feature = "clang_5_0")]
2118     pub fn clang_getExceptionSpecificationType(type_: CXType) -> CXCursor_ExceptionSpecificationKind;
2119     pub fn clang_getExpansionLocation(location: CXSourceLocation, file: *mut CXFile, line: *mut c_uint, column: *mut c_uint, offset: *mut c_uint);
2120     pub fn clang_getFieldDeclBitWidth(cursor: CXCursor) -> c_int;
2121     pub fn clang_getFile(tu: CXTranslationUnit, file: *const c_char) -> CXFile;
2122     /// Only available on `libclang` 6.0 and later.
2123     #[cfg(feature = "clang_6_0")]
2124     pub fn clang_getFileContents(tu: CXTranslationUnit, file: CXFile, size: *mut size_t) -> *const c_char;
2125     pub fn clang_getFileLocation(location: CXSourceLocation, file: *mut CXFile, line: *mut c_uint, column: *mut c_uint, offset: *mut c_uint);
2126     pub fn clang_getFileName(file: CXFile) -> CXString;
2127     pub fn clang_getFileTime(file: CXFile) -> time_t;
2128     pub fn clang_getFileUniqueID(file: CXFile, id: *mut CXFileUniqueID) -> c_int;
2129     pub fn clang_getFunctionTypeCallingConv(type_: CXType) -> CXCallingConv;
2130     pub fn clang_getIBOutletCollectionType(cursor: CXCursor) -> CXType;
2131     pub fn clang_getIncludedFile(cursor: CXCursor) -> CXFile;
2132     pub fn clang_getInclusions(tu: CXTranslationUnit, visitor: CXInclusionVisitor, data: CXClientData);
2133     pub fn clang_getInstantiationLocation(location: CXSourceLocation, file: *mut CXFile, line: *mut c_uint, column: *mut c_uint, offset: *mut c_uint);
2134     pub fn clang_getLocation(tu: CXTranslationUnit, file: CXFile, line: c_uint, column: c_uint) -> CXSourceLocation;
2135     pub fn clang_getLocationForOffset(tu: CXTranslationUnit, file: CXFile, offset: c_uint) -> CXSourceLocation;
2136     pub fn clang_getModuleForFile(tu: CXTranslationUnit, file: CXFile) -> CXModule;
2137     pub fn clang_getNullCursor() -> CXCursor;
2138     pub fn clang_getNullLocation() -> CXSourceLocation;
2139     pub fn clang_getNullRange() -> CXSourceRange;
2140     pub fn clang_getNumArgTypes(type_: CXType) -> c_int;
2141     pub fn clang_getNumCompletionChunks(string: CXCompletionString) -> c_uint;
2142     pub fn clang_getNumDiagnostics(tu: CXTranslationUnit) -> c_uint;
2143     pub fn clang_getNumDiagnosticsInSet(diagnostic: CXDiagnosticSet) -> c_uint;
2144     pub fn clang_getNumElements(type_: CXType) -> c_longlong;
2145     pub fn clang_getNumOverloadedDecls(cursor: CXCursor) -> c_uint;
2146     pub fn clang_getOverloadedDecl(cursor: CXCursor, index: c_uint) -> CXCursor;
2147     pub fn clang_getOverriddenCursors(cursor: CXCursor, cursors: *mut *mut CXCursor, n_cursors: *mut c_uint);
2148     pub fn clang_getPointeeType(type_: CXType) -> CXType;
2149     pub fn clang_getPresumedLocation(location: CXSourceLocation, file: *mut CXString, line: *mut c_uint, column: *mut c_uint);
2150     pub fn clang_getRange(start: CXSourceLocation, end: CXSourceLocation) -> CXSourceRange;
2151     pub fn clang_getRangeEnd(range: CXSourceRange) -> CXSourceLocation;
2152     pub fn clang_getRangeStart(range: CXSourceRange) -> CXSourceLocation;
2153     pub fn clang_getRemappings(file: *const c_char) -> CXRemapping;
2154     pub fn clang_getRemappingsFromFileList(files: *mut *const c_char, n_files: c_uint) -> CXRemapping;
2155     pub fn clang_getResultType(type_: CXType) -> CXType;
2156     pub fn clang_getSkippedRanges(tu: CXTranslationUnit, file: CXFile) -> *mut CXSourceRangeList;
2157     pub fn clang_getSpecializedCursorTemplate(cursor: CXCursor) -> CXCursor;
2158     pub fn clang_getSpellingLocation(location: CXSourceLocation, file: *mut CXFile, line: *mut c_uint, column: *mut c_uint, offset: *mut c_uint);
2159     pub fn clang_getTUResourceUsageName(kind: CXTUResourceUsageKind) -> *const c_char;
2160     pub fn clang_getTemplateCursorKind(cursor: CXCursor) -> CXCursorKind;
2161     pub fn clang_getToken(tu: CXTranslationUnit, location: CXSourceLocation) -> *mut CXToken;
2162     pub fn clang_getTokenExtent(tu: CXTranslationUnit, token: CXToken) -> CXSourceRange;
2163     pub fn clang_getTokenKind(token: CXToken) -> CXTokenKind;
2164     pub fn clang_getTokenLocation(tu: CXTranslationUnit, token: CXToken) -> CXSourceLocation;
2165     pub fn clang_getTokenSpelling(tu: CXTranslationUnit, token: CXToken) -> CXString;
2166     pub fn clang_getTranslationUnitCursor(tu: CXTranslationUnit) -> CXCursor;
2167     pub fn clang_getTranslationUnitSpelling(tu: CXTranslationUnit) -> CXString;
2168     /// Only available on `libclang` 5.0 and later.
2169     #[cfg(feature = "clang_5_0")]
2170     pub fn clang_getTranslationUnitTargetInfo(tu: CXTranslationUnit) -> CXTargetInfo;
2171     /// Only available on `libclang` 16.0 and later.
2172     #[cfg(feature = "clang_16_0")]
2173     pub fn clang_getUnqualifiedType(type_: CXType) -> CXType;
2174     /// Only available on `libclang` 16.0 and later.
2175     #[cfg(feature = "clang_16_0")]
2176     pub fn clang_getNonReferenceType(type_: CXType) -> CXType;
2177     pub fn clang_getTypeDeclaration(type_: CXType) -> CXCursor;
2178     pub fn clang_getTypeKindSpelling(type_: CXTypeKind) -> CXString;
2179     pub fn clang_getTypeSpelling(type_: CXType) -> CXString;
2180     pub fn clang_getTypedefDeclUnderlyingType(cursor: CXCursor) -> CXType;
2181     /// Only available on `libclang` 5.0 and later.
2182     #[cfg(feature = "clang_5_0")]
2183     pub fn clang_getTypedefName(type_: CXType) -> CXString;
2184     pub fn clang_hashCursor(cursor: CXCursor) -> c_uint;
2185     pub fn clang_indexLoc_getCXSourceLocation(location: CXIdxLoc) -> CXSourceLocation;
2186     pub fn clang_indexLoc_getFileLocation(location: CXIdxLoc, index_file: *mut CXIdxClientFile, file: *mut CXFile, line: *mut c_uint, column: *mut c_uint, offset: *mut c_uint);
2187     pub fn clang_indexSourceFile(index: CXIndexAction, data: CXClientData, callbacks: *mut IndexerCallbacks, n_callbacks: c_uint, index_flags: CXIndexOptFlags, file: *const c_char, arguments: *const *const c_char, n_arguments: c_int, unsaved: *mut CXUnsavedFile, n_unsaved: c_uint, tu: *mut CXTranslationUnit, tu_flags: CXTranslationUnit_Flags) -> CXErrorCode;
2188     /// Only available on `libclang` 3.8 and later.
2189     #[cfg(feature = "clang_3_8")]
2190     pub fn clang_indexSourceFileFullArgv(index: CXIndexAction, data: CXClientData, callbacks: *mut IndexerCallbacks, n_callbacks: c_uint, index_flags: CXIndexOptFlags, file: *const c_char, arguments: *const *const c_char, n_arguments: c_int, unsaved: *mut CXUnsavedFile, n_unsaved: c_uint, tu: *mut CXTranslationUnit, tu_flags: CXTranslationUnit_Flags) -> CXErrorCode;
2191     pub fn clang_indexTranslationUnit(index: CXIndexAction, data: CXClientData, callbacks: *mut IndexerCallbacks, n_callbacks: c_uint, flags: CXIndexOptFlags, tu: CXTranslationUnit) -> c_int;
2192     pub fn clang_index_getCXXClassDeclInfo(info: *const CXIdxDeclInfo) -> *const CXIdxCXXClassDeclInfo;
2193     pub fn clang_index_getClientContainer(info: *const CXIdxContainerInfo) -> CXIdxClientContainer;
2194     pub fn clang_index_getClientEntity(info: *const CXIdxEntityInfo) -> CXIdxClientEntity;
2195     pub fn clang_index_getIBOutletCollectionAttrInfo(info: *const CXIdxAttrInfo) -> *const CXIdxIBOutletCollectionAttrInfo;
2196     pub fn clang_index_getObjCCategoryDeclInfo(info: *const CXIdxDeclInfo) -> *const CXIdxObjCCategoryDeclInfo;
2197     pub fn clang_index_getObjCContainerDeclInfo(info: *const CXIdxDeclInfo) -> *const CXIdxObjCContainerDeclInfo;
2198     pub fn clang_index_getObjCInterfaceDeclInfo(info: *const CXIdxDeclInfo) -> *const CXIdxObjCInterfaceDeclInfo;
2199     pub fn clang_index_getObjCPropertyDeclInfo(info: *const CXIdxDeclInfo) -> *const CXIdxObjCPropertyDeclInfo;
2200     pub fn clang_index_getObjCProtocolRefListInfo(info: *const CXIdxDeclInfo) -> *const CXIdxObjCProtocolRefListInfo;
2201     pub fn clang_index_isEntityObjCContainerKind(info: CXIdxEntityKind) -> c_int;
2202     pub fn clang_index_setClientContainer(info: *const CXIdxContainerInfo, container: CXIdxClientContainer);
2203     pub fn clang_index_setClientEntity(info: *const CXIdxEntityInfo, entity: CXIdxClientEntity);
2204     pub fn clang_isAttribute(kind: CXCursorKind) -> c_uint;
2205     pub fn clang_isConstQualifiedType(type_: CXType) -> c_uint;
2206     pub fn clang_isCursorDefinition(cursor: CXCursor) -> c_uint;
2207     pub fn clang_isDeclaration(kind: CXCursorKind) -> c_uint;
2208     pub fn clang_isExpression(kind: CXCursorKind) -> c_uint;
2209     pub fn clang_isFileMultipleIncludeGuarded(tu: CXTranslationUnit, file: CXFile) -> c_uint;
2210     pub fn clang_isFunctionTypeVariadic(type_: CXType) -> c_uint;
2211     pub fn clang_isInvalid(kind: CXCursorKind) -> c_uint;
2212     /// Only available on `libclang` 7.0 and later.
2213     #[cfg(feature = "clang_7_0")]
2214     pub fn clang_isInvalidDeclaration(cursor: CXCursor) -> c_uint;
2215     pub fn clang_isPODType(type_: CXType) -> c_uint;
2216     pub fn clang_isPreprocessing(kind: CXCursorKind) -> c_uint;
2217     pub fn clang_isReference(kind: CXCursorKind) -> c_uint;
2218     pub fn clang_isRestrictQualifiedType(type_: CXType) -> c_uint;
2219     pub fn clang_isStatement(kind: CXCursorKind) -> c_uint;
2220     pub fn clang_isTranslationUnit(kind: CXCursorKind) -> c_uint;
2221     pub fn clang_isUnexposed(kind: CXCursorKind) -> c_uint;
2222     pub fn clang_isVirtualBase(cursor: CXCursor) -> c_uint;
2223     pub fn clang_isVolatileQualifiedType(type_: CXType) -> c_uint;
2224     pub fn clang_loadDiagnostics(file: *const c_char, error: *mut CXLoadDiag_Error, message: *mut CXString) -> CXDiagnosticSet;
2225     pub fn clang_parseTranslationUnit(index: CXIndex, file: *const c_char, arguments: *const *const c_char, n_arguments: c_int, unsaved: *mut CXUnsavedFile, n_unsaved: c_uint, flags: CXTranslationUnit_Flags) -> CXTranslationUnit;
2226     pub fn clang_parseTranslationUnit2(index: CXIndex, file: *const c_char, arguments: *const *const c_char, n_arguments: c_int, unsaved: *mut CXUnsavedFile, n_unsaved: c_uint, flags: CXTranslationUnit_Flags, tu: *mut CXTranslationUnit) -> CXErrorCode;
2227     /// Only available on `libclang` 3.8 and later.
2228     #[cfg(feature = "clang_3_8")]
2229     pub fn clang_parseTranslationUnit2FullArgv(index: CXIndex, file: *const c_char, arguments: *const *const c_char, n_arguments: c_int, unsaved: *mut CXUnsavedFile, n_unsaved: c_uint, flags: CXTranslationUnit_Flags, tu: *mut CXTranslationUnit) -> CXErrorCode;
2230     pub fn clang_remap_dispose(remapping: CXRemapping);
2231     pub fn clang_remap_getFilenames(remapping: CXRemapping, index: c_uint, original: *mut CXString, transformed: *mut CXString);
2232     pub fn clang_remap_getNumFiles(remapping: CXRemapping) -> c_uint;
2233     pub fn clang_reparseTranslationUnit(tu: CXTranslationUnit, n_unsaved: c_uint, unsaved: *mut CXUnsavedFile, flags: CXReparse_Flags) -> CXErrorCode;
2234     pub fn clang_saveTranslationUnit(tu: CXTranslationUnit, file: *const c_char, options: CXSaveTranslationUnit_Flags) -> CXSaveError;
2235     pub fn clang_sortCodeCompletionResults(results: *mut CXCompletionResult, n_results: c_uint);
2236     /// Only available on `libclang` 5.0 and later.
2237     #[cfg(feature = "clang_5_0")]
2238     pub fn clang_suspendTranslationUnit(tu: CXTranslationUnit) -> c_uint;
2239     pub fn clang_toggleCrashRecovery(recovery: c_uint);
2240     pub fn clang_tokenize(tu: CXTranslationUnit, range: CXSourceRange, tokens: *mut *mut CXToken, n_tokens: *mut c_uint);
2241     pub fn clang_visitChildren(cursor: CXCursor, visitor: CXCursorVisitor, data: CXClientData) -> c_uint;
2242 
2243     // Documentation
2244     pub fn clang_BlockCommandComment_getArgText(comment: CXComment, index: c_uint) -> CXString;
2245     pub fn clang_BlockCommandComment_getCommandName(comment: CXComment) -> CXString;
2246     pub fn clang_BlockCommandComment_getNumArgs(comment: CXComment) -> c_uint;
2247     pub fn clang_BlockCommandComment_getParagraph(comment: CXComment) -> CXComment;
2248     pub fn clang_Comment_getChild(comment: CXComment, index: c_uint) -> CXComment;
2249     pub fn clang_Comment_getKind(comment: CXComment) -> CXCommentKind;
2250     pub fn clang_Comment_getNumChildren(comment: CXComment) -> c_uint;
2251     pub fn clang_Comment_isWhitespace(comment: CXComment) -> c_uint;
2252     pub fn clang_Cursor_getParsedComment(C: CXCursor) -> CXComment;
2253     pub fn clang_FullComment_getAsHTML(comment: CXComment) -> CXString;
2254     pub fn clang_FullComment_getAsXML(comment: CXComment) -> CXString;
2255     pub fn clang_HTMLStartTag_getAttrName(comment: CXComment, index: c_uint) -> CXString;
2256     pub fn clang_HTMLStartTag_getAttrValue(comment: CXComment, index: c_uint) -> CXString;
2257     pub fn clang_HTMLStartTag_getNumAttrs(comment: CXComment) -> c_uint;
2258     pub fn clang_HTMLStartTagComment_isSelfClosing(comment: CXComment) -> c_uint;
2259     pub fn clang_HTMLTagComment_getAsString(comment: CXComment) -> CXString;
2260     pub fn clang_HTMLTagComment_getTagName(comment: CXComment) -> CXString;
2261     pub fn clang_InlineCommandComment_getArgText(comment: CXComment, index: c_uint) -> CXString;
2262     pub fn clang_InlineCommandComment_getCommandName(comment: CXComment) -> CXString;
2263     pub fn clang_InlineCommandComment_getNumArgs(comment: CXComment) -> c_uint;
2264     pub fn clang_InlineCommandComment_getRenderKind(comment: CXComment) -> CXCommentInlineCommandRenderKind;
2265     pub fn clang_InlineContentComment_hasTrailingNewline(comment: CXComment) -> c_uint;
2266     pub fn clang_ParamCommandComment_getDirection(comment: CXComment) -> CXCommentParamPassDirection;
2267     pub fn clang_ParamCommandComment_getParamIndex(comment: CXComment) -> c_uint;
2268     pub fn clang_ParamCommandComment_getParamName(comment: CXComment) -> CXString;
2269     pub fn clang_ParamCommandComment_isDirectionExplicit(comment: CXComment) -> c_uint;
2270     pub fn clang_ParamCommandComment_isParamIndexValid(comment: CXComment) -> c_uint;
2271     pub fn clang_TextComment_getText(comment: CXComment) -> CXString;
2272     pub fn clang_TParamCommandComment_getDepth(comment: CXComment) -> c_uint;
2273     pub fn clang_TParamCommandComment_getIndex(comment: CXComment, depth: c_uint) -> c_uint;
2274     pub fn clang_TParamCommandComment_getParamName(comment: CXComment) -> CXString;
2275     pub fn clang_TParamCommandComment_isParamPositionValid(comment: CXComment) -> c_uint;
2276     pub fn clang_VerbatimBlockLineComment_getText(comment: CXComment) -> CXString;
2277     pub fn clang_VerbatimLineComment_getText(comment: CXComment) -> CXString;
2278 }
2279