import clang.c.index;
import std.string;
extern (C) int printf(in char*, ...);
immutable(char*)* strToCArray (string[] arr)
{
if (!arr)
return null;
immutable(char*)[] cArr;
cArr.reserve(arr.length);
foreach (str ; arr)
cArr ~= str.toStringz;
return cArr.ptr;
}
int main (string[] args)
{
CXIndex Index = clang_createIndex(0, 0);
CXTranslationUnit TU = clang_parseTranslationUnit(Index, null, strToCArray(args), cast(uint) args.length, null, 0, CXTranslationUnit_Flags.CXTranslationUnit_None);
for (uint I = 0, N = clang_getNumDiagnostics(TU); I != N; ++I)
{
CXDiagnostic Diag = clang_getDiagnostic(TU, I);
CXString String = clang_formatDiagnostic(Diag, clang_defaultDiagnosticDisplayOptions());
printf("%s\n", clang_getCString(String));
clang_disposeString(String);
}
clang_disposeTranslationUnit(TU);
clang_disposeIndex(Index);
return 0;
}