]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/include/clang/Frontend/SerializedDiagnosticPrinter.h
Update compiler-rt to trunk r224034. This brings a number of new
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / include / clang / Frontend / SerializedDiagnosticPrinter.h
1 //===--- SerializedDiagnosticPrinter.h - Serializer for diagnostics -------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef LLVM_CLANG_FRONTEND_SERIALIZE_DIAGNOSTIC_PRINTER_H_
11 #define LLVM_CLANG_FRONTEND_SERIALIZE_DIAGNOSTIC_PRINTER_H_
12
13 #include "clang/Basic/LLVM.h"
14 #include "llvm/Bitcode/BitstreamWriter.h"
15
16 namespace llvm {
17 class raw_ostream;
18 }
19
20 namespace clang {
21 class DiagnosticConsumer;
22 class DiagnosticsEngine;
23 class DiagnosticOptions;
24
25 namespace serialized_diags {
26   
27 enum BlockIDs {
28   /// \brief A top-level block which represents any meta data associated
29   /// with the diagostics, including versioning of the format.
30   BLOCK_META = llvm::bitc::FIRST_APPLICATION_BLOCKID,
31
32   /// \brief The this block acts as a container for all the information
33   /// for a specific diagnostic.
34   BLOCK_DIAG
35 };
36
37 enum RecordIDs {
38   RECORD_VERSION = 1,
39   RECORD_DIAG,
40   RECORD_SOURCE_RANGE,
41   RECORD_DIAG_FLAG,
42   RECORD_CATEGORY,
43   RECORD_FILENAME,
44   RECORD_FIXIT,
45   RECORD_FIRST = RECORD_VERSION,
46   RECORD_LAST = RECORD_FIXIT
47 };
48
49 /// A stable version of DiagnosticIDs::Level.
50 ///
51 /// Do not change the order of values in this enum, and please increment the
52 /// serialized diagnostics version number when you add to it.
53 enum Level {
54   Ignored = 0,
55   Note,
56   Warning,
57   Error,
58   Fatal,
59   Remark
60 };
61
62 /// \brief Returns a DiagnosticConsumer that serializes diagnostics to
63 ///  a bitcode file.
64 ///
65 /// The created DiagnosticConsumer is designed for quick and lightweight
66 /// transfer of of diagnostics to the enclosing build system (e.g., an IDE).
67 /// This allows wrapper tools for Clang to get diagnostics from Clang
68 /// (via libclang) without needing to parse Clang's command line output.
69 ///
70 DiagnosticConsumer *create(raw_ostream *OS,
71                            DiagnosticOptions *diags);
72
73 } // end serialized_diags namespace
74 } // end clang namespace
75
76 #endif