zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

blob 8a8d794e (61836B) - Raw


      1 const std = @import("std");
      2 pub const builtin = @import("builtin");
      3 
      4 pub const SourceLocation = extern struct {
      5     ID: c_uint,
      6 
      7     pub const eq = ZigClangSourceLocation_eq;
      8     extern fn ZigClangSourceLocation_eq(a: SourceLocation, b: SourceLocation) bool;
      9 };
     10 
     11 pub const QualType = extern struct {
     12     ptr: ?*c_void,
     13 
     14     pub const getCanonicalType = ZigClangQualType_getCanonicalType;
     15     extern fn ZigClangQualType_getCanonicalType(QualType) QualType;
     16 
     17     pub const getTypePtr = ZigClangQualType_getTypePtr;
     18     extern fn ZigClangQualType_getTypePtr(QualType) *const Type;
     19 
     20     pub const getTypeClass = ZigClangQualType_getTypeClass;
     21     extern fn ZigClangQualType_getTypeClass(QualType) TypeClass;
     22 
     23     pub const addConst = ZigClangQualType_addConst;
     24     extern fn ZigClangQualType_addConst(*QualType) void;
     25 
     26     pub const eq = ZigClangQualType_eq;
     27     extern fn ZigClangQualType_eq(QualType, arg1: QualType) bool;
     28 
     29     pub const isConstQualified = ZigClangQualType_isConstQualified;
     30     extern fn ZigClangQualType_isConstQualified(QualType) bool;
     31 
     32     pub const isVolatileQualified = ZigClangQualType_isVolatileQualified;
     33     extern fn ZigClangQualType_isVolatileQualified(QualType) bool;
     34 
     35     pub const isRestrictQualified = ZigClangQualType_isRestrictQualified;
     36     extern fn ZigClangQualType_isRestrictQualified(QualType) bool;
     37 };
     38 
     39 pub const APValueLValueBase = extern struct {
     40     Ptr: ?*c_void,
     41     CallIndex: c_uint,
     42     Version: c_uint,
     43 
     44     pub const dyn_cast_Expr = ZigClangAPValueLValueBase_dyn_cast_Expr;
     45     extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(APValueLValueBase) ?*const Expr;
     46 };
     47 
     48 pub const APValueKind = enum(c_int) {
     49     None,
     50     Indeterminate,
     51     Int,
     52     Float,
     53     FixedPoint,
     54     ComplexInt,
     55     ComplexFloat,
     56     LValue,
     57     Vector,
     58     Array,
     59     Struct,
     60     Union,
     61     MemberPointer,
     62     AddrLabelDiff,
     63 };
     64 
     65 pub const APValue = extern struct {
     66     Kind: APValueKind,
     67     Data: if (builtin.os.tag == .windows and builtin.abi == .msvc) [52]u8 else [68]u8,
     68 
     69     pub const getKind = ZigClangAPValue_getKind;
     70     extern fn ZigClangAPValue_getKind(*const APValue) APValueKind;
     71 
     72     pub const getInt = ZigClangAPValue_getInt;
     73     extern fn ZigClangAPValue_getInt(*const APValue) *const APSInt;
     74 
     75     pub const getArrayInitializedElts = ZigClangAPValue_getArrayInitializedElts;
     76     extern fn ZigClangAPValue_getArrayInitializedElts(*const APValue) c_uint;
     77 
     78     pub const getArraySize = ZigClangAPValue_getArraySize;
     79     extern fn ZigClangAPValue_getArraySize(*const APValue) c_uint;
     80 
     81     pub const getLValueBase = ZigClangAPValue_getLValueBase;
     82     extern fn ZigClangAPValue_getLValueBase(*const APValue) APValueLValueBase;
     83 };
     84 
     85 pub const ExprEvalResult = extern struct {
     86     HasSideEffects: bool,
     87     HasUndefinedBehavior: bool,
     88     SmallVectorImpl: ?*c_void,
     89     Val: APValue,
     90 };
     91 
     92 pub const AbstractConditionalOperator = opaque {
     93     pub const getCond = ZigClangAbstractConditionalOperator_getCond;
     94     extern fn ZigClangAbstractConditionalOperator_getCond(*const AbstractConditionalOperator) *const Expr;
     95 
     96     pub const getTrueExpr = ZigClangAbstractConditionalOperator_getTrueExpr;
     97     extern fn ZigClangAbstractConditionalOperator_getTrueExpr(*const AbstractConditionalOperator) *const Expr;
     98 
     99     pub const getFalseExpr = ZigClangAbstractConditionalOperator_getFalseExpr;
    100     extern fn ZigClangAbstractConditionalOperator_getFalseExpr(*const AbstractConditionalOperator) *const Expr;
    101 };
    102 
    103 pub const APFloat = opaque {
    104     pub const toString = ZigClangAPFloat_toString;
    105     extern fn ZigClangAPFloat_toString(*const APFloat, precision: c_uint, maxPadding: c_uint, truncateZero: bool) [*:0]const u8;
    106 };
    107 
    108 pub const APFloatBaseSemantics = enum(c_int) {
    109     IEEEhalf,
    110     BFloat,
    111     IEEEsingle,
    112     IEEEdouble,
    113     x86DoubleExtended,
    114     IEEEquad,
    115     PPCDoubleDouble,
    116 };
    117 
    118 pub const APInt = opaque {
    119     pub fn getLimitedValue(self: *const APInt, comptime T: type) T {
    120         return @truncate(T, ZigClangAPInt_getLimitedValue(self, std.math.maxInt(T)));
    121     }
    122     extern fn ZigClangAPInt_getLimitedValue(*const APInt, limit: u64) u64;
    123 };
    124 
    125 pub const APSInt = opaque {
    126     pub const isSigned = ZigClangAPSInt_isSigned;
    127     extern fn ZigClangAPSInt_isSigned(*const APSInt) bool;
    128 
    129     pub const isNegative = ZigClangAPSInt_isNegative;
    130     extern fn ZigClangAPSInt_isNegative(*const APSInt) bool;
    131 
    132     pub const negate = ZigClangAPSInt_negate;
    133     extern fn ZigClangAPSInt_negate(*const APSInt) *const APSInt;
    134 
    135     pub const free = ZigClangAPSInt_free;
    136     extern fn ZigClangAPSInt_free(*const APSInt) void;
    137 
    138     pub const getRawData = ZigClangAPSInt_getRawData;
    139     extern fn ZigClangAPSInt_getRawData(*const APSInt) [*:0]const u64;
    140 
    141     pub const getNumWords = ZigClangAPSInt_getNumWords;
    142     extern fn ZigClangAPSInt_getNumWords(*const APSInt) c_uint;
    143 
    144     pub const lessThanEqual = ZigClangAPSInt_lessThanEqual;
    145     extern fn ZigClangAPSInt_lessThanEqual(*const APSInt, rhs: u64) bool;
    146 };
    147 
    148 pub const ASTContext = opaque {
    149     pub const getPointerType = ZigClangASTContext_getPointerType;
    150     extern fn ZigClangASTContext_getPointerType(*const ASTContext, T: QualType) QualType;
    151 };
    152 
    153 pub const ASTUnit = opaque {
    154     pub const delete = ZigClangASTUnit_delete;
    155     extern fn ZigClangASTUnit_delete(*ASTUnit) void;
    156 
    157     pub const getASTContext = ZigClangASTUnit_getASTContext;
    158     extern fn ZigClangASTUnit_getASTContext(*ASTUnit) *ASTContext;
    159 
    160     pub const getSourceManager = ZigClangASTUnit_getSourceManager;
    161     extern fn ZigClangASTUnit_getSourceManager(*ASTUnit) *SourceManager;
    162 
    163     pub const visitLocalTopLevelDecls = ZigClangASTUnit_visitLocalTopLevelDecls;
    164     extern fn ZigClangASTUnit_visitLocalTopLevelDecls(*ASTUnit, context: ?*c_void, Fn: ?fn (?*c_void, *const Decl) callconv(.C) bool) bool;
    165 
    166     pub const getLocalPreprocessingEntities_begin = ZigClangASTUnit_getLocalPreprocessingEntities_begin;
    167     extern fn ZigClangASTUnit_getLocalPreprocessingEntities_begin(*ASTUnit) PreprocessingRecord.iterator;
    168 
    169     pub const getLocalPreprocessingEntities_end = ZigClangASTUnit_getLocalPreprocessingEntities_end;
    170     extern fn ZigClangASTUnit_getLocalPreprocessingEntities_end(*ASTUnit) PreprocessingRecord.iterator;
    171 };
    172 
    173 pub const ArraySubscriptExpr = opaque {
    174     pub const getBase = ZigClangArraySubscriptExpr_getBase;
    175     extern fn ZigClangArraySubscriptExpr_getBase(*const ArraySubscriptExpr) *const Expr;
    176 
    177     pub const getIdx = ZigClangArraySubscriptExpr_getIdx;
    178     extern fn ZigClangArraySubscriptExpr_getIdx(*const ArraySubscriptExpr) *const Expr;
    179 };
    180 
    181 pub const ArrayType = opaque {
    182     pub const getElementType = ZigClangArrayType_getElementType;
    183     extern fn ZigClangArrayType_getElementType(*const ArrayType) QualType;
    184 };
    185 
    186 pub const ASTRecordLayout = opaque {
    187     pub const getFieldOffset = ZigClangASTRecordLayout_getFieldOffset;
    188     extern fn ZigClangASTRecordLayout_getFieldOffset(*const ASTRecordLayout, c_uint) u64;
    189 
    190     pub const getAlignment = ZigClangASTRecordLayout_getAlignment;
    191     extern fn ZigClangASTRecordLayout_getAlignment(*const ASTRecordLayout) i64;
    192 };
    193 
    194 pub const AttributedType = opaque {
    195     pub const getEquivalentType = ZigClangAttributedType_getEquivalentType;
    196     extern fn ZigClangAttributedType_getEquivalentType(*const AttributedType) QualType;
    197 };
    198 
    199 pub const BinaryOperator = opaque {
    200     pub const getOpcode = ZigClangBinaryOperator_getOpcode;
    201     extern fn ZigClangBinaryOperator_getOpcode(*const BinaryOperator) BO;
    202 
    203     pub const getBeginLoc = ZigClangBinaryOperator_getBeginLoc;
    204     extern fn ZigClangBinaryOperator_getBeginLoc(*const BinaryOperator) SourceLocation;
    205 
    206     pub const getLHS = ZigClangBinaryOperator_getLHS;
    207     extern fn ZigClangBinaryOperator_getLHS(*const BinaryOperator) *const Expr;
    208 
    209     pub const getRHS = ZigClangBinaryOperator_getRHS;
    210     extern fn ZigClangBinaryOperator_getRHS(*const BinaryOperator) *const Expr;
    211 
    212     pub const getType = ZigClangBinaryOperator_getType;
    213     extern fn ZigClangBinaryOperator_getType(*const BinaryOperator) QualType;
    214 };
    215 
    216 pub const BinaryConditionalOperator = opaque {};
    217 
    218 pub const BreakStmt = opaque {};
    219 
    220 pub const BuiltinType = opaque {
    221     pub const getKind = ZigClangBuiltinType_getKind;
    222     extern fn ZigClangBuiltinType_getKind(*const BuiltinType) BuiltinTypeKind;
    223 };
    224 
    225 pub const CStyleCastExpr = opaque {
    226     pub const getBeginLoc = ZigClangCStyleCastExpr_getBeginLoc;
    227     extern fn ZigClangCStyleCastExpr_getBeginLoc(*const CStyleCastExpr) SourceLocation;
    228 
    229     pub const getSubExpr = ZigClangCStyleCastExpr_getSubExpr;
    230     extern fn ZigClangCStyleCastExpr_getSubExpr(*const CStyleCastExpr) *const Expr;
    231 
    232     pub const getType = ZigClangCStyleCastExpr_getType;
    233     extern fn ZigClangCStyleCastExpr_getType(*const CStyleCastExpr) QualType;
    234 };
    235 
    236 pub const CallExpr = opaque {
    237     pub const getCallee = ZigClangCallExpr_getCallee;
    238     extern fn ZigClangCallExpr_getCallee(*const CallExpr) *const Expr;
    239 
    240     pub const getNumArgs = ZigClangCallExpr_getNumArgs;
    241     extern fn ZigClangCallExpr_getNumArgs(*const CallExpr) c_uint;
    242 
    243     pub const getArgs = ZigClangCallExpr_getArgs;
    244     extern fn ZigClangCallExpr_getArgs(*const CallExpr) [*]const *const Expr;
    245 };
    246 
    247 pub const CaseStmt = opaque {
    248     pub const getLHS = ZigClangCaseStmt_getLHS;
    249     extern fn ZigClangCaseStmt_getLHS(*const CaseStmt) *const Expr;
    250 
    251     pub const getRHS = ZigClangCaseStmt_getRHS;
    252     extern fn ZigClangCaseStmt_getRHS(*const CaseStmt) ?*const Expr;
    253 
    254     pub const getBeginLoc = ZigClangCaseStmt_getBeginLoc;
    255     extern fn ZigClangCaseStmt_getBeginLoc(*const CaseStmt) SourceLocation;
    256 
    257     pub const getSubStmt = ZigClangCaseStmt_getSubStmt;
    258     extern fn ZigClangCaseStmt_getSubStmt(*const CaseStmt) *const Stmt;
    259 };
    260 
    261 pub const CharacterLiteral = opaque {
    262     pub const getBeginLoc = ZigClangCharacterLiteral_getBeginLoc;
    263     extern fn ZigClangCharacterLiteral_getBeginLoc(*const CharacterLiteral) SourceLocation;
    264 
    265     pub const getKind = ZigClangCharacterLiteral_getKind;
    266     extern fn ZigClangCharacterLiteral_getKind(*const CharacterLiteral) CharacterLiteral_CharacterKind;
    267 
    268     pub const getValue = ZigClangCharacterLiteral_getValue;
    269     extern fn ZigClangCharacterLiteral_getValue(*const CharacterLiteral) c_uint;
    270 };
    271 
    272 pub const ChooseExpr = opaque {
    273     pub const getChosenSubExpr = ZigClangChooseExpr_getChosenSubExpr;
    274     extern fn ZigClangChooseExpr_getChosenSubExpr(*const ChooseExpr) *const Expr;
    275 };
    276 
    277 pub const CompoundAssignOperator = opaque {
    278     pub const getType = ZigClangCompoundAssignOperator_getType;
    279     extern fn ZigClangCompoundAssignOperator_getType(*const CompoundAssignOperator) QualType;
    280 
    281     pub const getComputationLHSType = ZigClangCompoundAssignOperator_getComputationLHSType;
    282     extern fn ZigClangCompoundAssignOperator_getComputationLHSType(*const CompoundAssignOperator) QualType;
    283 
    284     pub const getComputationResultType = ZigClangCompoundAssignOperator_getComputationResultType;
    285     extern fn ZigClangCompoundAssignOperator_getComputationResultType(*const CompoundAssignOperator) QualType;
    286 
    287     pub const getBeginLoc = ZigClangCompoundAssignOperator_getBeginLoc;
    288     extern fn ZigClangCompoundAssignOperator_getBeginLoc(*const CompoundAssignOperator) SourceLocation;
    289 
    290     pub const getOpcode = ZigClangCompoundAssignOperator_getOpcode;
    291     extern fn ZigClangCompoundAssignOperator_getOpcode(*const CompoundAssignOperator) BO;
    292 
    293     pub const getLHS = ZigClangCompoundAssignOperator_getLHS;
    294     extern fn ZigClangCompoundAssignOperator_getLHS(*const CompoundAssignOperator) *const Expr;
    295 
    296     pub const getRHS = ZigClangCompoundAssignOperator_getRHS;
    297     extern fn ZigClangCompoundAssignOperator_getRHS(*const CompoundAssignOperator) *const Expr;
    298 };
    299 
    300 pub const CompoundLiteralExpr = opaque {
    301     pub const getInitializer = ZigClangCompoundLiteralExpr_getInitializer;
    302     extern fn ZigClangCompoundLiteralExpr_getInitializer(*const CompoundLiteralExpr) *const Expr;
    303 };
    304 
    305 pub const CompoundStmt = opaque {
    306     pub const body_begin = ZigClangCompoundStmt_body_begin;
    307     extern fn ZigClangCompoundStmt_body_begin(*const CompoundStmt) ConstBodyIterator;
    308 
    309     pub const body_end = ZigClangCompoundStmt_body_end;
    310     extern fn ZigClangCompoundStmt_body_end(*const CompoundStmt) ConstBodyIterator;
    311 
    312     pub const ConstBodyIterator = [*]const *Stmt;
    313 };
    314 
    315 pub const ConditionalOperator = opaque {};
    316 
    317 pub const ConstantArrayType = opaque {
    318     pub const getElementType = ZigClangConstantArrayType_getElementType;
    319     extern fn ZigClangConstantArrayType_getElementType(*const ConstantArrayType) QualType;
    320 
    321     pub const getSize = ZigClangConstantArrayType_getSize;
    322     extern fn ZigClangConstantArrayType_getSize(*const ConstantArrayType) *const APInt;
    323 };
    324 
    325 pub const ConstantExpr = opaque {};
    326 
    327 pub const ContinueStmt = opaque {};
    328 
    329 pub const ConvertVectorExpr = opaque {
    330     pub const getSrcExpr = ZigClangConvertVectorExpr_getSrcExpr;
    331     extern fn ZigClangConvertVectorExpr_getSrcExpr(*const ConvertVectorExpr) *const Expr;
    332 
    333     pub const getTypeSourceInfo_getType = ZigClangConvertVectorExpr_getTypeSourceInfo_getType;
    334     extern fn ZigClangConvertVectorExpr_getTypeSourceInfo_getType(*const ConvertVectorExpr) QualType;
    335 };
    336 
    337 pub const DecayedType = opaque {
    338     pub const getDecayedType = ZigClangDecayedType_getDecayedType;
    339     extern fn ZigClangDecayedType_getDecayedType(*const DecayedType) QualType;
    340 };
    341 
    342 pub const Decl = opaque {
    343     pub const getLocation = ZigClangDecl_getLocation;
    344     extern fn ZigClangDecl_getLocation(*const Decl) SourceLocation;
    345 
    346     pub const castToNamedDecl = ZigClangDecl_castToNamedDecl;
    347     extern fn ZigClangDecl_castToNamedDecl(decl: *const Decl) ?*const NamedDecl;
    348 
    349     pub const getKind = ZigClangDecl_getKind;
    350     extern fn ZigClangDecl_getKind(decl: *const Decl) DeclKind;
    351 
    352     pub const getDeclKindName = ZigClangDecl_getDeclKindName;
    353     extern fn ZigClangDecl_getDeclKindName(decl: *const Decl) [*:0]const u8;
    354 };
    355 
    356 pub const DeclRefExpr = opaque {
    357     pub const getDecl = ZigClangDeclRefExpr_getDecl;
    358     extern fn ZigClangDeclRefExpr_getDecl(*const DeclRefExpr) *const ValueDecl;
    359 
    360     pub const getFoundDecl = ZigClangDeclRefExpr_getFoundDecl;
    361     extern fn ZigClangDeclRefExpr_getFoundDecl(*const DeclRefExpr) *const NamedDecl;
    362 };
    363 
    364 pub const DeclStmt = opaque {
    365     pub const decl_begin = ZigClangDeclStmt_decl_begin;
    366     extern fn ZigClangDeclStmt_decl_begin(*const DeclStmt) const_decl_iterator;
    367 
    368     pub const decl_end = ZigClangDeclStmt_decl_end;
    369     extern fn ZigClangDeclStmt_decl_end(*const DeclStmt) const_decl_iterator;
    370 
    371     pub const const_decl_iterator = [*]const *Decl;
    372 };
    373 
    374 pub const DefaultStmt = opaque {
    375     pub const getSubStmt = ZigClangDefaultStmt_getSubStmt;
    376     extern fn ZigClangDefaultStmt_getSubStmt(*const DefaultStmt) *const Stmt;
    377 };
    378 
    379 pub const DiagnosticOptions = opaque {};
    380 
    381 pub const DiagnosticsEngine = opaque {};
    382 
    383 pub const DoStmt = opaque {
    384     pub const getCond = ZigClangDoStmt_getCond;
    385     extern fn ZigClangDoStmt_getCond(*const DoStmt) *const Expr;
    386 
    387     pub const getBody = ZigClangDoStmt_getBody;
    388     extern fn ZigClangDoStmt_getBody(*const DoStmt) *const Stmt;
    389 };
    390 
    391 pub const ElaboratedType = opaque {
    392     pub const getNamedType = ZigClangElaboratedType_getNamedType;
    393     extern fn ZigClangElaboratedType_getNamedType(*const ElaboratedType) QualType;
    394 };
    395 
    396 pub const EnumConstantDecl = opaque {
    397     pub const getInitVal = ZigClangEnumConstantDecl_getInitVal;
    398     extern fn ZigClangEnumConstantDecl_getInitVal(*const EnumConstantDecl) *const APSInt;
    399 };
    400 
    401 pub const EnumDecl = opaque {
    402     pub const getCanonicalDecl = ZigClangEnumDecl_getCanonicalDecl;
    403     extern fn ZigClangEnumDecl_getCanonicalDecl(*const EnumDecl) ?*const TagDecl;
    404 
    405     pub const getIntegerType = ZigClangEnumDecl_getIntegerType;
    406     extern fn ZigClangEnumDecl_getIntegerType(*const EnumDecl) QualType;
    407 
    408     pub const getDefinition = ZigClangEnumDecl_getDefinition;
    409     extern fn ZigClangEnumDecl_getDefinition(*const EnumDecl) ?*const EnumDecl;
    410 
    411     pub const getLocation = ZigClangEnumDecl_getLocation;
    412     extern fn ZigClangEnumDecl_getLocation(*const EnumDecl) SourceLocation;
    413 
    414     pub const enumerator_begin = ZigClangEnumDecl_enumerator_begin;
    415     extern fn ZigClangEnumDecl_enumerator_begin(*const EnumDecl) enumerator_iterator;
    416 
    417     pub const enumerator_end = ZigClangEnumDecl_enumerator_end;
    418     extern fn ZigClangEnumDecl_enumerator_end(*const EnumDecl) enumerator_iterator;
    419 
    420     pub const enumerator_iterator = extern struct {
    421         ptr: *c_void,
    422 
    423         pub const next = ZigClangEnumDecl_enumerator_iterator_next;
    424         extern fn ZigClangEnumDecl_enumerator_iterator_next(enumerator_iterator) enumerator_iterator;
    425 
    426         pub const deref = ZigClangEnumDecl_enumerator_iterator_deref;
    427         extern fn ZigClangEnumDecl_enumerator_iterator_deref(enumerator_iterator) *const EnumConstantDecl;
    428 
    429         pub const neq = ZigClangEnumDecl_enumerator_iterator_neq;
    430         extern fn ZigClangEnumDecl_enumerator_iterator_neq(enumerator_iterator, enumerator_iterator) bool;
    431     };
    432 };
    433 
    434 pub const EnumType = opaque {
    435     pub const getDecl = ZigClangEnumType_getDecl;
    436     extern fn ZigClangEnumType_getDecl(*const EnumType) *const EnumDecl;
    437 };
    438 
    439 pub const Expr = opaque {
    440     pub const getStmtClass = ZigClangExpr_getStmtClass;
    441     extern fn ZigClangExpr_getStmtClass(*const Expr) StmtClass;
    442 
    443     pub const getType = ZigClangExpr_getType;
    444     extern fn ZigClangExpr_getType(*const Expr) QualType;
    445 
    446     pub const getBeginLoc = ZigClangExpr_getBeginLoc;
    447     extern fn ZigClangExpr_getBeginLoc(*const Expr) SourceLocation;
    448 
    449     pub const evaluateAsConstantExpr = ZigClangExpr_EvaluateAsConstantExpr;
    450     extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstantExprKind, *const ASTContext) bool;
    451 };
    452 
    453 pub const FieldDecl = opaque {
    454     pub const getCanonicalDecl = ZigClangFieldDecl_getCanonicalDecl;
    455     extern fn ZigClangFieldDecl_getCanonicalDecl(*const FieldDecl) ?*const FieldDecl;
    456 
    457     pub const getAlignedAttribute = ZigClangFieldDecl_getAlignedAttribute;
    458     extern fn ZigClangFieldDecl_getAlignedAttribute(*const FieldDecl, *const ASTContext) c_uint;
    459 
    460     pub const isAnonymousStructOrUnion = ZigClangFieldDecl_isAnonymousStructOrUnion;
    461     extern fn ZigClangFieldDecl_isAnonymousStructOrUnion(*const FieldDecl) bool;
    462 
    463     pub const isBitField = ZigClangFieldDecl_isBitField;
    464     extern fn ZigClangFieldDecl_isBitField(*const FieldDecl) bool;
    465 
    466     pub const getType = ZigClangFieldDecl_getType;
    467     extern fn ZigClangFieldDecl_getType(*const FieldDecl) QualType;
    468 
    469     pub const getLocation = ZigClangFieldDecl_getLocation;
    470     extern fn ZigClangFieldDecl_getLocation(*const FieldDecl) SourceLocation;
    471 
    472     pub const getParent = ZigClangFieldDecl_getParent;
    473     extern fn ZigClangFieldDecl_getParent(*const FieldDecl) ?*const RecordDecl;
    474 
    475     pub const getFieldIndex = ZigClangFieldDecl_getFieldIndex;
    476     extern fn ZigClangFieldDecl_getFieldIndex(*const FieldDecl) c_uint;
    477 };
    478 
    479 pub const FileID = opaque {};
    480 
    481 pub const FloatingLiteral = opaque {
    482     pub const getValueAsApproximateDouble = ZigClangFloatingLiteral_getValueAsApproximateDouble;
    483     extern fn ZigClangFloatingLiteral_getValueAsApproximateDouble(*const FloatingLiteral) f64;
    484 
    485     pub const getBeginLoc = ZigClangIntegerLiteral_getBeginLoc;
    486     extern fn ZigClangIntegerLiteral_getBeginLoc(*const FloatingLiteral) SourceLocation;
    487 
    488     pub const getRawSemantics = ZigClangFloatingLiteral_getRawSemantics;
    489     extern fn ZigClangFloatingLiteral_getRawSemantics(*const FloatingLiteral) APFloatBaseSemantics;
    490 };
    491 
    492 pub const ForStmt = opaque {
    493     pub const getInit = ZigClangForStmt_getInit;
    494     extern fn ZigClangForStmt_getInit(*const ForStmt) ?*const Stmt;
    495 
    496     pub const getCond = ZigClangForStmt_getCond;
    497     extern fn ZigClangForStmt_getCond(*const ForStmt) ?*const Expr;
    498 
    499     pub const getInc = ZigClangForStmt_getInc;
    500     extern fn ZigClangForStmt_getInc(*const ForStmt) ?*const Expr;
    501 
    502     pub const getBody = ZigClangForStmt_getBody;
    503     extern fn ZigClangForStmt_getBody(*const ForStmt) *const Stmt;
    504 };
    505 
    506 pub const FullSourceLoc = opaque {};
    507 
    508 pub const FunctionDecl = opaque {
    509     pub const getType = ZigClangFunctionDecl_getType;
    510     extern fn ZigClangFunctionDecl_getType(*const FunctionDecl) QualType;
    511 
    512     pub const getLocation = ZigClangFunctionDecl_getLocation;
    513     extern fn ZigClangFunctionDecl_getLocation(*const FunctionDecl) SourceLocation;
    514 
    515     pub const hasBody = ZigClangFunctionDecl_hasBody;
    516     extern fn ZigClangFunctionDecl_hasBody(*const FunctionDecl) bool;
    517 
    518     pub const getStorageClass = ZigClangFunctionDecl_getStorageClass;
    519     extern fn ZigClangFunctionDecl_getStorageClass(*const FunctionDecl) StorageClass;
    520 
    521     pub const getParamDecl = ZigClangFunctionDecl_getParamDecl;
    522     extern fn ZigClangFunctionDecl_getParamDecl(*const FunctionDecl, i: c_uint) *const ParmVarDecl;
    523 
    524     pub const getBody = ZigClangFunctionDecl_getBody;
    525     extern fn ZigClangFunctionDecl_getBody(*const FunctionDecl) *const Stmt;
    526 
    527     pub const doesDeclarationForceExternallyVisibleDefinition = ZigClangFunctionDecl_doesDeclarationForceExternallyVisibleDefinition;
    528     extern fn ZigClangFunctionDecl_doesDeclarationForceExternallyVisibleDefinition(*const FunctionDecl) bool;
    529 
    530     pub const isThisDeclarationADefinition = ZigClangFunctionDecl_isThisDeclarationADefinition;
    531     extern fn ZigClangFunctionDecl_isThisDeclarationADefinition(*const FunctionDecl) bool;
    532 
    533     pub const doesThisDeclarationHaveABody = ZigClangFunctionDecl_doesThisDeclarationHaveABody;
    534     extern fn ZigClangFunctionDecl_doesThisDeclarationHaveABody(*const FunctionDecl) bool;
    535 
    536     pub const isInlineSpecified = ZigClangFunctionDecl_isInlineSpecified;
    537     extern fn ZigClangFunctionDecl_isInlineSpecified(*const FunctionDecl) bool;
    538 
    539     pub const hasAlwaysInlineAttr = ZigClangFunctionDecl_hasAlwaysInlineAttr;
    540     extern fn ZigClangFunctionDecl_hasAlwaysInlineAttr(*const FunctionDecl) bool;
    541 
    542     pub const isDefined = ZigClangFunctionDecl_isDefined;
    543     extern fn ZigClangFunctionDecl_isDefined(*const FunctionDecl) bool;
    544 
    545     pub const getDefinition = ZigClangFunctionDecl_getDefinition;
    546     extern fn ZigClangFunctionDecl_getDefinition(*const FunctionDecl) ?*const FunctionDecl;
    547 
    548     pub const getSectionAttribute = ZigClangFunctionDecl_getSectionAttribute;
    549     extern fn ZigClangFunctionDecl_getSectionAttribute(*const FunctionDecl, len: *usize) ?[*]const u8;
    550 
    551     pub const getCanonicalDecl = ZigClangFunctionDecl_getCanonicalDecl;
    552     extern fn ZigClangFunctionDecl_getCanonicalDecl(*const FunctionDecl) ?*const FunctionDecl;
    553 
    554     pub const getAlignedAttribute = ZigClangFunctionDecl_getAlignedAttribute;
    555     extern fn ZigClangFunctionDecl_getAlignedAttribute(*const FunctionDecl, *const ASTContext) c_uint;
    556 };
    557 
    558 pub const FunctionProtoType = opaque {
    559     pub const isVariadic = ZigClangFunctionProtoType_isVariadic;
    560     extern fn ZigClangFunctionProtoType_isVariadic(*const FunctionProtoType) bool;
    561 
    562     pub const getNumParams = ZigClangFunctionProtoType_getNumParams;
    563     extern fn ZigClangFunctionProtoType_getNumParams(*const FunctionProtoType) c_uint;
    564 
    565     pub const getParamType = ZigClangFunctionProtoType_getParamType;
    566     extern fn ZigClangFunctionProtoType_getParamType(*const FunctionProtoType, i: c_uint) QualType;
    567 
    568     pub const getReturnType = ZigClangFunctionProtoType_getReturnType;
    569     extern fn ZigClangFunctionProtoType_getReturnType(*const FunctionProtoType) QualType;
    570 };
    571 
    572 pub const FunctionType = opaque {
    573     pub const getNoReturnAttr = ZigClangFunctionType_getNoReturnAttr;
    574     extern fn ZigClangFunctionType_getNoReturnAttr(*const FunctionType) bool;
    575 
    576     pub const getCallConv = ZigClangFunctionType_getCallConv;
    577     extern fn ZigClangFunctionType_getCallConv(*const FunctionType) CallingConv;
    578 
    579     pub const getReturnType = ZigClangFunctionType_getReturnType;
    580     extern fn ZigClangFunctionType_getReturnType(*const FunctionType) QualType;
    581 };
    582 
    583 pub const GenericSelectionExpr = opaque {
    584     pub const getResultExpr = ZigClangGenericSelectionExpr_getResultExpr;
    585     extern fn ZigClangGenericSelectionExpr_getResultExpr(*const GenericSelectionExpr) *const Expr;
    586 };
    587 
    588 pub const IfStmt = opaque {
    589     pub const getThen = ZigClangIfStmt_getThen;
    590     extern fn ZigClangIfStmt_getThen(*const IfStmt) *const Stmt;
    591 
    592     pub const getElse = ZigClangIfStmt_getElse;
    593     extern fn ZigClangIfStmt_getElse(*const IfStmt) ?*const Stmt;
    594 
    595     pub const getCond = ZigClangIfStmt_getCond;
    596     extern fn ZigClangIfStmt_getCond(*const IfStmt) *const Stmt;
    597 };
    598 
    599 pub const ImplicitCastExpr = opaque {
    600     pub const getBeginLoc = ZigClangImplicitCastExpr_getBeginLoc;
    601     extern fn ZigClangImplicitCastExpr_getBeginLoc(*const ImplicitCastExpr) SourceLocation;
    602 
    603     pub const getCastKind = ZigClangImplicitCastExpr_getCastKind;
    604     extern fn ZigClangImplicitCastExpr_getCastKind(*const ImplicitCastExpr) CK;
    605 
    606     pub const getSubExpr = ZigClangImplicitCastExpr_getSubExpr;
    607     extern fn ZigClangImplicitCastExpr_getSubExpr(*const ImplicitCastExpr) *const Expr;
    608 };
    609 
    610 pub const IncompleteArrayType = opaque {
    611     pub const getElementType = ZigClangIncompleteArrayType_getElementType;
    612     extern fn ZigClangIncompleteArrayType_getElementType(*const IncompleteArrayType) QualType;
    613 };
    614 
    615 pub const IntegerLiteral = opaque {
    616     pub const EvaluateAsInt = ZigClangIntegerLiteral_EvaluateAsInt;
    617     extern fn ZigClangIntegerLiteral_EvaluateAsInt(*const IntegerLiteral, *ExprEvalResult, *const ASTContext) bool;
    618 
    619     pub const getBeginLoc = ZigClangIntegerLiteral_getBeginLoc;
    620     extern fn ZigClangIntegerLiteral_getBeginLoc(*const IntegerLiteral) SourceLocation;
    621 
    622     pub const getSignum = ZigClangIntegerLiteral_getSignum;
    623     extern fn ZigClangIntegerLiteral_getSignum(*const IntegerLiteral, *c_int, *const ASTContext) bool;
    624 };
    625 
    626 /// This is just used as a namespace for a static method on clang's Lexer class; we don't directly
    627 /// deal with Lexer objects
    628 pub const Lexer = struct {
    629     pub const getLocForEndOfToken = ZigClangLexer_getLocForEndOfToken;
    630     extern fn ZigClangLexer_getLocForEndOfToken(SourceLocation, *const SourceManager, *const ASTUnit) SourceLocation;
    631 };
    632 
    633 pub const MacroDefinitionRecord = opaque {
    634     pub const getName_getNameStart = ZigClangMacroDefinitionRecord_getName_getNameStart;
    635     extern fn ZigClangMacroDefinitionRecord_getName_getNameStart(*const MacroDefinitionRecord) [*:0]const u8;
    636 
    637     pub const getSourceRange_getBegin = ZigClangMacroDefinitionRecord_getSourceRange_getBegin;
    638     extern fn ZigClangMacroDefinitionRecord_getSourceRange_getBegin(*const MacroDefinitionRecord) SourceLocation;
    639 
    640     pub const getSourceRange_getEnd = ZigClangMacroDefinitionRecord_getSourceRange_getEnd;
    641     extern fn ZigClangMacroDefinitionRecord_getSourceRange_getEnd(*const MacroDefinitionRecord) SourceLocation;
    642 };
    643 
    644 pub const MacroQualifiedType = opaque {
    645     pub const getModifiedType = ZigClangMacroQualifiedType_getModifiedType;
    646     extern fn ZigClangMacroQualifiedType_getModifiedType(*const MacroQualifiedType) QualType;
    647 };
    648 
    649 pub const TypeOfType = opaque {
    650     pub const getUnderlyingType = ZigClangTypeOfType_getUnderlyingType;
    651     extern fn ZigClangTypeOfType_getUnderlyingType(*const TypeOfType) QualType;
    652 };
    653 
    654 pub const TypeOfExprType = opaque {
    655     pub const getUnderlyingExpr = ZigClangTypeOfExprType_getUnderlyingExpr;
    656     extern fn ZigClangTypeOfExprType_getUnderlyingExpr(*const TypeOfExprType) *const Expr;
    657 };
    658 
    659 pub const OffsetOfNode = opaque {
    660     pub const getKind = ZigClangOffsetOfNode_getKind;
    661     extern fn ZigClangOffsetOfNode_getKind(*const OffsetOfNode) OffsetOfNode_Kind;
    662 
    663     pub const getArrayExprIndex = ZigClangOffsetOfNode_getArrayExprIndex;
    664     extern fn ZigClangOffsetOfNode_getArrayExprIndex(*const OffsetOfNode) c_uint;
    665 
    666     pub const getField = ZigClangOffsetOfNode_getField;
    667     extern fn ZigClangOffsetOfNode_getField(*const OffsetOfNode) *FieldDecl;
    668 };
    669 
    670 pub const OffsetOfExpr = opaque {
    671     pub const getNumComponents = ZigClangOffsetOfExpr_getNumComponents;
    672     extern fn ZigClangOffsetOfExpr_getNumComponents(*const OffsetOfExpr) c_uint;
    673 
    674     pub const getNumExpressions = ZigClangOffsetOfExpr_getNumExpressions;
    675     extern fn ZigClangOffsetOfExpr_getNumExpressions(*const OffsetOfExpr) c_uint;
    676 
    677     pub const getIndexExpr = ZigClangOffsetOfExpr_getIndexExpr;
    678     extern fn ZigClangOffsetOfExpr_getIndexExpr(*const OffsetOfExpr, idx: c_uint) *const Expr;
    679 
    680     pub const getComponent = ZigClangOffsetOfExpr_getComponent;
    681     extern fn ZigClangOffsetOfExpr_getComponent(*const OffsetOfExpr, idx: c_uint) *const OffsetOfNode;
    682 
    683     pub const getBeginLoc = ZigClangOffsetOfExpr_getBeginLoc;
    684     extern fn ZigClangOffsetOfExpr_getBeginLoc(*const OffsetOfExpr) SourceLocation;
    685 };
    686 
    687 pub const MemberExpr = opaque {
    688     pub const getBase = ZigClangMemberExpr_getBase;
    689     extern fn ZigClangMemberExpr_getBase(*const MemberExpr) *const Expr;
    690 
    691     pub const isArrow = ZigClangMemberExpr_isArrow;
    692     extern fn ZigClangMemberExpr_isArrow(*const MemberExpr) bool;
    693 
    694     pub const getMemberDecl = ZigClangMemberExpr_getMemberDecl;
    695     extern fn ZigClangMemberExpr_getMemberDecl(*const MemberExpr) *const ValueDecl;
    696 };
    697 
    698 pub const NamedDecl = opaque {
    699     pub const getName_bytes_begin = ZigClangNamedDecl_getName_bytes_begin;
    700     extern fn ZigClangNamedDecl_getName_bytes_begin(decl: *const NamedDecl) [*:0]const u8;
    701 };
    702 
    703 pub const None = opaque {};
    704 
    705 pub const OpaqueValueExpr = opaque {
    706     pub const getSourceExpr = ZigClangOpaqueValueExpr_getSourceExpr;
    707     extern fn ZigClangOpaqueValueExpr_getSourceExpr(*const OpaqueValueExpr) ?*const Expr;
    708 };
    709 
    710 pub const PCHContainerOperations = opaque {};
    711 
    712 pub const ParenExpr = opaque {
    713     pub const getSubExpr = ZigClangParenExpr_getSubExpr;
    714     extern fn ZigClangParenExpr_getSubExpr(*const ParenExpr) *const Expr;
    715 };
    716 
    717 pub const ParenType = opaque {
    718     pub const getInnerType = ZigClangParenType_getInnerType;
    719     extern fn ZigClangParenType_getInnerType(*const ParenType) QualType;
    720 };
    721 
    722 pub const ParmVarDecl = opaque {
    723     pub const getOriginalType = ZigClangParmVarDecl_getOriginalType;
    724     extern fn ZigClangParmVarDecl_getOriginalType(*const ParmVarDecl) QualType;
    725 };
    726 
    727 pub const PointerType = opaque {};
    728 
    729 pub const PredefinedExpr = opaque {
    730     pub const getFunctionName = ZigClangPredefinedExpr_getFunctionName;
    731     extern fn ZigClangPredefinedExpr_getFunctionName(*const PredefinedExpr) *const StringLiteral;
    732 };
    733 
    734 pub const PreprocessedEntity = opaque {
    735     pub const getKind = ZigClangPreprocessedEntity_getKind;
    736     extern fn ZigClangPreprocessedEntity_getKind(*const PreprocessedEntity) PreprocessedEntity_EntityKind;
    737 };
    738 
    739 pub const PreprocessingRecord = opaque {
    740     pub const iterator = extern struct {
    741         I: c_int,
    742         Self: *PreprocessingRecord,
    743 
    744         pub const deref = ZigClangPreprocessingRecord_iterator_deref;
    745         extern fn ZigClangPreprocessingRecord_iterator_deref(iterator) *PreprocessedEntity;
    746     };
    747 };
    748 
    749 pub const RecordDecl = opaque {
    750     pub const getCanonicalDecl = ZigClangRecordDecl_getCanonicalDecl;
    751     extern fn ZigClangRecordDecl_getCanonicalDecl(*const RecordDecl) ?*const TagDecl;
    752 
    753     pub const isUnion = ZigClangRecordDecl_isUnion;
    754     extern fn ZigClangRecordDecl_isUnion(*const RecordDecl) bool;
    755 
    756     pub const isStruct = ZigClangRecordDecl_isStruct;
    757     extern fn ZigClangRecordDecl_isStruct(*const RecordDecl) bool;
    758 
    759     pub const isAnonymousStructOrUnion = ZigClangRecordDecl_isAnonymousStructOrUnion;
    760     extern fn ZigClangRecordDecl_isAnonymousStructOrUnion(record_decl: ?*const RecordDecl) bool;
    761 
    762     pub const getPackedAttribute = ZigClangRecordDecl_getPackedAttribute;
    763     extern fn ZigClangRecordDecl_getPackedAttribute(*const RecordDecl) bool;
    764 
    765     pub const getDefinition = ZigClangRecordDecl_getDefinition;
    766     extern fn ZigClangRecordDecl_getDefinition(*const RecordDecl) ?*const RecordDecl;
    767 
    768     pub const getLocation = ZigClangRecordDecl_getLocation;
    769     extern fn ZigClangRecordDecl_getLocation(*const RecordDecl) SourceLocation;
    770 
    771     pub const getASTRecordLayout = ZigClangRecordDecl_getASTRecordLayout;
    772     extern fn ZigClangRecordDecl_getASTRecordLayout(*const RecordDecl, *const ASTContext) *const ASTRecordLayout;
    773 
    774     pub const field_begin = ZigClangRecordDecl_field_begin;
    775     extern fn ZigClangRecordDecl_field_begin(*const RecordDecl) field_iterator;
    776 
    777     pub const field_end = ZigClangRecordDecl_field_end;
    778     extern fn ZigClangRecordDecl_field_end(*const RecordDecl) field_iterator;
    779 
    780     pub const field_iterator = extern struct {
    781         ptr: *c_void,
    782 
    783         pub const next = ZigClangRecordDecl_field_iterator_next;
    784         extern fn ZigClangRecordDecl_field_iterator_next(field_iterator) field_iterator;
    785 
    786         pub const deref = ZigClangRecordDecl_field_iterator_deref;
    787         extern fn ZigClangRecordDecl_field_iterator_deref(field_iterator) *const FieldDecl;
    788 
    789         pub const neq = ZigClangRecordDecl_field_iterator_neq;
    790         extern fn ZigClangRecordDecl_field_iterator_neq(field_iterator, field_iterator) bool;
    791     };
    792 };
    793 
    794 pub const RecordType = opaque {
    795     pub const getDecl = ZigClangRecordType_getDecl;
    796     extern fn ZigClangRecordType_getDecl(*const RecordType) *const RecordDecl;
    797 };
    798 
    799 pub const ReturnStmt = opaque {
    800     pub const getRetValue = ZigClangReturnStmt_getRetValue;
    801     extern fn ZigClangReturnStmt_getRetValue(*const ReturnStmt) ?*const Expr;
    802 };
    803 
    804 pub const ShuffleVectorExpr = opaque {
    805     pub const getNumSubExprs = ZigClangShuffleVectorExpr_getNumSubExprs;
    806     extern fn ZigClangShuffleVectorExpr_getNumSubExprs(*const ShuffleVectorExpr) c_uint;
    807 
    808     pub const getExpr = ZigClangShuffleVectorExpr_getExpr;
    809     extern fn ZigClangShuffleVectorExpr_getExpr(*const ShuffleVectorExpr, c_uint) *const Expr;
    810 };
    811 
    812 pub const SourceManager = opaque {
    813     pub const getSpellingLoc = ZigClangSourceManager_getSpellingLoc;
    814     extern fn ZigClangSourceManager_getSpellingLoc(*const SourceManager, Loc: SourceLocation) SourceLocation;
    815 
    816     pub const getFilename = ZigClangSourceManager_getFilename;
    817     extern fn ZigClangSourceManager_getFilename(*const SourceManager, SpellingLoc: SourceLocation) ?[*:0]const u8;
    818 
    819     pub const getSpellingLineNumber = ZigClangSourceManager_getSpellingLineNumber;
    820     extern fn ZigClangSourceManager_getSpellingLineNumber(*const SourceManager, Loc: SourceLocation) c_uint;
    821 
    822     pub const getSpellingColumnNumber = ZigClangSourceManager_getSpellingColumnNumber;
    823     extern fn ZigClangSourceManager_getSpellingColumnNumber(*const SourceManager, Loc: SourceLocation) c_uint;
    824 
    825     pub const getCharacterData = ZigClangSourceManager_getCharacterData;
    826     extern fn ZigClangSourceManager_getCharacterData(*const SourceManager, SL: SourceLocation) [*:0]const u8;
    827 };
    828 
    829 pub const SourceRange = opaque {};
    830 
    831 pub const Stmt = opaque {
    832     pub const getBeginLoc = ZigClangStmt_getBeginLoc;
    833     extern fn ZigClangStmt_getBeginLoc(*const Stmt) SourceLocation;
    834 
    835     pub const getStmtClass = ZigClangStmt_getStmtClass;
    836     extern fn ZigClangStmt_getStmtClass(*const Stmt) StmtClass;
    837 
    838     pub const classof_Expr = ZigClangStmt_classof_Expr;
    839     extern fn ZigClangStmt_classof_Expr(*const Stmt) bool;
    840 };
    841 
    842 pub const StmtExpr = opaque {
    843     pub const getSubStmt = ZigClangStmtExpr_getSubStmt;
    844     extern fn ZigClangStmtExpr_getSubStmt(*const StmtExpr) *const CompoundStmt;
    845 };
    846 
    847 pub const StringLiteral = opaque {
    848     pub const getKind = ZigClangStringLiteral_getKind;
    849     extern fn ZigClangStringLiteral_getKind(*const StringLiteral) StringLiteral_StringKind;
    850 
    851     pub const getCodeUnit = ZigClangStringLiteral_getCodeUnit;
    852     extern fn ZigClangStringLiteral_getCodeUnit(*const StringLiteral, usize) u32;
    853 
    854     pub const getLength = ZigClangStringLiteral_getLength;
    855     extern fn ZigClangStringLiteral_getLength(*const StringLiteral) c_uint;
    856 
    857     pub const getCharByteWidth = ZigClangStringLiteral_getCharByteWidth;
    858     extern fn ZigClangStringLiteral_getCharByteWidth(*const StringLiteral) c_uint;
    859 
    860     pub const getString_bytes_begin_size = ZigClangStringLiteral_getString_bytes_begin_size;
    861     extern fn ZigClangStringLiteral_getString_bytes_begin_size(*const StringLiteral, *usize) [*]const u8;
    862 };
    863 
    864 pub const StringRef = opaque {};
    865 
    866 pub const SwitchStmt = opaque {
    867     pub const getConditionVariableDeclStmt = ZigClangSwitchStmt_getConditionVariableDeclStmt;
    868     extern fn ZigClangSwitchStmt_getConditionVariableDeclStmt(*const SwitchStmt) ?*const DeclStmt;
    869 
    870     pub const getCond = ZigClangSwitchStmt_getCond;
    871     extern fn ZigClangSwitchStmt_getCond(*const SwitchStmt) *const Expr;
    872 
    873     pub const getBody = ZigClangSwitchStmt_getBody;
    874     extern fn ZigClangSwitchStmt_getBody(*const SwitchStmt) *const Stmt;
    875 
    876     pub const isAllEnumCasesCovered = ZigClangSwitchStmt_isAllEnumCasesCovered;
    877     extern fn ZigClangSwitchStmt_isAllEnumCasesCovered(*const SwitchStmt) bool;
    878 };
    879 
    880 pub const TagDecl = opaque {
    881     pub const isThisDeclarationADefinition = ZigClangTagDecl_isThisDeclarationADefinition;
    882     extern fn ZigClangTagDecl_isThisDeclarationADefinition(*const TagDecl) bool;
    883 };
    884 
    885 pub const Type = opaque {
    886     pub const getTypeClass = ZigClangType_getTypeClass;
    887     extern fn ZigClangType_getTypeClass(*const Type) TypeClass;
    888 
    889     pub const getPointeeType = ZigClangType_getPointeeType;
    890     extern fn ZigClangType_getPointeeType(*const Type) QualType;
    891 
    892     pub const isVoidType = ZigClangType_isVoidType;
    893     extern fn ZigClangType_isVoidType(*const Type) bool;
    894 
    895     pub const isConstantArrayType = ZigClangType_isConstantArrayType;
    896     extern fn ZigClangType_isConstantArrayType(*const Type) bool;
    897 
    898     pub const isRecordType = ZigClangType_isRecordType;
    899     extern fn ZigClangType_isRecordType(*const Type) bool;
    900 
    901     pub const isVectorType = ZigClangType_isVectorType;
    902     extern fn ZigClangType_isVectorType(*const Type) bool;
    903 
    904     pub const isIncompleteOrZeroLengthArrayType = ZigClangType_isIncompleteOrZeroLengthArrayType;
    905     extern fn ZigClangType_isIncompleteOrZeroLengthArrayType(*const Type, *const ASTContext) bool;
    906 
    907     pub const isArrayType = ZigClangType_isArrayType;
    908     extern fn ZigClangType_isArrayType(*const Type) bool;
    909 
    910     pub const isBooleanType = ZigClangType_isBooleanType;
    911     extern fn ZigClangType_isBooleanType(*const Type) bool;
    912 
    913     pub const getTypeClassName = ZigClangType_getTypeClassName;
    914     extern fn ZigClangType_getTypeClassName(*const Type) [*:0]const u8;
    915 
    916     pub const getAsArrayTypeUnsafe = ZigClangType_getAsArrayTypeUnsafe;
    917     extern fn ZigClangType_getAsArrayTypeUnsafe(*const Type) *const ArrayType;
    918 
    919     pub const getAsRecordType = ZigClangType_getAsRecordType;
    920     extern fn ZigClangType_getAsRecordType(*const Type) ?*const RecordType;
    921 
    922     pub const getAsUnionType = ZigClangType_getAsUnionType;
    923     extern fn ZigClangType_getAsUnionType(*const Type) ?*const RecordType;
    924 };
    925 
    926 pub const TypedefNameDecl = opaque {
    927     pub const getUnderlyingType = ZigClangTypedefNameDecl_getUnderlyingType;
    928     extern fn ZigClangTypedefNameDecl_getUnderlyingType(*const TypedefNameDecl) QualType;
    929 
    930     pub const getCanonicalDecl = ZigClangTypedefNameDecl_getCanonicalDecl;
    931     extern fn ZigClangTypedefNameDecl_getCanonicalDecl(*const TypedefNameDecl) ?*const TypedefNameDecl;
    932 
    933     pub const getLocation = ZigClangTypedefNameDecl_getLocation;
    934     extern fn ZigClangTypedefNameDecl_getLocation(*const TypedefNameDecl) SourceLocation;
    935 };
    936 
    937 pub const FileScopeAsmDecl = opaque {
    938     pub const getAsmString = ZigClangFileScopeAsmDecl_getAsmString;
    939     extern fn ZigClangFileScopeAsmDecl_getAsmString(*const FileScopeAsmDecl) *const StringLiteral;
    940 };
    941 
    942 pub const TypedefType = opaque {
    943     pub const getDecl = ZigClangTypedefType_getDecl;
    944     extern fn ZigClangTypedefType_getDecl(*const TypedefType) *const TypedefNameDecl;
    945 };
    946 
    947 pub const UnaryExprOrTypeTraitExpr = opaque {
    948     pub const getTypeOfArgument = ZigClangUnaryExprOrTypeTraitExpr_getTypeOfArgument;
    949     extern fn ZigClangUnaryExprOrTypeTraitExpr_getTypeOfArgument(*const UnaryExprOrTypeTraitExpr) QualType;
    950 
    951     pub const getBeginLoc = ZigClangUnaryExprOrTypeTraitExpr_getBeginLoc;
    952     extern fn ZigClangUnaryExprOrTypeTraitExpr_getBeginLoc(*const UnaryExprOrTypeTraitExpr) SourceLocation;
    953 
    954     pub const getKind = ZigClangUnaryExprOrTypeTraitExpr_getKind;
    955     extern fn ZigClangUnaryExprOrTypeTraitExpr_getKind(*const UnaryExprOrTypeTraitExpr) UnaryExprOrTypeTrait_Kind;
    956 };
    957 
    958 pub const UnaryOperator = opaque {
    959     pub const getOpcode = ZigClangUnaryOperator_getOpcode;
    960     extern fn ZigClangUnaryOperator_getOpcode(*const UnaryOperator) UO;
    961 
    962     pub const getType = ZigClangUnaryOperator_getType;
    963     extern fn ZigClangUnaryOperator_getType(*const UnaryOperator) QualType;
    964 
    965     pub const getSubExpr = ZigClangUnaryOperator_getSubExpr;
    966     extern fn ZigClangUnaryOperator_getSubExpr(*const UnaryOperator) *const Expr;
    967 
    968     pub const getBeginLoc = ZigClangUnaryOperator_getBeginLoc;
    969     extern fn ZigClangUnaryOperator_getBeginLoc(*const UnaryOperator) SourceLocation;
    970 };
    971 
    972 pub const ValueDecl = opaque {
    973     pub const getType = ZigClangValueDecl_getType;
    974     extern fn ZigClangValueDecl_getType(*const ValueDecl) QualType;
    975 };
    976 
    977 pub const VarDecl = opaque {
    978     pub const getLocation = ZigClangVarDecl_getLocation;
    979     extern fn ZigClangVarDecl_getLocation(*const VarDecl) SourceLocation;
    980 
    981     pub const hasInit = ZigClangVarDecl_hasInit;
    982     extern fn ZigClangVarDecl_hasInit(*const VarDecl) bool;
    983 
    984     pub const getStorageClass = ZigClangVarDecl_getStorageClass;
    985     extern fn ZigClangVarDecl_getStorageClass(*const VarDecl) StorageClass;
    986 
    987     pub const getType = ZigClangVarDecl_getType;
    988     extern fn ZigClangVarDecl_getType(*const VarDecl) QualType;
    989 
    990     pub const getInit = ZigClangVarDecl_getInit;
    991     extern fn ZigClangVarDecl_getInit(*const VarDecl) ?*const Expr;
    992 
    993     pub const getTLSKind = ZigClangVarDecl_getTLSKind;
    994     extern fn ZigClangVarDecl_getTLSKind(*const VarDecl) VarDecl_TLSKind;
    995 
    996     pub const getCanonicalDecl = ZigClangVarDecl_getCanonicalDecl;
    997     extern fn ZigClangVarDecl_getCanonicalDecl(*const VarDecl) ?*const VarDecl;
    998 
    999     pub const getSectionAttribute = ZigClangVarDecl_getSectionAttribute;
   1000     extern fn ZigClangVarDecl_getSectionAttribute(*const VarDecl, len: *usize) ?[*]const u8;
   1001 
   1002     pub const getAlignedAttribute = ZigClangVarDecl_getAlignedAttribute;
   1003     extern fn ZigClangVarDecl_getAlignedAttribute(*const VarDecl, *const ASTContext) c_uint;
   1004 
   1005     pub const getCleanupAttribute = ZigClangVarDecl_getCleanupAttribute;
   1006     extern fn ZigClangVarDecl_getCleanupAttribute(*const VarDecl) ?*const FunctionDecl;
   1007 
   1008     pub const getTypeSourceInfo_getType = ZigClangVarDecl_getTypeSourceInfo_getType;
   1009     extern fn ZigClangVarDecl_getTypeSourceInfo_getType(*const VarDecl) QualType;
   1010 
   1011     pub const isStaticLocal = ZigClangVarDecl_isStaticLocal;
   1012     extern fn ZigClangVarDecl_isStaticLocal(*const VarDecl) bool;
   1013 };
   1014 
   1015 pub const VectorType = opaque {
   1016     pub const getElementType = ZigClangVectorType_getElementType;
   1017     extern fn ZigClangVectorType_getElementType(*const VectorType) QualType;
   1018 
   1019     pub const getNumElements = ZigClangVectorType_getNumElements;
   1020     extern fn ZigClangVectorType_getNumElements(*const VectorType) c_uint;
   1021 };
   1022 
   1023 pub const WhileStmt = opaque {
   1024     pub const getCond = ZigClangWhileStmt_getCond;
   1025     extern fn ZigClangWhileStmt_getCond(*const WhileStmt) *const Expr;
   1026 
   1027     pub const getBody = ZigClangWhileStmt_getBody;
   1028     extern fn ZigClangWhileStmt_getBody(*const WhileStmt) *const Stmt;
   1029 };
   1030 
   1031 pub const InitListExpr = opaque {
   1032     pub const getInit = ZigClangInitListExpr_getInit;
   1033     extern fn ZigClangInitListExpr_getInit(*const InitListExpr, i: c_uint) *const Expr;
   1034 
   1035     pub const getArrayFiller = ZigClangInitListExpr_getArrayFiller;
   1036     extern fn ZigClangInitListExpr_getArrayFiller(*const InitListExpr) *const Expr;
   1037 
   1038     pub const getNumInits = ZigClangInitListExpr_getNumInits;
   1039     extern fn ZigClangInitListExpr_getNumInits(*const InitListExpr) c_uint;
   1040 
   1041     pub const getInitializedFieldInUnion = ZigClangInitListExpr_getInitializedFieldInUnion;
   1042     extern fn ZigClangInitListExpr_getInitializedFieldInUnion(*const InitListExpr) ?*FieldDecl;
   1043 };
   1044 
   1045 pub const BO = enum(c_int) {
   1046     PtrMemD,
   1047     PtrMemI,
   1048     Mul,
   1049     Div,
   1050     Rem,
   1051     Add,
   1052     Sub,
   1053     Shl,
   1054     Shr,
   1055     Cmp,
   1056     LT,
   1057     GT,
   1058     LE,
   1059     GE,
   1060     EQ,
   1061     NE,
   1062     And,
   1063     Xor,
   1064     Or,
   1065     LAnd,
   1066     LOr,
   1067     Assign,
   1068     MulAssign,
   1069     DivAssign,
   1070     RemAssign,
   1071     AddAssign,
   1072     SubAssign,
   1073     ShlAssign,
   1074     ShrAssign,
   1075     AndAssign,
   1076     XorAssign,
   1077     OrAssign,
   1078     Comma,
   1079 };
   1080 
   1081 pub const UO = enum(c_int) {
   1082     PostInc,
   1083     PostDec,
   1084     PreInc,
   1085     PreDec,
   1086     AddrOf,
   1087     Deref,
   1088     Plus,
   1089     Minus,
   1090     Not,
   1091     LNot,
   1092     Real,
   1093     Imag,
   1094     Extension,
   1095     Coawait,
   1096 };
   1097 
   1098 pub const TypeClass = enum(c_int) {
   1099     Adjusted,
   1100     Decayed,
   1101     ConstantArray,
   1102     DependentSizedArray,
   1103     IncompleteArray,
   1104     VariableArray,
   1105     Atomic,
   1106     Attributed,
   1107     BlockPointer,
   1108     Builtin,
   1109     Complex,
   1110     Decltype,
   1111     Auto,
   1112     DeducedTemplateSpecialization,
   1113     DependentAddressSpace,
   1114     DependentExtInt,
   1115     DependentName,
   1116     DependentSizedExtVector,
   1117     DependentTemplateSpecialization,
   1118     DependentVector,
   1119     Elaborated,
   1120     ExtInt,
   1121     FunctionNoProto,
   1122     FunctionProto,
   1123     InjectedClassName,
   1124     MacroQualified,
   1125     ConstantMatrix,
   1126     DependentSizedMatrix,
   1127     MemberPointer,
   1128     ObjCObjectPointer,
   1129     ObjCObject,
   1130     ObjCInterface,
   1131     ObjCTypeParam,
   1132     PackExpansion,
   1133     Paren,
   1134     Pipe,
   1135     Pointer,
   1136     LValueReference,
   1137     RValueReference,
   1138     SubstTemplateTypeParmPack,
   1139     SubstTemplateTypeParm,
   1140     Enum,
   1141     Record,
   1142     TemplateSpecialization,
   1143     TemplateTypeParm,
   1144     TypeOfExpr,
   1145     TypeOf,
   1146     Typedef,
   1147     UnaryTransform,
   1148     UnresolvedUsing,
   1149     Vector,
   1150     ExtVector,
   1151 };
   1152 
   1153 const StmtClass = enum(c_int) {
   1154     NoStmtClass,
   1155     GCCAsmStmtClass,
   1156     MSAsmStmtClass,
   1157     BreakStmtClass,
   1158     CXXCatchStmtClass,
   1159     CXXForRangeStmtClass,
   1160     CXXTryStmtClass,
   1161     CapturedStmtClass,
   1162     CompoundStmtClass,
   1163     ContinueStmtClass,
   1164     CoreturnStmtClass,
   1165     CoroutineBodyStmtClass,
   1166     DeclStmtClass,
   1167     DoStmtClass,
   1168     ForStmtClass,
   1169     GotoStmtClass,
   1170     IfStmtClass,
   1171     IndirectGotoStmtClass,
   1172     MSDependentExistsStmtClass,
   1173     NullStmtClass,
   1174     OMPCanonicalLoopClass,
   1175     OMPAtomicDirectiveClass,
   1176     OMPBarrierDirectiveClass,
   1177     OMPCancelDirectiveClass,
   1178     OMPCancellationPointDirectiveClass,
   1179     OMPCriticalDirectiveClass,
   1180     OMPDepobjDirectiveClass,
   1181     OMPDispatchDirectiveClass,
   1182     OMPFlushDirectiveClass,
   1183     OMPInteropDirectiveClass,
   1184     OMPDistributeDirectiveClass,
   1185     OMPDistributeParallelForDirectiveClass,
   1186     OMPDistributeParallelForSimdDirectiveClass,
   1187     OMPDistributeSimdDirectiveClass,
   1188     OMPForDirectiveClass,
   1189     OMPForSimdDirectiveClass,
   1190     OMPMasterTaskLoopDirectiveClass,
   1191     OMPMasterTaskLoopSimdDirectiveClass,
   1192     OMPParallelForDirectiveClass,
   1193     OMPParallelForSimdDirectiveClass,
   1194     OMPParallelMasterTaskLoopDirectiveClass,
   1195     OMPParallelMasterTaskLoopSimdDirectiveClass,
   1196     OMPSimdDirectiveClass,
   1197     OMPTargetParallelForSimdDirectiveClass,
   1198     OMPTargetSimdDirectiveClass,
   1199     OMPTargetTeamsDistributeDirectiveClass,
   1200     OMPTargetTeamsDistributeParallelForDirectiveClass,
   1201     OMPTargetTeamsDistributeParallelForSimdDirectiveClass,
   1202     OMPTargetTeamsDistributeSimdDirectiveClass,
   1203     OMPTaskLoopDirectiveClass,
   1204     OMPTaskLoopSimdDirectiveClass,
   1205     OMPTeamsDistributeDirectiveClass,
   1206     OMPTeamsDistributeParallelForDirectiveClass,
   1207     OMPTeamsDistributeParallelForSimdDirectiveClass,
   1208     OMPTeamsDistributeSimdDirectiveClass,
   1209     OMPTileDirectiveClass,
   1210     OMPUnrollDirectiveClass,
   1211     OMPMaskedDirectiveClass,
   1212     OMPMasterDirectiveClass,
   1213     OMPOrderedDirectiveClass,
   1214     OMPParallelDirectiveClass,
   1215     OMPParallelMasterDirectiveClass,
   1216     OMPParallelSectionsDirectiveClass,
   1217     OMPScanDirectiveClass,
   1218     OMPSectionDirectiveClass,
   1219     OMPSectionsDirectiveClass,
   1220     OMPSingleDirectiveClass,
   1221     OMPTargetDataDirectiveClass,
   1222     OMPTargetDirectiveClass,
   1223     OMPTargetEnterDataDirectiveClass,
   1224     OMPTargetExitDataDirectiveClass,
   1225     OMPTargetParallelDirectiveClass,
   1226     OMPTargetParallelForDirectiveClass,
   1227     OMPTargetTeamsDirectiveClass,
   1228     OMPTargetUpdateDirectiveClass,
   1229     OMPTaskDirectiveClass,
   1230     OMPTaskgroupDirectiveClass,
   1231     OMPTaskwaitDirectiveClass,
   1232     OMPTaskyieldDirectiveClass,
   1233     OMPTeamsDirectiveClass,
   1234     ObjCAtCatchStmtClass,
   1235     ObjCAtFinallyStmtClass,
   1236     ObjCAtSynchronizedStmtClass,
   1237     ObjCAtThrowStmtClass,
   1238     ObjCAtTryStmtClass,
   1239     ObjCAutoreleasePoolStmtClass,
   1240     ObjCForCollectionStmtClass,
   1241     ReturnStmtClass,
   1242     SEHExceptStmtClass,
   1243     SEHFinallyStmtClass,
   1244     SEHLeaveStmtClass,
   1245     SEHTryStmtClass,
   1246     CaseStmtClass,
   1247     DefaultStmtClass,
   1248     SwitchStmtClass,
   1249     AttributedStmtClass,
   1250     BinaryConditionalOperatorClass,
   1251     ConditionalOperatorClass,
   1252     AddrLabelExprClass,
   1253     ArrayInitIndexExprClass,
   1254     ArrayInitLoopExprClass,
   1255     ArraySubscriptExprClass,
   1256     ArrayTypeTraitExprClass,
   1257     AsTypeExprClass,
   1258     AtomicExprClass,
   1259     BinaryOperatorClass,
   1260     CompoundAssignOperatorClass,
   1261     BlockExprClass,
   1262     CXXBindTemporaryExprClass,
   1263     CXXBoolLiteralExprClass,
   1264     CXXConstructExprClass,
   1265     CXXTemporaryObjectExprClass,
   1266     CXXDefaultArgExprClass,
   1267     CXXDefaultInitExprClass,
   1268     CXXDeleteExprClass,
   1269     CXXDependentScopeMemberExprClass,
   1270     CXXFoldExprClass,
   1271     CXXInheritedCtorInitExprClass,
   1272     CXXNewExprClass,
   1273     CXXNoexceptExprClass,
   1274     CXXNullPtrLiteralExprClass,
   1275     CXXPseudoDestructorExprClass,
   1276     CXXRewrittenBinaryOperatorClass,
   1277     CXXScalarValueInitExprClass,
   1278     CXXStdInitializerListExprClass,
   1279     CXXThisExprClass,
   1280     CXXThrowExprClass,
   1281     CXXTypeidExprClass,
   1282     CXXUnresolvedConstructExprClass,
   1283     CXXUuidofExprClass,
   1284     CallExprClass,
   1285     CUDAKernelCallExprClass,
   1286     CXXMemberCallExprClass,
   1287     CXXOperatorCallExprClass,
   1288     UserDefinedLiteralClass,
   1289     BuiltinBitCastExprClass,
   1290     CStyleCastExprClass,
   1291     CXXFunctionalCastExprClass,
   1292     CXXAddrspaceCastExprClass,
   1293     CXXConstCastExprClass,
   1294     CXXDynamicCastExprClass,
   1295     CXXReinterpretCastExprClass,
   1296     CXXStaticCastExprClass,
   1297     ObjCBridgedCastExprClass,
   1298     ImplicitCastExprClass,
   1299     CharacterLiteralClass,
   1300     ChooseExprClass,
   1301     CompoundLiteralExprClass,
   1302     ConceptSpecializationExprClass,
   1303     ConvertVectorExprClass,
   1304     CoawaitExprClass,
   1305     CoyieldExprClass,
   1306     DeclRefExprClass,
   1307     DependentCoawaitExprClass,
   1308     DependentScopeDeclRefExprClass,
   1309     DesignatedInitExprClass,
   1310     DesignatedInitUpdateExprClass,
   1311     ExpressionTraitExprClass,
   1312     ExtVectorElementExprClass,
   1313     FixedPointLiteralClass,
   1314     FloatingLiteralClass,
   1315     ConstantExprClass,
   1316     ExprWithCleanupsClass,
   1317     FunctionParmPackExprClass,
   1318     GNUNullExprClass,
   1319     GenericSelectionExprClass,
   1320     ImaginaryLiteralClass,
   1321     ImplicitValueInitExprClass,
   1322     InitListExprClass,
   1323     IntegerLiteralClass,
   1324     LambdaExprClass,
   1325     MSPropertyRefExprClass,
   1326     MSPropertySubscriptExprClass,
   1327     MaterializeTemporaryExprClass,
   1328     MatrixSubscriptExprClass,
   1329     MemberExprClass,
   1330     NoInitExprClass,
   1331     OMPArraySectionExprClass,
   1332     OMPArrayShapingExprClass,
   1333     OMPIteratorExprClass,
   1334     ObjCArrayLiteralClass,
   1335     ObjCAvailabilityCheckExprClass,
   1336     ObjCBoolLiteralExprClass,
   1337     ObjCBoxedExprClass,
   1338     ObjCDictionaryLiteralClass,
   1339     ObjCEncodeExprClass,
   1340     ObjCIndirectCopyRestoreExprClass,
   1341     ObjCIsaExprClass,
   1342     ObjCIvarRefExprClass,
   1343     ObjCMessageExprClass,
   1344     ObjCPropertyRefExprClass,
   1345     ObjCProtocolExprClass,
   1346     ObjCSelectorExprClass,
   1347     ObjCStringLiteralClass,
   1348     ObjCSubscriptRefExprClass,
   1349     OffsetOfExprClass,
   1350     OpaqueValueExprClass,
   1351     UnresolvedLookupExprClass,
   1352     UnresolvedMemberExprClass,
   1353     PackExpansionExprClass,
   1354     ParenExprClass,
   1355     ParenListExprClass,
   1356     PredefinedExprClass,
   1357     PseudoObjectExprClass,
   1358     RecoveryExprClass,
   1359     RequiresExprClass,
   1360     SYCLUniqueStableNameExprClass,
   1361     ShuffleVectorExprClass,
   1362     SizeOfPackExprClass,
   1363     SourceLocExprClass,
   1364     StmtExprClass,
   1365     StringLiteralClass,
   1366     SubstNonTypeTemplateParmExprClass,
   1367     SubstNonTypeTemplateParmPackExprClass,
   1368     TypeTraitExprClass,
   1369     TypoExprClass,
   1370     UnaryExprOrTypeTraitExprClass,
   1371     UnaryOperatorClass,
   1372     VAArgExprClass,
   1373     LabelStmtClass,
   1374     WhileStmtClass,
   1375 };
   1376 
   1377 pub const CK = enum(c_int) {
   1378     Dependent,
   1379     BitCast,
   1380     LValueBitCast,
   1381     LValueToRValueBitCast,
   1382     LValueToRValue,
   1383     NoOp,
   1384     BaseToDerived,
   1385     DerivedToBase,
   1386     UncheckedDerivedToBase,
   1387     Dynamic,
   1388     ToUnion,
   1389     ArrayToPointerDecay,
   1390     FunctionToPointerDecay,
   1391     NullToPointer,
   1392     NullToMemberPointer,
   1393     BaseToDerivedMemberPointer,
   1394     DerivedToBaseMemberPointer,
   1395     MemberPointerToBoolean,
   1396     ReinterpretMemberPointer,
   1397     UserDefinedConversion,
   1398     ConstructorConversion,
   1399     IntegralToPointer,
   1400     PointerToIntegral,
   1401     PointerToBoolean,
   1402     ToVoid,
   1403     MatrixCast,
   1404     VectorSplat,
   1405     IntegralCast,
   1406     IntegralToBoolean,
   1407     IntegralToFloating,
   1408     FloatingToFixedPoint,
   1409     FixedPointToFloating,
   1410     FixedPointCast,
   1411     FixedPointToIntegral,
   1412     IntegralToFixedPoint,
   1413     FixedPointToBoolean,
   1414     FloatingToIntegral,
   1415     FloatingToBoolean,
   1416     BooleanToSignedIntegral,
   1417     FloatingCast,
   1418     CPointerToObjCPointerCast,
   1419     BlockPointerToObjCPointerCast,
   1420     AnyPointerToBlockPointerCast,
   1421     ObjCObjectLValueCast,
   1422     FloatingRealToComplex,
   1423     FloatingComplexToReal,
   1424     FloatingComplexToBoolean,
   1425     FloatingComplexCast,
   1426     FloatingComplexToIntegralComplex,
   1427     IntegralRealToComplex,
   1428     IntegralComplexToReal,
   1429     IntegralComplexToBoolean,
   1430     IntegralComplexCast,
   1431     IntegralComplexToFloatingComplex,
   1432     ARCProduceObject,
   1433     ARCConsumeObject,
   1434     ARCReclaimReturnedObject,
   1435     ARCExtendBlockObject,
   1436     AtomicToNonAtomic,
   1437     NonAtomicToAtomic,
   1438     CopyAndAutoreleaseBlockObject,
   1439     BuiltinFnToFnPtr,
   1440     ZeroToOCLOpaqueType,
   1441     AddressSpaceConversion,
   1442     IntToOCLSampler,
   1443 };
   1444 
   1445 pub const DeclKind = enum(c_int) {
   1446     AccessSpec,
   1447     Block,
   1448     Captured,
   1449     ClassScopeFunctionSpecialization,
   1450     Empty,
   1451     Export,
   1452     ExternCContext,
   1453     FileScopeAsm,
   1454     Friend,
   1455     FriendTemplate,
   1456     Import,
   1457     LifetimeExtendedTemporary,
   1458     LinkageSpec,
   1459     Using,
   1460     UsingEnum,
   1461     Label,
   1462     Namespace,
   1463     NamespaceAlias,
   1464     ObjCCompatibleAlias,
   1465     ObjCCategory,
   1466     ObjCCategoryImpl,
   1467     ObjCImplementation,
   1468     ObjCInterface,
   1469     ObjCProtocol,
   1470     ObjCMethod,
   1471     ObjCProperty,
   1472     BuiltinTemplate,
   1473     Concept,
   1474     ClassTemplate,
   1475     FunctionTemplate,
   1476     TypeAliasTemplate,
   1477     VarTemplate,
   1478     TemplateTemplateParm,
   1479     Enum,
   1480     Record,
   1481     CXXRecord,
   1482     ClassTemplateSpecialization,
   1483     ClassTemplatePartialSpecialization,
   1484     TemplateTypeParm,
   1485     ObjCTypeParam,
   1486     TypeAlias,
   1487     Typedef,
   1488     UnresolvedUsingTypename,
   1489     UnresolvedUsingIfExists,
   1490     UsingDirective,
   1491     UsingPack,
   1492     UsingShadow,
   1493     ConstructorUsingShadow,
   1494     Binding,
   1495     Field,
   1496     ObjCAtDefsField,
   1497     ObjCIvar,
   1498     Function,
   1499     CXXDeductionGuide,
   1500     CXXMethod,
   1501     CXXConstructor,
   1502     CXXConversion,
   1503     CXXDestructor,
   1504     MSProperty,
   1505     NonTypeTemplateParm,
   1506     Var,
   1507     Decomposition,
   1508     ImplicitParam,
   1509     OMPCapturedExpr,
   1510     ParmVar,
   1511     VarTemplateSpecialization,
   1512     VarTemplatePartialSpecialization,
   1513     EnumConstant,
   1514     IndirectField,
   1515     MSGuid,
   1516     OMPDeclareMapper,
   1517     OMPDeclareReduction,
   1518     TemplateParamObject,
   1519     UnresolvedUsingValue,
   1520     OMPAllocate,
   1521     OMPRequires,
   1522     OMPThreadPrivate,
   1523     ObjCPropertyImpl,
   1524     PragmaComment,
   1525     PragmaDetectMismatch,
   1526     RequiresExprBody,
   1527     StaticAssert,
   1528     TranslationUnit,
   1529 };
   1530 
   1531 pub const BuiltinTypeKind = enum(c_int) {
   1532     OCLImage1dRO,
   1533     OCLImage1dArrayRO,
   1534     OCLImage1dBufferRO,
   1535     OCLImage2dRO,
   1536     OCLImage2dArrayRO,
   1537     OCLImage2dDepthRO,
   1538     OCLImage2dArrayDepthRO,
   1539     OCLImage2dMSAARO,
   1540     OCLImage2dArrayMSAARO,
   1541     OCLImage2dMSAADepthRO,
   1542     OCLImage2dArrayMSAADepthRO,
   1543     OCLImage3dRO,
   1544     OCLImage1dWO,
   1545     OCLImage1dArrayWO,
   1546     OCLImage1dBufferWO,
   1547     OCLImage2dWO,
   1548     OCLImage2dArrayWO,
   1549     OCLImage2dDepthWO,
   1550     OCLImage2dArrayDepthWO,
   1551     OCLImage2dMSAAWO,
   1552     OCLImage2dArrayMSAAWO,
   1553     OCLImage2dMSAADepthWO,
   1554     OCLImage2dArrayMSAADepthWO,
   1555     OCLImage3dWO,
   1556     OCLImage1dRW,
   1557     OCLImage1dArrayRW,
   1558     OCLImage1dBufferRW,
   1559     OCLImage2dRW,
   1560     OCLImage2dArrayRW,
   1561     OCLImage2dDepthRW,
   1562     OCLImage2dArrayDepthRW,
   1563     OCLImage2dMSAARW,
   1564     OCLImage2dArrayMSAARW,
   1565     OCLImage2dMSAADepthRW,
   1566     OCLImage2dArrayMSAADepthRW,
   1567     OCLImage3dRW,
   1568     OCLIntelSubgroupAVCMcePayload,
   1569     OCLIntelSubgroupAVCImePayload,
   1570     OCLIntelSubgroupAVCRefPayload,
   1571     OCLIntelSubgroupAVCSicPayload,
   1572     OCLIntelSubgroupAVCMceResult,
   1573     OCLIntelSubgroupAVCImeResult,
   1574     OCLIntelSubgroupAVCRefResult,
   1575     OCLIntelSubgroupAVCSicResult,
   1576     OCLIntelSubgroupAVCImeResultSingleRefStreamout,
   1577     OCLIntelSubgroupAVCImeResultDualRefStreamout,
   1578     OCLIntelSubgroupAVCImeSingleRefStreamin,
   1579     OCLIntelSubgroupAVCImeDualRefStreamin,
   1580     SveInt8,
   1581     SveInt16,
   1582     SveInt32,
   1583     SveInt64,
   1584     SveUint8,
   1585     SveUint16,
   1586     SveUint32,
   1587     SveUint64,
   1588     SveFloat16,
   1589     SveFloat32,
   1590     SveFloat64,
   1591     SveBFloat16,
   1592     SveInt8x2,
   1593     SveInt16x2,
   1594     SveInt32x2,
   1595     SveInt64x2,
   1596     SveUint8x2,
   1597     SveUint16x2,
   1598     SveUint32x2,
   1599     SveUint64x2,
   1600     SveFloat16x2,
   1601     SveFloat32x2,
   1602     SveFloat64x2,
   1603     SveBFloat16x2,
   1604     SveInt8x3,
   1605     SveInt16x3,
   1606     SveInt32x3,
   1607     SveInt64x3,
   1608     SveUint8x3,
   1609     SveUint16x3,
   1610     SveUint32x3,
   1611     SveUint64x3,
   1612     SveFloat16x3,
   1613     SveFloat32x3,
   1614     SveFloat64x3,
   1615     SveBFloat16x3,
   1616     SveInt8x4,
   1617     SveInt16x4,
   1618     SveInt32x4,
   1619     SveInt64x4,
   1620     SveUint8x4,
   1621     SveUint16x4,
   1622     SveUint32x4,
   1623     SveUint64x4,
   1624     SveFloat16x4,
   1625     SveFloat32x4,
   1626     SveFloat64x4,
   1627     SveBFloat16x4,
   1628     SveBool,
   1629     VectorQuad,
   1630     VectorPair,
   1631     RvvInt8mf8,
   1632     RvvInt8mf4,
   1633     RvvInt8mf2,
   1634     RvvInt8m1,
   1635     RvvInt8m2,
   1636     RvvInt8m4,
   1637     RvvInt8m8,
   1638     RvvUint8mf8,
   1639     RvvUint8mf4,
   1640     RvvUint8mf2,
   1641     RvvUint8m1,
   1642     RvvUint8m2,
   1643     RvvUint8m4,
   1644     RvvUint8m8,
   1645     RvvInt16mf4,
   1646     RvvInt16mf2,
   1647     RvvInt16m1,
   1648     RvvInt16m2,
   1649     RvvInt16m4,
   1650     RvvInt16m8,
   1651     RvvUint16mf4,
   1652     RvvUint16mf2,
   1653     RvvUint16m1,
   1654     RvvUint16m2,
   1655     RvvUint16m4,
   1656     RvvUint16m8,
   1657     RvvInt32mf2,
   1658     RvvInt32m1,
   1659     RvvInt32m2,
   1660     RvvInt32m4,
   1661     RvvInt32m8,
   1662     RvvUint32mf2,
   1663     RvvUint32m1,
   1664     RvvUint32m2,
   1665     RvvUint32m4,
   1666     RvvUint32m8,
   1667     RvvInt64m1,
   1668     RvvInt64m2,
   1669     RvvInt64m4,
   1670     RvvInt64m8,
   1671     RvvUint64m1,
   1672     RvvUint64m2,
   1673     RvvUint64m4,
   1674     RvvUint64m8,
   1675     RvvFloat16mf4,
   1676     RvvFloat16mf2,
   1677     RvvFloat16m1,
   1678     RvvFloat16m2,
   1679     RvvFloat16m4,
   1680     RvvFloat16m8,
   1681     RvvFloat32mf2,
   1682     RvvFloat32m1,
   1683     RvvFloat32m2,
   1684     RvvFloat32m4,
   1685     RvvFloat32m8,
   1686     RvvFloat64m1,
   1687     RvvFloat64m2,
   1688     RvvFloat64m4,
   1689     RvvFloat64m8,
   1690     RvvBool1,
   1691     RvvBool2,
   1692     RvvBool4,
   1693     RvvBool8,
   1694     RvvBool16,
   1695     RvvBool32,
   1696     RvvBool64,
   1697     Void,
   1698     Bool,
   1699     Char_U,
   1700     UChar,
   1701     WChar_U,
   1702     Char8,
   1703     Char16,
   1704     Char32,
   1705     UShort,
   1706     UInt,
   1707     ULong,
   1708     ULongLong,
   1709     UInt128,
   1710     Char_S,
   1711     SChar,
   1712     WChar_S,
   1713     Short,
   1714     Int,
   1715     Long,
   1716     LongLong,
   1717     Int128,
   1718     ShortAccum,
   1719     Accum,
   1720     LongAccum,
   1721     UShortAccum,
   1722     UAccum,
   1723     ULongAccum,
   1724     ShortFract,
   1725     Fract,
   1726     LongFract,
   1727     UShortFract,
   1728     UFract,
   1729     ULongFract,
   1730     SatShortAccum,
   1731     SatAccum,
   1732     SatLongAccum,
   1733     SatUShortAccum,
   1734     SatUAccum,
   1735     SatULongAccum,
   1736     SatShortFract,
   1737     SatFract,
   1738     SatLongFract,
   1739     SatUShortFract,
   1740     SatUFract,
   1741     SatULongFract,
   1742     Half,
   1743     Float,
   1744     Double,
   1745     LongDouble,
   1746     Float16,
   1747     BFloat16,
   1748     Float128,
   1749     NullPtr,
   1750     ObjCId,
   1751     ObjCClass,
   1752     ObjCSel,
   1753     OCLSampler,
   1754     OCLEvent,
   1755     OCLClkEvent,
   1756     OCLQueue,
   1757     OCLReserveID,
   1758     Dependent,
   1759     Overload,
   1760     BoundMember,
   1761     PseudoObject,
   1762     UnknownAny,
   1763     BuiltinFn,
   1764     ARCUnbridgedCast,
   1765     IncompleteMatrixIdx,
   1766     OMPArraySection,
   1767     OMPArrayShaping,
   1768     OMPIterator,
   1769 };
   1770 
   1771 pub const CallingConv = enum(c_int) {
   1772     C,
   1773     X86StdCall,
   1774     X86FastCall,
   1775     X86ThisCall,
   1776     X86VectorCall,
   1777     X86Pascal,
   1778     Win64,
   1779     X86_64SysV,
   1780     X86RegCall,
   1781     AAPCS,
   1782     AAPCS_VFP,
   1783     IntelOclBicc,
   1784     SpirFunction,
   1785     OpenCLKernel,
   1786     Swift,
   1787     SwiftAsync,
   1788     PreserveMost,
   1789     PreserveAll,
   1790     AArch64VectorCall,
   1791 };
   1792 
   1793 pub const StorageClass = enum(c_int) {
   1794     None,
   1795     Extern,
   1796     Static,
   1797     PrivateExtern,
   1798     Auto,
   1799     Register,
   1800 };
   1801 
   1802 pub const APFloat_roundingMode = enum(i8) {
   1803     TowardZero = 0,
   1804     NearestTiesToEven = 1,
   1805     TowardPositive = 2,
   1806     TowardNegative = 3,
   1807     NearestTiesToAway = 4,
   1808     Dynamic = 7,
   1809     Invalid = -1,
   1810 };
   1811 
   1812 pub const StringLiteral_StringKind = enum(c_int) {
   1813     Ascii,
   1814     Wide,
   1815     UTF8,
   1816     UTF16,
   1817     UTF32,
   1818 };
   1819 
   1820 pub const CharacterLiteral_CharacterKind = enum(c_int) {
   1821     Ascii,
   1822     Wide,
   1823     UTF8,
   1824     UTF16,
   1825     UTF32,
   1826 };
   1827 
   1828 pub const VarDecl_TLSKind = enum(c_int) {
   1829     None,
   1830     Static,
   1831     Dynamic,
   1832 };
   1833 
   1834 pub const ElaboratedTypeKeyword = enum(c_int) {
   1835     Struct,
   1836     Interface,
   1837     Union,
   1838     Class,
   1839     Enum,
   1840     Typename,
   1841     None,
   1842 };
   1843 
   1844 pub const PreprocessedEntity_EntityKind = enum(c_int) {
   1845     InvalidKind,
   1846     MacroExpansionKind,
   1847     MacroDefinitionKind,
   1848     InclusionDirectiveKind,
   1849 };
   1850 
   1851 pub const Expr_ConstantExprKind = enum(c_int) {
   1852     Normal,
   1853     NonClassTemplateArgument,
   1854     ClassTemplateArgument,
   1855     ImmediateInvocation,
   1856 };
   1857 
   1858 pub const UnaryExprOrTypeTrait_Kind = enum(c_int) {
   1859     SizeOf,
   1860     AlignOf,
   1861     VecStep,
   1862     OpenMPRequiredSimdAlign,
   1863     PreferredAlignOf,
   1864 };
   1865 
   1866 pub const OffsetOfNode_Kind = enum(c_int) {
   1867     Array,
   1868     Field,
   1869     Identifier,
   1870     Base,
   1871 };
   1872 
   1873 pub const Stage2ErrorMsg = extern struct {
   1874     filename_ptr: ?[*]const u8,
   1875     filename_len: usize,
   1876     msg_ptr: [*]const u8,
   1877     msg_len: usize,
   1878     // valid until the ASTUnit is freed
   1879     source: ?[*]const u8,
   1880     // 0 based
   1881     line: c_uint,
   1882     // 0 based
   1883     column: c_uint,
   1884     // byte offset into source
   1885     offset: c_uint,
   1886 
   1887     pub const delete = ZigClangErrorMsg_delete;
   1888     extern fn ZigClangErrorMsg_delete(ptr: [*]Stage2ErrorMsg, len: usize) void;
   1889 };
   1890 
   1891 pub const LoadFromCommandLine = ZigClangLoadFromCommandLine;
   1892 extern fn ZigClangLoadFromCommandLine(
   1893     args_begin: [*]?[*]const u8,
   1894     args_end: [*]?[*]const u8,
   1895     errors_ptr: *[*]Stage2ErrorMsg,
   1896     errors_len: *usize,
   1897     resources_path: [*:0]const u8,
   1898 ) ?*ASTUnit;