View difference between Paste ID: XPBsSVup and
SHOW: | | - or go back to the newest paste.
1-
1+
import clang.c.index;
2
import std.string;
3
4
extern (C) int printf(in char*, ...);
5
6
immutable(char*)* strToCArray (string[] arr)
7
{
8
    if (!arr)
9
        return null;
10
    
11
    immutable(char*)[] cArr;
12
    cArr.reserve(arr.length);
13
    
14
    foreach (str ; arr)
15
        cArr ~= str.toStringz;
16
    
17
    return cArr.ptr;
18
}
19
20
int main (string[] args)
21
{
22
    CXIndex Index = clang_createIndex(0, 0);
23
    CXTranslationUnit TU = clang_parseTranslationUnit(Index, null, strToCArray(args), cast(uint) args.length, null, 0, CXTranslationUnit_Flags.CXTranslationUnit_None);
24
25
    for (uint I = 0, N = clang_getNumDiagnostics(TU); I != N; ++I)
26
    {
27
        CXDiagnostic Diag = clang_getDiagnostic(TU, I);
28
        CXString String = clang_formatDiagnostic(Diag, clang_defaultDiagnosticDisplayOptions());
29
        printf("%s\n", clang_getCString(String));
30
31
        clang_disposeString(String);
32
    }
33
34
    clang_disposeTranslationUnit(TU);
35
     clang_disposeIndex(Index);
36
37
     return 0;
38
}