CIndexDiagnostic.h revision b846debc1b22a37228efe4aa87b34482d15b6a3c
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 16b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramerstruct CXUnsavedFile; 175352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor 18b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramernamespace llvm { 19b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramertemplate<typename T> class SmallVectorImpl; 20b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramernamespace sys { class Path; } 21b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramer} 22d93256e55673a17d18543397ec462416acb13792Douglas Gregor 235352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregornamespace clang { 245352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor 25d93256e55673a17d18543397ec462416acb13792Douglas Gregorclass Diagnostic; 26b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramerclass FileManager; 2735b8440f615a2336f2819a98a78fc89f07d905e1Daniel Dunbarclass LangOptions; 285352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregorclass Preprocessor; 29b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramerclass StoredDiagnostic; 30b846debc1b22a37228efe4aa87b34482d15b6a3cBenjamin Kramerclass SourceManager; 314914612675787cda11ad6b31735e130a81a1d7a1Daniel Dunbar 32a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor/// \brief The storage behind a CXDiagnostic 33a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregorstruct CXStoredDiagnostic { 34a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor const StoredDiagnostic &Diag; 35a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor const LangOptions &LangOpts; 36a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor 37a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor CXStoredDiagnostic(const StoredDiagnostic &Diag, 38a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor const LangOptions &LangOpts) 39a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor : Diag(Diag), LangOpts(LangOpts) { } 405352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor}; 41a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor 42d93256e55673a17d18543397ec462416acb13792Douglas Gregor/// \brief Given the path to a file that contains binary, serialized 43a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor/// diagnostics produced by Clang, load those diagnostics. 44a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregorvoid LoadSerializedDiagnostics(const llvm::sys::Path &DiagnosticsPath, 45a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor unsigned num_unsaved_files, 46a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor struct CXUnsavedFile *unsaved_files, 47a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor FileManager &FileMgr, 48a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor SourceManager &SourceMgr, 49a88084b78fd4ca5d3d858c14b02414f8cc399f02Douglas Gregor llvm::SmallVectorImpl<StoredDiagnostic> &Diags); 50d93256e55673a17d18543397ec462416acb13792Douglas Gregor 515352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor} // end namespace clang 525352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor 535352ac06d8f6194825bb2a99ffa009b61bafb503Douglas Gregor#endif // LLVM_CLANG_CINDEX_DIAGNOSTIC_H 54