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