CIndexDiagnostic.h revision a88084b78fd4ca5d3d858c14b02414f8cc399f02
1d93256e55673a17d18543397ec462416acb13792Douglas Gregor/*===-- CIndexDiagnostic.h - Diagnostics C Interface ------------*- C++ -*-===*\ 25352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* *| 35352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* The LLVM Compiler Infrastructure *| 45352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* *| 55352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* This file is distributed under the University of Illinois Open Source *| 65352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* License. See LICENSE.TXT for details. *| 75352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* *| 85352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|*===----------------------------------------------------------------------===*| 95352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* *| 105352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* Implements the diagnostic functions of the Clang C interface. *| 115352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor|* *| 125352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor\*===----------------------------------------------------------------------===*/ 135352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor#ifndef LLVM_CLANG_CINDEX_DIAGNOSTIC_H 145352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor#define LLVM_CLANG_CINDEX_DIAGNOSTIC_H 155352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor 165352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor#include "clang-c/Index.h" 175352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor#include "clang/Basic/Diagnostic.h" 185352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor#include "clang/Basic/LangOptions.h" 19a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor#include "llvm/ADT/SmallVector.h" 205352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor 21d93256e55673a17d18543397ec462416acb13792Douglas Gregornamespace llvm { namespace sys { 22d93256e55673a17d18543397ec462416acb13792Douglas Gregorclass Path; 23d93256e55673a17d18543397ec462416acb13792Douglas Gregor} } 24d93256e55673a17d18543397ec462416acb13792Douglas Gregor 255352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregornamespace clang { 265352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor 27d93256e55673a17d18543397ec462416acb13792Douglas Gregorclass Diagnostic; 2835b8440f615a2336f2819a98a78fc89f07d905e1Daniel Dunbarclass LangOptions; 295352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregorclass Preprocessor; 304914612675787cda11ad6b31735e130a81a1d7a1Daniel Dunbar 31a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor/// \brief The storage behind a CXDiagnostic 32a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregorstruct CXStoredDiagnostic { 33a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor const StoredDiagnostic &Diag; 34a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor const LangOptions &LangOpts; 35a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor 36a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor CXStoredDiagnostic(const StoredDiagnostic &Diag, 37a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor const LangOptions &LangOpts) 38a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor : Diag(Diag), LangOpts(LangOpts) { } 395352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor}; 40a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor 41d93256e55673a17d18543397ec462416acb13792Douglas Gregor/// \brief Given the path to a file that contains binary, serialized 42a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor/// diagnostics produced by Clang, load those diagnostics. 43a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregorvoid LoadSerializedDiagnostics(const llvm::sys::Path &DiagnosticsPath, 44a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor unsigned num_unsaved_files, 45a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor struct CXUnsavedFile *unsaved_files, 46a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor FileManager &FileMgr, 47a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor SourceManager &SourceMgr, 48a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor llvm::SmallVectorImpl<StoredDiagnostic> &Diags); 49d93256e55673a17d18543397ec462416acb13792Douglas Gregor 505352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor} // end namespace clang 515352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor 525352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor#endif // LLVM_CLANG_CINDEX_DIAGNOSTIC_H 53