1 //===- TextDiagnosticPrinter.h --------------------------------------------===//
2 //
3 //                     The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #ifndef MCLD_LD_TEXTDIAGNOSTICPRINTER_H_
10 #define MCLD_LD_TEXTDIAGNOSTICPRINTER_H_
11 #include "mcld/LD/DiagnosticPrinter.h"
12 
13 #include <llvm/Support/raw_ostream.h>
14 
15 namespace mcld {
16 
17 class LinkerConfig;
18 
19 /** \class TextDiagnosticPrinter
20  *  \brief The plain, text-based DiagnosticPrinter.
21  */
22 class TextDiagnosticPrinter : public DiagnosticPrinter {
23  public:
24   TextDiagnosticPrinter(llvm::raw_ostream& pOStream,
25                         const LinkerConfig& pConfig);
26 
27   virtual ~TextDiagnosticPrinter();
28 
29   /// HandleDiagnostic - Handle this diagnostic, reporting it to the user or
30   /// capturing it to a log as needed.
31   virtual void handleDiagnostic(DiagnosticEngine::Severity pSeverity,
32                                 const Diagnostic& pInfo);
33 
34   virtual void beginInput(const Input& pInput, const LinkerConfig& pConfig);
35 
36   virtual void endInput();
37 
38  private:
39   llvm::raw_ostream& m_OStream;
40   const LinkerConfig& m_Config;
41   const Input* m_pInput;
42 };
43 
44 }  // namespace mcld
45 
46 #endif  // MCLD_LD_TEXTDIAGNOSTICPRINTER_H_
47