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