/*===-- CIndexDiagnostic.h - Diagnostics C Interface ------------*- C++ -*-===*\ |* *| |* The LLVM Compiler Infrastructure *| |* *| |* This file is distributed under the University of Illinois Open Source *| |* License. See LICENSE.TXT for details. *| |* *| |*===----------------------------------------------------------------------===*| |* *| |* Implements the diagnostic functions of the Clang C interface. *| |* *| \*===----------------------------------------------------------------------===*/ #ifndef LLVM_CLANG_CINDEX_DIAGNOSTIC_H #define LLVM_CLANG_CINDEX_DIAGNOSTIC_H #include "clang-c/Index.h" #include "clang/Basic/Diagnostic.h" #include "clang/Basic/LangOptions.h" namespace llvm { namespace sys { class Path; } } namespace clang { class Diagnostic; class LangOptions; class Preprocessor; /** * \brief Diagnostic client that translates Clang diagnostics into diagnostics * for the C interface to Clang. */ class CIndexDiagnosticClient : public DiagnosticClient { CXDiagnosticCallback Callback; CXClientData ClientData; const LangOptions *LangOptsPtr; public: CIndexDiagnosticClient(CXDiagnosticCallback Callback, CXClientData ClientData) : Callback(Callback), ClientData(ClientData), LangOptsPtr(0) { } virtual ~CIndexDiagnosticClient(); virtual void BeginSourceFile(const LangOptions &LangOpts, const Preprocessor *PP); virtual void EndSourceFile(); virtual void HandleDiagnostic(Diagnostic::Level DiagLevel, const DiagnosticInfo &Info); }; /// \brief Given the path to a file that contains binary, serialized /// diagnostics produced by Clang, emit those diagnostics via the /// given diagnostic engine. void ReportSerializedDiagnostics(const llvm::sys::Path &DiagnosticsPath, Diagnostic &Diags, unsigned num_unsaved_files, struct CXUnsavedFile *unsaved_files, const LangOptions &LangOpts); } // end namespace clang #endif // LLVM_CLANG_CINDEX_DIAGNOSTIC_H