zig

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

blob c534addf (9763B) - Raw


      1 /*
      2  * Copyright (c) 2019 Andrew Kelley
      3  *
      4  * This file is part of zig, which is MIT licensed.
      5  * See http://opensource.org/licenses/MIT
      6  */
      7 
      8 #ifndef ZIG_ZIG_CLANG_H
      9 #define ZIG_ZIG_CLANG_H
     10 
     11 #ifdef __cplusplus
     12 #define ZIG_EXTERN_C extern "C"
     13 #else
     14 #define ZIG_EXTERN_C
     15 #endif
     16 
     17 // ATTENTION: If you modify this file, be sure to update the corresponding
     18 // extern function declarations in the self-hosted compiler.
     19 // Note: not yet, we don't have the corresponding clang.zig yet.
     20 
     21 struct ZigClangSourceLocation {
     22     unsigned ID;
     23 };
     24 
     25 struct ZigClangQualType {
     26     void *ptr;
     27 };
     28 
     29 struct ZigClangAPValue;
     30 struct ZigClangASTContext;
     31 struct ZigClangASTUnit;
     32 struct ZigClangArraySubscriptExpr;
     33 struct ZigClangArrayType;
     34 struct ZigClangAttributedType;
     35 struct ZigClangBinaryOperator;
     36 struct ZigClangBreakStmt;
     37 struct ZigClangBuiltinType;
     38 struct ZigClangCStyleCastExpr;
     39 struct ZigClangCallExpr;
     40 struct ZigClangCaseStmt;
     41 struct ZigClangCompoundAssignOperator;
     42 struct ZigClangCompoundStmt;
     43 struct ZigClangConditionalOperator;
     44 struct ZigClangConstantArrayType;
     45 struct ZigClangContinueStmt;
     46 struct ZigClangDecayedType;
     47 struct ZigClangDecl;
     48 struct ZigClangDeclRefExpr;
     49 struct ZigClangDeclStmt;
     50 struct ZigClangDefaultStmt;
     51 struct ZigClangDiagnosticOptions;
     52 struct ZigClangDiagnosticsEngine;
     53 struct ZigClangDoStmt;
     54 struct ZigClangElaboratedType;
     55 struct ZigClangEnumConstantDecl;
     56 struct ZigClangEnumDecl;
     57 struct ZigClangEnumType;
     58 struct ZigClangExpr;
     59 struct ZigClangFieldDecl;
     60 struct ZigClangFileID;
     61 struct ZigClangForStmt;
     62 struct ZigClangFullSourceLoc;
     63 struct ZigClangFunctionDecl;
     64 struct ZigClangFunctionProtoType;
     65 struct ZigClangIfStmt;
     66 struct ZigClangImplicitCastExpr;
     67 struct ZigClangIncompleteArrayType;
     68 struct ZigClangIntegerLiteral;
     69 struct ZigClangMacroDefinitionRecord;
     70 struct ZigClangMemberExpr;
     71 struct ZigClangNamedDecl;
     72 struct ZigClangNone;
     73 struct ZigClangPCHContainerOperations;
     74 struct ZigClangParenExpr;
     75 struct ZigClangParenType;
     76 struct ZigClangParmVarDecl;
     77 struct ZigClangPointerType;
     78 struct ZigClangPreprocessedEntity;
     79 struct ZigClangRecordDecl;
     80 struct ZigClangRecordType;
     81 struct ZigClangReturnStmt;
     82 struct ZigClangSkipFunctionBodiesScope;
     83 struct ZigClangSourceManager;
     84 struct ZigClangSourceRange;
     85 struct ZigClangStmt;
     86 struct ZigClangStorageClass;
     87 struct ZigClangStringLiteral;
     88 struct ZigClangStringRef;
     89 struct ZigClangSwitchStmt;
     90 struct ZigClangTagDecl;
     91 struct ZigClangType;
     92 struct ZigClangTypedefNameDecl;
     93 struct ZigClangTypedefType;
     94 struct ZigClangUnaryExprOrTypeTraitExpr;
     95 struct ZigClangUnaryOperator;
     96 struct ZigClangValueDecl;
     97 struct ZigClangVarDecl;
     98 struct ZigClangWhileStmt;
     99 
    100 enum ZigClangBO {
    101     ZigClangBO_PtrMemD,
    102     ZigClangBO_PtrMemI,
    103     ZigClangBO_Mul,
    104     ZigClangBO_Div,
    105     ZigClangBO_Rem,
    106     ZigClangBO_Add,
    107     ZigClangBO_Sub,
    108     ZigClangBO_Shl,
    109     ZigClangBO_Shr,
    110     ZigClangBO_Cmp,
    111     ZigClangBO_LT,
    112     ZigClangBO_GT,
    113     ZigClangBO_LE,
    114     ZigClangBO_GE,
    115     ZigClangBO_EQ,
    116     ZigClangBO_NE,
    117     ZigClangBO_And,
    118     ZigClangBO_Xor,
    119     ZigClangBO_Or,
    120     ZigClangBO_LAnd,
    121     ZigClangBO_LOr,
    122     ZigClangBO_Assign,
    123     ZigClangBO_MulAssign,
    124     ZigClangBO_DivAssign,
    125     ZigClangBO_RemAssign,
    126     ZigClangBO_AddAssign,
    127     ZigClangBO_SubAssign,
    128     ZigClangBO_ShlAssign,
    129     ZigClangBO_ShrAssign,
    130     ZigClangBO_AndAssign,
    131     ZigClangBO_XorAssign,
    132     ZigClangBO_OrAssign,
    133     ZigClangBO_Comma,
    134 };
    135 
    136 enum ZigClangUO {
    137     ZigClangUO_PostInc,
    138     ZigClangUO_PostDec,
    139     ZigClangUO_PreInc,
    140     ZigClangUO_PreDec,
    141     ZigClangUO_AddrOf,
    142     ZigClangUO_Deref,
    143     ZigClangUO_Plus,
    144     ZigClangUO_Minus,
    145     ZigClangUO_Not,
    146     ZigClangUO_LNot,
    147     ZigClangUO_Real,
    148     ZigClangUO_Imag,
    149     ZigClangUO_Extension,
    150     ZigClangUO_Coawait,
    151 };
    152 
    153 //struct ZigClangCC_AAPCS;
    154 //struct ZigClangCC_AAPCS_VFP;
    155 //struct ZigClangCC_C;
    156 //struct ZigClangCC_IntelOclBicc;
    157 //struct ZigClangCC_OpenCLKernel;
    158 //struct ZigClangCC_PreserveAll;
    159 //struct ZigClangCC_PreserveMost;
    160 //struct ZigClangCC_SpirFunction;
    161 //struct ZigClangCC_Swift;
    162 //struct ZigClangCC_Win64;
    163 //struct ZigClangCC_X86FastCall;
    164 //struct ZigClangCC_X86Pascal;
    165 //struct ZigClangCC_X86RegCall;
    166 //struct ZigClangCC_X86StdCall;
    167 //struct ZigClangCC_X86ThisCall;
    168 //struct ZigClangCC_X86VectorCall;
    169 //struct ZigClangCC_X86_64SysV;
    170 
    171 //struct ZigClangCK_ARCConsumeObject;
    172 //struct ZigClangCK_ARCExtendBlockObject;
    173 //struct ZigClangCK_ARCProduceObject;
    174 //struct ZigClangCK_ARCReclaimReturnedObject;
    175 //struct ZigClangCK_AddressSpaceConversion;
    176 //struct ZigClangCK_AnyPointerToBlockPointerCast;
    177 //struct ZigClangCK_ArrayToPointerDecay;
    178 //struct ZigClangCK_AtomicToNonAtomic;
    179 //struct ZigClangCK_BaseToDerived;
    180 //struct ZigClangCK_BaseToDerivedMemberPointer;
    181 //struct ZigClangCK_BitCast;
    182 //struct ZigClangCK_BlockPointerToObjCPointerCast;
    183 //struct ZigClangCK_BooleanToSignedIntegral;
    184 //struct ZigClangCK_BuiltinFnToFnPtr;
    185 //struct ZigClangCK_CPointerToObjCPointerCast;
    186 //struct ZigClangCK_ConstructorConversion;
    187 //struct ZigClangCK_CopyAndAutoreleaseBlockObject;
    188 //struct ZigClangCK_Dependent;
    189 //struct ZigClangCK_DerivedToBase;
    190 //struct ZigClangCK_DerivedToBaseMemberPointer;
    191 //struct ZigClangCK_Dynamic;
    192 //struct ZigClangCK_FloatingCast;
    193 //struct ZigClangCK_FloatingComplexCast;
    194 //struct ZigClangCK_FloatingComplexToBoolean;
    195 //struct ZigClangCK_FloatingComplexToIntegralComplex;
    196 //struct ZigClangCK_FloatingComplexToReal;
    197 //struct ZigClangCK_FloatingRealToComplex;
    198 //struct ZigClangCK_FloatingToBoolean;
    199 //struct ZigClangCK_FloatingToIntegral;
    200 //struct ZigClangCK_FunctionToPointerDecay;
    201 //struct ZigClangCK_IntToOCLSampler;
    202 //struct ZigClangCK_IntegralCast;
    203 //struct ZigClangCK_IntegralComplexCast;
    204 //struct ZigClangCK_IntegralComplexToBoolean;
    205 //struct ZigClangCK_IntegralComplexToFloatingComplex;
    206 //struct ZigClangCK_IntegralComplexToReal;
    207 //struct ZigClangCK_IntegralRealToComplex;
    208 //struct ZigClangCK_IntegralToBoolean;
    209 //struct ZigClangCK_IntegralToFloating;
    210 //struct ZigClangCK_IntegralToPointer;
    211 //struct ZigClangCK_LValueBitCast;
    212 //struct ZigClangCK_LValueToRValue;
    213 //struct ZigClangCK_MemberPointerToBoolean;
    214 //struct ZigClangCK_NoOp;
    215 //struct ZigClangCK_NonAtomicToAtomic;
    216 //struct ZigClangCK_NullToMemberPointer;
    217 //struct ZigClangCK_NullToPointer;
    218 //struct ZigClangCK_ObjCObjectLValueCast;
    219 //struct ZigClangCK_PointerToBoolean;
    220 //struct ZigClangCK_PointerToIntegral;
    221 //struct ZigClangCK_ReinterpretMemberPointer;
    222 //struct ZigClangCK_ToUnion;
    223 //struct ZigClangCK_ToVoid;
    224 //struct ZigClangCK_UncheckedDerivedToBase;
    225 //struct ZigClangCK_UserDefinedConversion;
    226 //struct ZigClangCK_VectorSplat;
    227 //struct ZigClangCK_ZeroToOCLEvent;
    228 //struct ZigClangCK_ZeroToOCLQueue;
    229 
    230 //struct ZigClangETK_Class;
    231 //struct ZigClangETK_Enum;
    232 //struct ZigClangETK_Interface;
    233 //struct ZigClangETK_None;
    234 //struct ZigClangETK_Struct;
    235 //struct ZigClangETK_Typename;
    236 //struct ZigClangETK_Union;
    237 
    238 //struct ZigClangSC_None;
    239 //struct ZigClangSC_PrivateExtern;
    240 //struct ZigClangSC_Static;
    241 
    242 //struct ZigClangTU_Complete;
    243 
    244 ZIG_EXTERN_C ZigClangSourceLocation ZigClangSourceManager_getSpellingLoc(const ZigClangSourceManager *,
    245         ZigClangSourceLocation Loc);
    246 ZIG_EXTERN_C const char *ZigClangSourceManager_getFilename(const ZigClangSourceManager *,
    247         ZigClangSourceLocation SpellingLoc);
    248 ZIG_EXTERN_C unsigned ZigClangSourceManager_getSpellingLineNumber(const ZigClangSourceManager *,
    249         ZigClangSourceLocation Loc);
    250 ZIG_EXTERN_C unsigned ZigClangSourceManager_getSpellingColumnNumber(const ZigClangSourceManager *,
    251         ZigClangSourceLocation Loc);
    252 ZIG_EXTERN_C const char* ZigClangSourceManager_getCharacterData(const ZigClangSourceManager *,
    253         ZigClangSourceLocation SL);
    254 
    255 ZIG_EXTERN_C ZigClangQualType ZigClangASTContext_getPointerType(const ZigClangASTContext*, ZigClangQualType T);
    256 
    257 ZIG_EXTERN_C ZigClangASTContext *ZigClangASTUnit_getASTContext(ZigClangASTUnit *);
    258 ZIG_EXTERN_C ZigClangSourceManager *ZigClangASTUnit_getSourceManager(ZigClangASTUnit *);
    259 ZIG_EXTERN_C bool ZigClangASTUnit_visitLocalTopLevelDecls(ZigClangASTUnit *, void *context, 
    260     bool (*Fn)(void *context, const ZigClangDecl *decl));
    261 
    262 ZIG_EXTERN_C const ZigClangRecordDecl *ZigClangRecordType_getDecl(const ZigClangRecordType *record_ty);
    263 ZIG_EXTERN_C const ZigClangEnumDecl *ZigClangEnumType_getDecl(const ZigClangEnumType *record_ty);
    264 
    265 ZIG_EXTERN_C const ZigClangTagDecl *ZigClangRecordDecl_getCanonicalDecl(const ZigClangRecordDecl *record_decl);
    266 ZIG_EXTERN_C const ZigClangTagDecl *ZigClangEnumDecl_getCanonicalDecl(const ZigClangEnumDecl *);
    267 ZIG_EXTERN_C const ZigClangTypedefNameDecl *ZigClangTypedefNameDecl_getCanonicalDecl(const ZigClangTypedefNameDecl *);
    268 
    269 ZIG_EXTERN_C const ZigClangRecordDecl *ZigClangRecordDecl_getDefinition(const ZigClangRecordDecl *);
    270 ZIG_EXTERN_C const ZigClangEnumDecl *ZigClangEnumDecl_getDefinition(const ZigClangEnumDecl *);
    271 
    272 ZIG_EXTERN_C ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *);
    273 ZIG_EXTERN_C ZigClangSourceLocation ZigClangEnumDecl_getLocation(const ZigClangEnumDecl *);
    274 ZIG_EXTERN_C ZigClangSourceLocation ZigClangTypedefNameDecl_getLocation(const ZigClangTypedefNameDecl *);
    275 
    276 ZIG_EXTERN_C bool ZigClangRecordDecl_isUnion(const ZigClangRecordDecl *record_decl);
    277 ZIG_EXTERN_C bool ZigClangRecordDecl_isStruct(const ZigClangRecordDecl *record_decl);
    278 ZIG_EXTERN_C bool ZigClangRecordDecl_isAnonymousStructOrUnion(const ZigClangRecordDecl *record_decl);
    279 
    280 ZIG_EXTERN_C ZigClangQualType ZigClangEnumDecl_getIntegerType(const ZigClangEnumDecl *);
    281 
    282 ZIG_EXTERN_C const char *ZigClangDecl_getName_bytes_begin(const ZigClangDecl *decl);
    283 
    284 ZIG_EXTERN_C bool ZigClangSourceLocation_eq(ZigClangSourceLocation a, ZigClangSourceLocation b);
    285 
    286 ZIG_EXTERN_C const ZigClangTypedefNameDecl *ZigClangTypedefType_getDecl(const ZigClangTypedefType *);
    287 ZIG_EXTERN_C ZigClangQualType ZigClangTypedefNameDecl_getUnderlyingType(const ZigClangTypedefNameDecl *);
    288 #endif