// Automatically generated by clay-bindgen
// language: c

import libc.*;

private alias OpaquePointer = RawPointer;
private alias UnknownType = Int;
private alias AUnionType = Int;


alias CXIndex = RawPointer;

alias CXTranslationUnit = OpaquePointer;

alias CXClientData = RawPointer;

record Struct_CXUnsavedFile (
    Filename : Pointer[CChar],
    Contents : Pointer[CChar],
    Length : CULong,
);

alias CXAvailability_Available = 0;
alias CXAvailability_Deprecated = 1;
alias CXAvailability_NotAvailable = 2;
alias CXAvailability_NotAccessible = 3;

record UnnamedStruct (
    data : RawPointer,
    private_flags : UInt,
);

alias CXString = UnnamedStruct;

external clang_getCString(
    string : CXString) : Pointer[CChar];

external clang_disposeString(
    string : CXString) : ;

external clang_createIndex(
    excludeDeclarationsFromPCH : Int,
    displayDiagnostics : Int) : CXIndex;

external clang_disposeIndex(
    index : CXIndex) : ;

alias CXFile = RawPointer;

external clang_getFileName(
    SFile : CXFile) : CXString;

external clang_getFileTime(
    SFile : CXFile) : CLong;

external clang_isFileMultipleIncludeGuarded(
    tu : CXTranslationUnit,
    file : CXFile) : UInt;

external clang_getFile(
    tu : CXTranslationUnit,
    file_name : Pointer[CChar]) : CXFile;

record UnnamedStruct2 (
    ptr_data : Array[RawPointer,2],
    int_data : UInt,
);

alias CXSourceLocation = UnnamedStruct2;

record UnnamedStruct3 (
    ptr_data : Array[RawPointer,2],
    begin_int_data : UInt,
    end_int_data : UInt,
);

alias CXSourceRange = UnnamedStruct3;

external clang_getNullLocation() : CXSourceLocation;

external clang_equalLocations(
    loc1 : CXSourceLocation,
    loc2 : CXSourceLocation) : UInt;

external clang_getLocation(
    tu : CXTranslationUnit,
    file : CXFile,
    line : UInt,
    column : UInt) : CXSourceLocation;

external clang_getLocationForOffset(
    tu : CXTranslationUnit,
    file : CXFile,
    offset : UInt) : CXSourceLocation;

external clang_getNullRange() : CXSourceRange;

external clang_getRange(
    begin : CXSourceLocation,
    end : CXSourceLocation) : CXSourceRange;

external clang_equalRanges(
    range1 : CXSourceRange,
    range2 : CXSourceRange) : UInt;

external clang_Range_isNull(
    range : CXSourceRange) : Int;

external clang_getExpansionLocation(
    location : CXSourceLocation,
    file : Pointer[CXFile],
    line : Pointer[UInt],
    column : Pointer[UInt],
    offset : Pointer[UInt]) : ;

external clang_getPresumedLocation(
    location : CXSourceLocation,
    filename : Pointer[CXString],
    line : Pointer[UInt],
    column : Pointer[UInt]) : ;

external clang_getInstantiationLocation(
    location : CXSourceLocation,
    file : Pointer[CXFile],
    line : Pointer[UInt],
    column : Pointer[UInt],
    offset : Pointer[UInt]) : ;

external clang_getSpellingLocation(
    location : CXSourceLocation,
    file : Pointer[CXFile],
    line : Pointer[UInt],
    column : Pointer[UInt],
    offset : Pointer[UInt]) : ;

external clang_getRangeStart(
    range : CXSourceRange) : CXSourceLocation;

external clang_getRangeEnd(
    range : CXSourceRange) : CXSourceLocation;

alias CXDiagnostic_Ignored = 0;
alias CXDiagnostic_Note = 1;
alias CXDiagnostic_Warning = 2;
alias CXDiagnostic_Error = 3;
alias CXDiagnostic_Fatal = 4;

alias CXDiagnostic = RawPointer;

external clang_getNumDiagnostics(
    Unit : CXTranslationUnit) : UInt;

external clang_getDiagnostic(
    Unit : CXTranslationUnit,
    Index : UInt) : CXDiagnostic;

external clang_disposeDiagnostic(
    Diagnostic : CXDiagnostic) : ;

alias CXDiagnostic_DisplaySourceLocation = 1;
alias CXDiagnostic_DisplayColumn = 2;
alias CXDiagnostic_DisplaySourceRanges = 4;
alias CXDiagnostic_DisplayOption = 8;
alias CXDiagnostic_DisplayCategoryId = 16;
alias CXDiagnostic_DisplayCategoryName = 32;

external clang_formatDiagnostic(
    Diagnostic : CXDiagnostic,
    Options : UInt) : CXString;

external clang_defaultDiagnosticDisplayOptions() : UInt;

external clang_getDiagnosticSeverity(
    argument0 : CXDiagnostic) : Int;

external clang_getDiagnosticLocation(
    argument0 : CXDiagnostic) : CXSourceLocation;

external clang_getDiagnosticSpelling(
    argument0 : CXDiagnostic) : CXString;

external clang_getDiagnosticOption(
    Diag : CXDiagnostic,
    Disable : Pointer[CXString]) : CXString;

external clang_getDiagnosticCategory(
    argument0 : CXDiagnostic) : UInt;

external clang_getDiagnosticCategoryName(
    Category : UInt) : CXString;

external clang_getDiagnosticNumRanges(
    argument0 : CXDiagnostic) : UInt;

external clang_getDiagnosticRange(
    Diagnostic : CXDiagnostic,
    Range : UInt) : CXSourceRange;

external clang_getDiagnosticNumFixIts(
    Diagnostic : CXDiagnostic) : UInt;

external clang_getDiagnosticFixIt(
    Diagnostic : CXDiagnostic,
    FixIt : UInt,
    ReplacementRange : Pointer[CXSourceRange]) : CXString;

external clang_getTranslationUnitSpelling(
    CTUnit : CXTranslationUnit) : CXString;

external clang_createTranslationUnitFromSourceFile(
    CIdx : CXIndex,
    source_filename : Pointer[CChar],
    num_clang_command_line_args : Int,
    clang_command_line_args : Pointer[Pointer[CChar]],
    num_unsaved_files : UInt,
    unsaved_files : Pointer[Struct_CXUnsavedFile]) : CXTranslationUnit;

external clang_createTranslationUnit(
    argument0 : CXIndex,
    ast_filename : Pointer[CChar]) : CXTranslationUnit;

alias CXTranslationUnit_None = 0;
alias CXTranslationUnit_DetailedPreprocessingRecord = 1;
alias CXTranslationUnit_Incomplete = 2;
alias CXTranslationUnit_PrecompiledPreamble = 4;
alias CXTranslationUnit_CacheCompletionResults = 8;
alias CXTranslationUnit_CXXPrecompiledPreamble = 16;
alias CXTranslationUnit_CXXChainedPCH = 32;
alias CXTranslationUnit_NestedMacroExpansions = 64;
alias CXTranslationUnit_NestedMacroInstantiations = 64;

external clang_defaultEditingTranslationUnitOptions() : UInt;

external clang_parseTranslationUnit(
    CIdx : CXIndex,
    source_filename : Pointer[CChar],
    command_line_args : Pointer[Pointer[CChar]],
    num_command_line_args : Int,
    unsaved_files : Pointer[Struct_CXUnsavedFile],
    num_unsaved_files : UInt,
    options : UInt) : CXTranslationUnit;

alias CXSaveTranslationUnit_None = 0;

external clang_defaultSaveOptions(
    TU : CXTranslationUnit) : UInt;

alias CXSaveError_None = 0;
alias CXSaveError_Unknown = 1;
alias CXSaveError_TranslationErrors = 2;
alias CXSaveError_InvalidTU = 3;

external clang_saveTranslationUnit(
    TU : CXTranslationUnit,
    FileName : Pointer[CChar],
    options : UInt) : Int;

external clang_disposeTranslationUnit(
    argument0 : CXTranslationUnit) : ;

alias CXReparse_None = 0;

external clang_defaultReparseOptions(
    TU : CXTranslationUnit) : UInt;

external clang_reparseTranslationUnit(
    TU : CXTranslationUnit,
    num_unsaved_files : UInt,
    unsaved_files : Pointer[Struct_CXUnsavedFile],
    options : UInt) : Int;

alias CXTUResourceUsage_AST = 1;
alias CXTUResourceUsage_Identifiers = 2;
alias CXTUResourceUsage_Selectors = 3;
alias CXTUResourceUsage_GlobalCompletionResults = 4;
alias CXTUResourceUsage_SourceManagerContentCache = 5;
alias CXTUResourceUsage_AST_SideTables = 6;
alias CXTUResourceUsage_SourceManager_Membuffer_Malloc = 7;
alias CXTUResourceUsage_SourceManager_Membuffer_MMap = 8;
alias CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9;
alias CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10;
alias CXTUResourceUsage_Preprocessor = 11;
alias CXTUResourceUsage_PreprocessingRecord = 12;
alias CXTUResourceUsage_SourceManager_DataStructures = 13;
alias CXTUResourceUsage_Preprocessor_HeaderSearch = 14;
alias CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = 1;
alias CXTUResourceUsage_MEMORY_IN_BYTES_END = 14;
alias CXTUResourceUsage_First = 1;
alias CXTUResourceUsage_Last = 14;

external clang_getTUResourceUsageName(
    kind : Int) : Pointer[CChar];

record Struct_CXTUResourceUsageEntry (
    kind : Int,
    amount : CULong,
);

alias CXTUResourceUsageEntry = Struct_CXTUResourceUsageEntry;

record Struct_CXTUResourceUsage (
    data : RawPointer,
    numEntries : UInt,
    entries : Pointer[CXTUResourceUsageEntry],
);

alias CXTUResourceUsage = Struct_CXTUResourceUsage;

external clang_getCXTUResourceUsage(
    TU : CXTranslationUnit) : CXTUResourceUsage;

external clang_disposeCXTUResourceUsage(
    usage : CXTUResourceUsage) : ;

alias CXCursor_UnexposedDecl = 1;
alias CXCursor_StructDecl = 2;
alias CXCursor_UnionDecl = 3;
alias CXCursor_ClassDecl = 4;
alias CXCursor_EnumDecl = 5;
alias CXCursor_FieldDecl = 6;
alias CXCursor_EnumConstantDecl = 7;
alias CXCursor_FunctionDecl = 8;
alias CXCursor_VarDecl = 9;
alias CXCursor_ParmDecl = 10;
alias CXCursor_ObjCInterfaceDecl = 11;
alias CXCursor_ObjCCategoryDecl = 12;
alias CXCursor_ObjCProtocolDecl = 13;
alias CXCursor_ObjCPropertyDecl = 14;
alias CXCursor_ObjCIvarDecl = 15;
alias CXCursor_ObjCInstanceMethodDecl = 16;
alias CXCursor_ObjCClassMethodDecl = 17;
alias CXCursor_ObjCImplementationDecl = 18;
alias CXCursor_ObjCCategoryImplDecl = 19;
alias CXCursor_TypedefDecl = 20;
alias CXCursor_CXXMethod = 21;
alias CXCursor_Namespace = 22;
alias CXCursor_LinkageSpec = 23;
alias CXCursor_Constructor = 24;
alias CXCursor_Destructor = 25;
alias CXCursor_ConversionFunction = 26;
alias CXCursor_TemplateTypeParameter = 27;
alias CXCursor_NonTypeTemplateParameter = 28;
alias CXCursor_TemplateTemplateParameter = 29;
alias CXCursor_FunctionTemplate = 30;
alias CXCursor_ClassTemplate = 31;
alias CXCursor_ClassTemplatePartialSpecialization = 32;
alias CXCursor_NamespaceAlias = 33;
alias CXCursor_UsingDirective = 34;
alias CXCursor_UsingDeclaration = 35;
alias CXCursor_TypeAliasDecl = 36;
alias CXCursor_ObjCSynthesizeDecl = 37;
alias CXCursor_ObjCDynamicDecl = 38;
alias CXCursor_CXXAccessSpecifier = 39;
alias CXCursor_FirstDecl = 1;
alias CXCursor_LastDecl = 39;
alias CXCursor_FirstRef = 40;
alias CXCursor_ObjCSuperClassRef = 40;
alias CXCursor_ObjCProtocolRef = 41;
alias CXCursor_ObjCClassRef = 42;
alias CXCursor_TypeRef = 43;
alias CXCursor_CXXBaseSpecifier = 44;
alias CXCursor_TemplateRef = 45;
alias CXCursor_NamespaceRef = 46;
alias CXCursor_MemberRef = 47;
alias CXCursor_LabelRef = 48;
alias CXCursor_OverloadedDeclRef = 49;
alias CXCursor_LastRef = 49;
alias CXCursor_FirstInvalid = 70;
alias CXCursor_InvalidFile = 70;
alias CXCursor_NoDeclFound = 71;
alias CXCursor_NotImplemented = 72;
alias CXCursor_InvalidCode = 73;
alias CXCursor_LastInvalid = 73;
alias CXCursor_FirstExpr = 100;
alias CXCursor_UnexposedExpr = 100;
alias CXCursor_DeclRefExpr = 101;
alias CXCursor_MemberRefExpr = 102;
alias CXCursor_CallExpr = 103;
alias CXCursor_ObjCMessageExpr = 104;
alias CXCursor_BlockExpr = 105;
alias CXCursor_IntegerLiteral = 106;
alias CXCursor_FloatingLiteral = 107;
alias CXCursor_ImaginaryLiteral = 108;
alias CXCursor_StringLiteral = 109;
alias CXCursor_CharacterLiteral = 110;
alias CXCursor_ParenExpr = 111;
alias CXCursor_UnaryOperator = 112;
alias CXCursor_ArraySubscriptExpr = 113;
alias CXCursor_BinaryOperator = 114;
alias CXCursor_CompoundAssignOperator = 115;
alias CXCursor_ConditionalOperator = 116;
alias CXCursor_CStyleCastExpr = 117;
alias CXCursor_CompoundLiteralExpr = 118;
alias CXCursor_InitListExpr = 119;
alias CXCursor_AddrLabelExpr = 120;
alias CXCursor_StmtExpr = 121;
alias CXCursor_GenericSelectionExpr = 122;
alias CXCursor_GNUNullExpr = 123;
alias CXCursor_CXXStaticCastExpr = 124;
alias CXCursor_CXXDynamicCastExpr = 125;
alias CXCursor_CXXReinterpretCastExpr = 126;
alias CXCursor_CXXConstCastExpr = 127;
alias CXCursor_CXXFunctionalCastExpr = 128;
alias CXCursor_CXXTypeidExpr = 129;
alias CXCursor_CXXBoolLiteralExpr = 130;
alias CXCursor_CXXNullPtrLiteralExpr = 131;
alias CXCursor_CXXThisExpr = 132;
alias CXCursor_CXXThrowExpr = 133;
alias CXCursor_CXXNewExpr = 134;
alias CXCursor_CXXDeleteExpr = 135;
alias CXCursor_UnaryExpr = 136;
alias CXCursor_ObjCStringLiteral = 137;
alias CXCursor_ObjCEncodeExpr = 138;
alias CXCursor_ObjCSelectorExpr = 139;
alias CXCursor_ObjCProtocolExpr = 140;
alias CXCursor_ObjCBridgedCastExpr = 141;
alias CXCursor_PackExpansionExpr = 142;
alias CXCursor_SizeOfPackExpr = 143;
alias CXCursor_LastExpr = 143;
alias CXCursor_FirstStmt = 200;
alias CXCursor_UnexposedStmt = 200;
alias CXCursor_LabelStmt = 201;
alias CXCursor_CompoundStmt = 202;
alias CXCursor_CaseStmt = 203;
alias CXCursor_DefaultStmt = 204;
alias CXCursor_IfStmt = 205;
alias CXCursor_SwitchStmt = 206;
alias CXCursor_WhileStmt = 207;
alias CXCursor_DoStmt = 208;
alias CXCursor_ForStmt = 209;
alias CXCursor_GotoStmt = 210;
alias CXCursor_IndirectGotoStmt = 211;
alias CXCursor_ContinueStmt = 212;
alias CXCursor_BreakStmt = 213;
alias CXCursor_ReturnStmt = 214;
alias CXCursor_AsmStmt = 215;
alias CXCursor_ObjCAtTryStmt = 216;
alias CXCursor_ObjCAtCatchStmt = 217;
alias CXCursor_ObjCAtFinallyStmt = 218;
alias CXCursor_ObjCAtThrowStmt = 219;
alias CXCursor_ObjCAtSynchronizedStmt = 220;
alias CXCursor_ObjCAutoreleasePoolStmt = 221;
alias CXCursor_ObjCForCollectionStmt = 222;
alias CXCursor_CXXCatchStmt = 223;
alias CXCursor_CXXTryStmt = 224;
alias CXCursor_CXXForRangeStmt = 225;
alias CXCursor_SEHTryStmt = 226;
alias CXCursor_SEHExceptStmt = 227;
alias CXCursor_SEHFinallyStmt = 228;
alias CXCursor_NullStmt = 230;
alias CXCursor_DeclStmt = 231;
alias CXCursor_LastStmt = 231;
alias CXCursor_TranslationUnit = 300;
alias CXCursor_FirstAttr = 400;
alias CXCursor_UnexposedAttr = 400;
alias CXCursor_IBActionAttr = 401;
alias CXCursor_IBOutletAttr = 402;
alias CXCursor_IBOutletCollectionAttr = 403;
alias CXCursor_CXXFinalAttr = 404;
alias CXCursor_CXXOverrideAttr = 405;
alias CXCursor_AnnotateAttr = 406;
alias CXCursor_AsmLabelAttr = 407;
alias CXCursor_LastAttr = 407;
alias CXCursor_PreprocessingDirective = 500;
alias CXCursor_MacroDefinition = 501;
alias CXCursor_MacroExpansion = 502;
alias CXCursor_MacroInstantiation = 502;
alias CXCursor_InclusionDirective = 503;
alias CXCursor_FirstPreprocessing = 500;
alias CXCursor_LastPreprocessing = 503;

record UnnamedStruct4 (
    kind : Int,
    xdata : Int,
    data : Array[RawPointer,3],
);

alias CXCursor = UnnamedStruct4;

external clang_getNullCursor() : CXCursor;

external clang_getTranslationUnitCursor(
    argument0 : CXTranslationUnit) : CXCursor;

external clang_equalCursors(
    argument0 : CXCursor,
    argument1 : CXCursor) : UInt;

external clang_Cursor_isNull(
    argument0 : CXCursor) : Int;

external clang_hashCursor(
    argument0 : CXCursor) : UInt;

external clang_getCursorKind(
    argument0 : CXCursor) : Int;

external clang_isDeclaration(
    argument0 : Int) : UInt;

external clang_isReference(
    argument0 : Int) : UInt;

external clang_isExpression(
    argument0 : Int) : UInt;

external clang_isStatement(
    argument0 : Int) : UInt;

external clang_isAttribute(
    argument0 : Int) : UInt;

external clang_isInvalid(
    argument0 : Int) : UInt;

external clang_isTranslationUnit(
    argument0 : Int) : UInt;

external clang_isPreprocessing(
    argument0 : Int) : UInt;

external clang_isUnexposed(
    argument0 : Int) : UInt;

alias CXLinkage_Invalid = 0;
alias CXLinkage_NoLinkage = 1;
alias CXLinkage_Internal = 2;
alias CXLinkage_UniqueExternal = 3;
alias CXLinkage_External = 4;

external clang_getCursorLinkage(
    cursor : CXCursor) : Int;

external clang_getCursorAvailability(
    cursor : CXCursor) : Int;

alias CXLanguage_Invalid = 0;
alias CXLanguage_C = 1;
alias CXLanguage_ObjC = 2;
alias CXLanguage_CPlusPlus = 3;

external clang_getCursorLanguage(
    cursor : CXCursor) : Int;

external clang_Cursor_getTranslationUnit(
    argument0 : CXCursor) : CXTranslationUnit;

alias CXCursorSet = OpaquePointer;

external clang_createCXCursorSet() : CXCursorSet;

external clang_disposeCXCursorSet(
    cset : CXCursorSet) : ;

external clang_CXCursorSet_contains(
    cset : CXCursorSet,
    cursor : CXCursor) : UInt;

external clang_CXCursorSet_insert(
    cset : CXCursorSet,
    cursor : CXCursor) : UInt;

external clang_getCursorSemanticParent(
    cursor : CXCursor) : CXCursor;

external clang_getCursorLexicalParent(
    cursor : CXCursor) : CXCursor;

external clang_getOverriddenCursors(
    cursor : CXCursor,
    overridden : Pointer[Pointer[CXCursor]],
    num_overridden : Pointer[UInt]) : ;

external clang_disposeOverriddenCursors(
    overridden : Pointer[CXCursor]) : ;

external clang_getIncludedFile(
    cursor : CXCursor) : CXFile;

external clang_getCursor(
    argument0 : CXTranslationUnit,
    argument1 : CXSourceLocation) : CXCursor;

external clang_getCursorLocation(
    argument0 : CXCursor) : CXSourceLocation;

external clang_getCursorExtent(
    argument0 : CXCursor) : CXSourceRange;

alias CXType_Invalid = 0;
alias CXType_Unexposed = 1;
alias CXType_Void = 2;
alias CXType_Bool = 3;
alias CXType_Char_U = 4;
alias CXType_UChar = 5;
alias CXType_Char16 = 6;
alias CXType_Char32 = 7;
alias CXType_UShort = 8;
alias CXType_UInt = 9;
alias CXType_ULong = 10;
alias CXType_ULongLong = 11;
alias CXType_UInt128 = 12;
alias CXType_Char_S = 13;
alias CXType_SChar = 14;
alias CXType_WChar = 15;
alias CXType_Short = 16;
alias CXType_Int = 17;
alias CXType_Long = 18;
alias CXType_LongLong = 19;
alias CXType_Int128 = 20;
alias CXType_Float = 21;
alias CXType_Double = 22;
alias CXType_LongDouble = 23;
alias CXType_NullPtr = 24;
alias CXType_Overload = 25;
alias CXType_Dependent = 26;
alias CXType_ObjCId = 27;
alias CXType_ObjCClass = 28;
alias CXType_ObjCSel = 29;
alias CXType_FirstBuiltin = 2;
alias CXType_LastBuiltin = 29;
alias CXType_Complex = 100;
alias CXType_Pointer = 101;
alias CXType_BlockPointer = 102;
alias CXType_LValueReference = 103;
alias CXType_RValueReference = 104;
alias CXType_Record = 105;
alias CXType_Enum = 106;
alias CXType_Typedef = 107;
alias CXType_ObjCInterface = 108;
alias CXType_ObjCObjectPointer = 109;
alias CXType_FunctionNoProto = 110;
alias CXType_FunctionProto = 111;
alias CXType_ConstantArray = 112;
alias CXType_Vector = 113;

alias CXCallingConv_Default = 0;
alias CXCallingConv_C = 1;
alias CXCallingConv_X86StdCall = 2;
alias CXCallingConv_X86FastCall = 3;
alias CXCallingConv_X86ThisCall = 4;
alias CXCallingConv_X86Pascal = 5;
alias CXCallingConv_AAPCS = 6;
alias CXCallingConv_AAPCS_VFP = 7;
alias CXCallingConv_Invalid = 100;
alias CXCallingConv_Unexposed = 200;

record UnnamedStruct5 (
    kind : Int,
    data : Array[RawPointer,2],
);

alias CXType = UnnamedStruct5;

external clang_getCursorType(
    C : CXCursor) : CXType;

external clang_getTypedefDeclUnderlyingType(
    C : CXCursor) : CXType;

external clang_getEnumDeclIntegerType(
    C : CXCursor) : CXType;

external clang_getEnumConstantDeclValue(
    C : CXCursor) : Int64;

external clang_getEnumConstantDeclUnsignedValue(
    C : CXCursor) : UInt64;

external clang_equalTypes(
    A : CXType,
    B : CXType) : UInt;

external clang_getCanonicalType(
    T : CXType) : CXType;

external clang_isConstQualifiedType(
    T : CXType) : UInt;

external clang_isVolatileQualifiedType(
    T : CXType) : UInt;

external clang_isRestrictQualifiedType(
    T : CXType) : UInt;

external clang_getPointeeType(
    T : CXType) : CXType;

external clang_getTypeDeclaration(
    T : CXType) : CXCursor;

external clang_getDeclObjCTypeEncoding(
    C : CXCursor) : CXString;

external clang_getTypeKindSpelling(
    K : Int) : CXString;

external clang_getFunctionTypeCallingConv(
    T : CXType) : Int;

external clang_isFunctionTypeVariadic(
    T : CXType) : UInt;

external clang_getNumArgTypes(
    T : CXType) : Int;

external clang_getArgType(
    T : CXType,
    i : UInt) : CXType;

external clang_getResultType(
    T : CXType) : CXType;

external clang_getCursorResultType(
    C : CXCursor) : CXType;

external clang_isPODType(
    T : CXType) : UInt;

external clang_getElementType(
    T : CXType) : CXType;

external clang_getNumElements(
    T : CXType) : Int64;

external clang_getArrayElementType(
    T : CXType) : CXType;

external clang_getArraySize(
    T : CXType) : Int64;

external clang_isVirtualBase(
    argument0 : CXCursor) : UInt;

alias CX_CXXInvalidAccessSpecifier = 0;
alias CX_CXXPublic = 1;
alias CX_CXXProtected = 2;
alias CX_CXXPrivate = 3;

external clang_getCXXAccessSpecifier(
    argument0 : CXCursor) : Int;

external clang_getNumOverloadedDecls(
    cursor : CXCursor) : UInt;

external clang_getOverloadedDecl(
    cursor : CXCursor,
    index : UInt) : CXCursor;

external clang_getIBOutletCollectionType(
    argument0 : CXCursor) : CXType;

alias CXChildVisit_Break = 0;
alias CXChildVisit_Continue = 1;
alias CXChildVisit_Recurse = 2;

alias CXCursorVisitor = CCodePointer[[UnnamedStruct4,UnnamedStruct4,RawPointer],[Int]];

external clang_visitChildren(
    parent : CXCursor,
    visitor : CXCursorVisitor,
    client_data : CXClientData) : UInt;

alias CXCursorVisitorBlock = UnknownType;

external clang_visitChildrenWithBlock(
    parent : CXCursor,
    block : CXCursorVisitorBlock) : UInt;

external clang_getCursorUSR(
    argument0 : CXCursor) : CXString;

external clang_constructUSR_ObjCClass(
    class_name : Pointer[CChar]) : CXString;

external clang_constructUSR_ObjCCategory(
    class_name : Pointer[CChar],
    category_name : Pointer[CChar]) : CXString;

external clang_constructUSR_ObjCProtocol(
    protocol_name : Pointer[CChar]) : CXString;

external clang_constructUSR_ObjCIvar(
    name : Pointer[CChar],
    classUSR : CXString) : CXString;

external clang_constructUSR_ObjCMethod(
    name : Pointer[CChar],
    isInstanceMethod : UInt,
    classUSR : CXString) : CXString;

external clang_constructUSR_ObjCProperty(
    property : Pointer[CChar],
    classUSR : CXString) : CXString;

external clang_getCursorSpelling(
    argument0 : CXCursor) : CXString;

external clang_getCursorDisplayName(
    argument0 : CXCursor) : CXString;

external clang_getCursorReferenced(
    argument0 : CXCursor) : CXCursor;

external clang_getCursorDefinition(
    argument0 : CXCursor) : CXCursor;

external clang_isCursorDefinition(
    argument0 : CXCursor) : UInt;

external clang_getCanonicalCursor(
    argument0 : CXCursor) : CXCursor;

external clang_CXXMethod_isStatic(
    C : CXCursor) : UInt;

external clang_CXXMethod_isVirtual(
    C : CXCursor) : UInt;

external clang_getTemplateCursorKind(
    C : CXCursor) : Int;

external clang_getSpecializedCursorTemplate(
    C : CXCursor) : CXCursor;

external clang_getCursorReferenceNameRange(
    C : CXCursor,
    NameFlags : UInt,
    PieceIndex : UInt) : CXSourceRange;

alias CXNameRange_WantQualifier = 1;
alias CXNameRange_WantTemplateArgs = 2;
alias CXNameRange_WantSinglePiece = 4;

alias CXToken_Punctuation = 0;
alias CXToken_Keyword = 1;
alias CXToken_Identifier = 2;
alias CXToken_Literal = 3;
alias CXToken_Comment = 4;

alias CXTokenKind = Int;

record UnnamedStruct6 (
    int_data : Array[UInt,4],
    ptr_data : RawPointer,
);

alias CXToken = UnnamedStruct6;

external clang_getTokenKind(
    argument0 : CXToken) : CXTokenKind;

external clang_getTokenSpelling(
    argument0 : CXTranslationUnit,
    argument1 : CXToken) : CXString;

external clang_getTokenLocation(
    argument0 : CXTranslationUnit,
    argument1 : CXToken) : CXSourceLocation;

external clang_getTokenExtent(
    argument0 : CXTranslationUnit,
    argument1 : CXToken) : CXSourceRange;

external clang_tokenize(
    TU : CXTranslationUnit,
    Range : CXSourceRange,
    Tokens : Pointer[Pointer[CXToken]],
    NumTokens : Pointer[UInt]) : ;

external clang_annotateTokens(
    TU : CXTranslationUnit,
    Tokens : Pointer[CXToken],
    NumTokens : UInt,
    Cursors : Pointer[CXCursor]) : ;

external clang_disposeTokens(
    TU : CXTranslationUnit,
    Tokens : Pointer[CXToken],
    NumTokens : UInt) : ;

external clang_getCursorKindSpelling(
    Kind : Int) : CXString;

external clang_getDefinitionSpellingAndExtent(
    argument0 : CXCursor,
    startBuf : Pointer[Pointer[CChar]],
    endBuf : Pointer[Pointer[CChar]],
    startLine : Pointer[UInt],
    startColumn : Pointer[UInt],
    endLine : Pointer[UInt],
    endColumn : Pointer[UInt]) : ;

external clang_enableStackTraces() : ;

external clang_executeOnThread(
    fn : CCodePointer[[RawPointer],[]],
    user_data : RawPointer,
    stack_size : UInt) : ;

alias CXCompletionString = RawPointer;

record UnnamedStruct7 (
    CursorKind : Int,
    CompletionString : CXCompletionString,
);

alias CXCompletionResult = UnnamedStruct7;

alias CXCompletionChunk_Optional = 0;
alias CXCompletionChunk_TypedText = 1;
alias CXCompletionChunk_Text = 2;
alias CXCompletionChunk_Placeholder = 3;
alias CXCompletionChunk_Informative = 4;
alias CXCompletionChunk_CurrentParameter = 5;
alias CXCompletionChunk_LeftParen = 6;
alias CXCompletionChunk_RightParen = 7;
alias CXCompletionChunk_LeftBracket = 8;
alias CXCompletionChunk_RightBracket = 9;
alias CXCompletionChunk_LeftBrace = 10;
alias CXCompletionChunk_RightBrace = 11;
alias CXCompletionChunk_LeftAngle = 12;
alias CXCompletionChunk_RightAngle = 13;
alias CXCompletionChunk_Comma = 14;
alias CXCompletionChunk_ResultType = 15;
alias CXCompletionChunk_Colon = 16;
alias CXCompletionChunk_SemiColon = 17;
alias CXCompletionChunk_Equal = 18;
alias CXCompletionChunk_HorizontalSpace = 19;
alias CXCompletionChunk_VerticalSpace = 20;

external clang_getCompletionChunkKind(
    completion_string : CXCompletionString,
    chunk_number : UInt) : Int;

external clang_getCompletionChunkText(
    completion_string : CXCompletionString,
    chunk_number : UInt) : CXString;

external clang_getCompletionChunkCompletionString(
    completion_string : CXCompletionString,
    chunk_number : UInt) : CXCompletionString;

external clang_getNumCompletionChunks(
    completion_string : CXCompletionString) : UInt;

external clang_getCompletionPriority(
    completion_string : CXCompletionString) : UInt;

external clang_getCompletionAvailability(
    completion_string : CXCompletionString) : Int;

external clang_getCompletionNumAnnotations(
    completion_string : CXCompletionString) : UInt;

external clang_getCompletionAnnotation(
    completion_string : CXCompletionString,
    annotation_number : UInt) : CXString;

external clang_getCursorCompletionString(
    cursor : CXCursor) : CXCompletionString;

record UnnamedStruct8 (
    Results : Pointer[CXCompletionResult],
    NumResults : UInt,
);

alias CXCodeCompleteResults = UnnamedStruct8;

alias CXCodeComplete_IncludeMacros = 1;
alias CXCodeComplete_IncludeCodePatterns = 2;

alias CXCompletionContext_Unexposed = 0;
alias CXCompletionContext_AnyType = 1;
alias CXCompletionContext_AnyValue = 2;
alias CXCompletionContext_ObjCObjectValue = 4;
alias CXCompletionContext_ObjCSelectorValue = 8;
alias CXCompletionContext_CXXClassTypeValue = 16;
alias CXCompletionContext_DotMemberAccess = 32;
alias CXCompletionContext_ArrowMemberAccess = 64;
alias CXCompletionContext_ObjCPropertyAccess = 128;
alias CXCompletionContext_EnumTag = 256;
alias CXCompletionContext_UnionTag = 512;
alias CXCompletionContext_StructTag = 1024;
alias CXCompletionContext_ClassTag = 2048;
alias CXCompletionContext_Namespace = 4096;
alias CXCompletionContext_NestedNameSpecifier = 8192;
alias CXCompletionContext_ObjCInterface = 16384;
alias CXCompletionContext_ObjCProtocol = 32768;
alias CXCompletionContext_ObjCCategory = 65536;
alias CXCompletionContext_ObjCInstanceMessage = 131072;
alias CXCompletionContext_ObjCClassMessage = 262144;
alias CXCompletionContext_ObjCSelectorName = 524288;
alias CXCompletionContext_MacroName = 1048576;
alias CXCompletionContext_NaturalLanguage = 2097152;
alias CXCompletionContext_Unknown = 4194303;

external clang_defaultCodeCompleteOptions() : UInt;

external clang_codeCompleteAt(
    TU : CXTranslationUnit,
    complete_filename : Pointer[CChar],
    complete_line : UInt,
    complete_column : UInt,
    unsaved_files : Pointer[Struct_CXUnsavedFile],
    num_unsaved_files : UInt,
    options : UInt) : Pointer[CXCodeCompleteResults];

external clang_sortCodeCompletionResults(
    Results : Pointer[CXCompletionResult],
    NumResults : UInt) : ;

external clang_disposeCodeCompleteResults(
    Results : Pointer[CXCodeCompleteResults]) : ;

external clang_codeCompleteGetNumDiagnostics(
    Results : Pointer[CXCodeCompleteResults]) : UInt;

external clang_codeCompleteGetDiagnostic(
    Results : Pointer[CXCodeCompleteResults],
    Index : UInt) : CXDiagnostic;

external clang_codeCompleteGetContexts(
    Results : Pointer[CXCodeCompleteResults]) : UInt64;

external clang_codeCompleteGetContainerKind(
    Results : Pointer[CXCodeCompleteResults],
    IsIncomplete : Pointer[UInt]) : Int;

external clang_codeCompleteGetContainerUSR(
    Results : Pointer[CXCodeCompleteResults]) : CXString;

external clang_codeCompleteGetObjCSelector(
    Results : Pointer[CXCodeCompleteResults]) : CXString;

external clang_getClangVersion() : CXString;

external clang_toggleCrashRecovery(
    isEnabled : UInt) : ;

alias CXInclusionVisitor = CCodePointer[[RawPointer,Pointer[UnnamedStruct2],UInt,RawPointer],[]];

external clang_getInclusions(
    tu : CXTranslationUnit,
    visitor : CXInclusionVisitor,
    client_data : CXClientData) : ;

alias CXRemapping = RawPointer;

external clang_getRemappings(
    path : Pointer[CChar]) : CXRemapping;

external clang_remap_getNumFiles(
    argument0 : CXRemapping) : UInt;

external clang_remap_getFilenames(
    argument0 : CXRemapping,
    index : UInt,
    original : Pointer[CXString],
    transformed : Pointer[CXString]) : ;

external clang_remap_dispose(
    argument0 : CXRemapping) : ;

alias CXVisit_Break = 0;
alias CXVisit_Continue = 1;

record UnnamedStruct9 (
    context : RawPointer,
    visit : CCodePointer[[RawPointer,UnnamedStruct4,UnnamedStruct3],[Int]],
);

alias CXCursorAndRangeVisitor = UnnamedStruct9;

external clang_findReferencesInFile(
    cursor : CXCursor,
    file : CXFile,
    visitor : CXCursorAndRangeVisitor) : ;

alias CXCursorAndRangeVisitorBlock = UnknownType;

external clang_findReferencesInFileWithBlock(
    argument0 : CXCursor,
    argument1 : CXFile,
    argument2 : CXCursorAndRangeVisitorBlock) : ;

alias CXIdxFile = RawPointer;

alias CXIdxEntity = RawPointer;

alias CXIdxContainer = RawPointer;

alias CXIdxMacro = RawPointer;

alias CXIdxASTFile = RawPointer;

record UnnamedStruct10 (
    ptr_data : Array[RawPointer,2],
    int_data : UInt,
);

alias CXIdxLoc = UnnamedStruct10;

record UnnamedStruct11 (
    hashLoc : CXIdxLoc,
    filename : Pointer[CChar],
    file : CXIdxFile,
    isImport : Int,
    isAngled : Int,
);

alias CXIdxIncludedFileInfo = UnnamedStruct11;

record UnnamedStruct12 (
    file : CXFile,
    loc : CXIdxLoc,
    isModule : Int,
);

alias CXIdxImportedASTFileInfo = UnnamedStruct12;

record UnnamedStruct13 (
    loc : CXIdxLoc,
    name : Pointer[CChar],
);

alias CXIdxMacroInfo = UnnamedStruct13;

record UnnamedStruct14 (
    macroInfo : Pointer[CXIdxMacroInfo],
    defBegin : CXIdxLoc,
    defLength : UInt,
);

alias CXIdxMacroDefinedInfo = UnnamedStruct14;

record UnnamedStruct15 (
    loc : CXIdxLoc,
    name : Pointer[CChar],
    macro : CXIdxMacro,
);

alias CXIdxMacroUndefinedInfo = UnnamedStruct15;

record UnnamedStruct16 (
    loc : CXIdxLoc,
    name : Pointer[CChar],
    macro : CXIdxMacro,
);

alias CXIdxMacroExpandedInfo = UnnamedStruct16;

record UnnamedStruct17 (
    name : Pointer[CChar],
    USR : Pointer[CChar],
);

alias CXIdxEntityInfo = UnnamedStruct17;

record UnnamedStruct18 (
    cursor : CXCursor,
    loc : CXIdxLoc,
    container : CXIdxContainer,
);

alias CXIdxIndexedDeclInfo = UnnamedStruct18;

record UnnamedStruct19 (
    entityInfo : Pointer[CXIdxEntityInfo],
    cursor : CXCursor,
    loc : CXIdxLoc,
    ASTFile : CXIdxASTFile,
);

alias CXIdxImportedEntityInfo = UnnamedStruct19;

record UnnamedStruct20 (
    macroInfo : Pointer[CXIdxMacroInfo],
    ASTFile : CXIdxASTFile,
);

alias CXIdxImportedMacroInfo = UnnamedStruct20;

record UnnamedStruct21 (
    entityInfo : Pointer[CXIdxEntityInfo],
    declInfo : Pointer[CXIdxIndexedDeclInfo],
);

alias CXIdxIndexedEntityInfo = UnnamedStruct21;

record UnnamedStruct22 (
    declInfo : Pointer[CXIdxIndexedDeclInfo],
    entity : CXIdxEntity,
);

alias CXIdxIndexedRedeclInfo = UnnamedStruct22;

record UnnamedStruct23 (
    cursor : CXCursor,
    loc : CXIdxLoc,
    entity : CXIdxEntity,
);

alias CXIdxContainerInfo = UnnamedStruct23;

record UnnamedStruct24 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
);

alias CXIdxTypedefInfo = UnnamedStruct24;

record UnnamedStruct25 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
    isDefinition : Int,
);

alias CXIdxFunctionInfo = UnnamedStruct25;

record UnnamedStruct26 (
    indexedRedeclInfo : Pointer[CXIdxIndexedRedeclInfo],
    isDefinition : Int,
);

alias CXIdxFunctionRedeclInfo = UnnamedStruct26;

record UnnamedStruct27 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
    isDefinition : Int,
);

alias CXIdxVariableInfo = UnnamedStruct27;

record UnnamedStruct28 (
    indexedRedeclInfo : Pointer[CXIdxIndexedRedeclInfo],
    isDefinition : Int,
);

alias CXIdxVariableRedeclInfo = UnnamedStruct28;

record UnnamedStruct29 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
    isDefinition : Int,
    isAnonymous : Int,
);

alias CXIdxTagTypeInfo = UnnamedStruct29;

record UnnamedStruct30 (
    indexedRedeclInfo : Pointer[CXIdxIndexedRedeclInfo],
    isDefinition : Int,
);

alias CXIdxTagTypeRedeclInfo = UnnamedStruct30;

record UnnamedStruct31 (
    containerInfo : Pointer[CXIdxContainerInfo],
);

alias CXIdxTagTypeDefinitionInfo = UnnamedStruct31;

record UnnamedStruct32 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
);

alias CXIdxFieldInfo = UnnamedStruct32;

record UnnamedStruct33 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
);

alias CXIdxEnumeratorInfo = UnnamedStruct33;

record UnnamedStruct34 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
    isForwardRef : Int,
);

alias CXIdxObjCClassInfo = UnnamedStruct34;

record UnnamedStruct35 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
    isForwardRef : Int,
);

alias CXIdxObjCProtocolInfo = UnnamedStruct35;

record UnnamedStruct36 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
    objcClass : CXIdxEntity,
);

alias CXIdxObjCCategoryInfo = UnnamedStruct36;

record UnnamedStruct37 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
    isDefinition : Int,
);

alias CXIdxObjCMethodInfo = UnnamedStruct37;

record UnnamedStruct38 (
    indexedEntityInfo : Pointer[CXIdxIndexedEntityInfo],
);

alias CXIdxObjCPropertyInfo = UnnamedStruct38;

record UnnamedStruct39 (
    indexedRedeclInfo : Pointer[CXIdxIndexedRedeclInfo],
    isDefinition : Int,
);

alias CXIdxObjCMethodRedeclInfo = UnnamedStruct39;

record UnnamedStruct40 (
    containerInfo : Pointer[CXIdxContainerInfo],
    bodyBegin : CXIdxLoc,
);

alias CXIdxStmtBodyInfo = UnnamedStruct40;

record UnnamedStruct41 (
    containerInfo : Pointer[CXIdxContainerInfo],
);

alias CXIdxObjCContainerInfo = UnnamedStruct41;

record UnnamedStruct42 (
    objcClass : CXIdxEntity,
    loc : CXIdxLoc,
);

alias CXIdxObjCBaseClassInfo = UnnamedStruct42;

record UnnamedStruct43 (
    protocol : CXIdxEntity,
    loc : CXIdxLoc,
);

alias CXIdxObjCProtocolRefInfo = UnnamedStruct43;

record UnnamedStruct44 (
    cursor : CXCursor,
    objcClass : CXIdxEntity,
    container : CXIdxContainer,
    baseInfo : Pointer[CXIdxObjCBaseClassInfo],
    protocols : Pointer[Pointer[CXIdxObjCProtocolRefInfo]],
    numProtocols : UInt,
);

alias CXIdxObjCClassDefineInfo = UnnamedStruct44;

record UnnamedStruct45 (
    container : CXIdxContainer,
    endLoc : CXIdxLoc,
);

alias CXIdxEndContainerInfo = UnnamedStruct45;

alias CXIdxEntityRef_Direct = 1;
alias CXIdxEntityRef_ImplicitProperty = 2;

alias CXIdxEntityRefKind = Int;

record UnnamedStruct46 (
    cursor : CXCursor,
    loc : CXIdxLoc,
    referencedEntity : CXIdxEntity,
    parentEntity : CXIdxEntity,
    container : CXIdxContainer,
    kind : CXIdxEntityRefKind,
);

alias CXIdxEntityRefInfo = UnnamedStruct46;

record UnnamedStruct47 (
    diagnostic : CCodePointer[[RawPointer,RawPointer,RawPointer],[]],
    recordFile : CCodePointer[[RawPointer,RawPointer,RawPointer],[RawPointer]],
    ppIncludedFile : CCodePointer[[RawPointer,Pointer[UnnamedStruct11]],[]],
    ppMacroDefined : CCodePointer[[RawPointer,Pointer[UnnamedStruct14]],[RawPointer]],
    ppMacroUndefined : CCodePointer[[RawPointer,Pointer[UnnamedStruct15]],[]],
    ppMacroExpanded : CCodePointer[[RawPointer,Pointer[UnnamedStruct16]],[]],
    importedASTFile : CCodePointer[[RawPointer,Pointer[UnnamedStruct12]],[RawPointer]],
    importedEntity : CCodePointer[[RawPointer,Pointer[UnnamedStruct19]],[RawPointer]],
    importedMacro : CCodePointer[[RawPointer,Pointer[UnnamedStruct20]],[RawPointer]],
    startedTranslationUnit : CCodePointer[[RawPointer,RawPointer],[RawPointer]],
    indexTypedef : CCodePointer[[RawPointer,Pointer[UnnamedStruct24]],[RawPointer]],
    indexFunction : CCodePointer[[RawPointer,Pointer[UnnamedStruct25]],[RawPointer]],
    indexFunctionRedeclaration : CCodePointer[[RawPointer,Pointer[UnnamedStruct26]],[]],
    indexVariable : CCodePointer[[RawPointer,Pointer[UnnamedStruct27]],[RawPointer]],
    indexVariableRedeclaration : CCodePointer[[RawPointer,Pointer[UnnamedStruct28]],[]],
    indexTagType : CCodePointer[[RawPointer,Pointer[UnnamedStruct29]],[RawPointer]],
    indexTagTypeRedeclaration : CCodePointer[[RawPointer,Pointer[UnnamedStruct30]],[]],
    indexField : CCodePointer[[RawPointer,Pointer[UnnamedStruct32]],[RawPointer]],
    indexEnumerator : CCodePointer[[RawPointer,Pointer[UnnamedStruct33]],[RawPointer]],
    startedTagTypeDefinition : CCodePointer[[RawPointer,Pointer[UnnamedStruct31]],[RawPointer]],
    indexObjCClass : CCodePointer[[RawPointer,Pointer[UnnamedStruct34]],[RawPointer]],
    indexObjCProtocol : CCodePointer[[RawPointer,Pointer[UnnamedStruct35]],[RawPointer]],
    indexObjCCategory : CCodePointer[[RawPointer,Pointer[UnnamedStruct36]],[RawPointer]],
    indexObjCMethod : CCodePointer[[RawPointer,Pointer[UnnamedStruct37]],[RawPointer]],
    indexObjCProperty : CCodePointer[[RawPointer,Pointer[UnnamedStruct38]],[RawPointer]],
    indexObjCMethodRedeclaration : CCodePointer[[RawPointer,Pointer[UnnamedStruct39]],[]],
    startedStatementBody : CCodePointer[[RawPointer,Pointer[UnnamedStruct40]],[RawPointer]],
    startedObjCContainer : CCodePointer[[RawPointer,Pointer[UnnamedStruct41]],[RawPointer]],
    defineObjCClass : CCodePointer[[RawPointer,Pointer[UnnamedStruct44]],[]],
    endedContainer : CCodePointer[[RawPointer,Pointer[UnnamedStruct45]],[]],
    indexEntityReference : CCodePointer[[RawPointer,Pointer[UnnamedStruct46]],[]],
);

alias IndexerCallbacks = UnnamedStruct47;

external clang_indexTranslationUnit(
    CIdx : CXIndex,
    client_data : CXClientData,
    index_callbacks : Pointer[IndexerCallbacks],
    index_callbacks_size : UInt,
    index_options : UInt,
    source_filename : Pointer[CChar],
    command_line_args : Pointer[Pointer[CChar]],
    num_command_line_args : Int,
    unsaved_files : Pointer[Struct_CXUnsavedFile],
    num_unsaved_files : UInt,
    out_TU : Pointer[CXTranslationUnit],
    TU_options : UInt) : Int;

external clang_indexLoc_getFileLocation(
    loc : CXIdxLoc,
    indexFile : Pointer[CXIdxFile],
    file : Pointer[CXFile],
    line : Pointer[UInt],
    column : Pointer[UInt],
    offset : Pointer[UInt]) : ;

external clang_indexLoc_getCXSourceLocation(
    loc : CXIdxLoc) : CXSourceLocation;
