1 //===- DiagnosticPrinter.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_DIAGNOSTICPRINTER_H_
10 #define MCLD_LD_DIAGNOSTICPRINTER_H_
11 
12 #include "mcld/LD/Diagnostic.h"
13 #include "mcld/LD/DiagnosticEngine.h"
14 
15 namespace mcld {
16 
17 /** \class DiagnosticPrinter
18  *  \brief DiagnosticPrinter provides the interface to customize diagnostic
19  *  messages and output.
20  */
21 class DiagnosticPrinter {
22  public:
23   DiagnosticPrinter();
24 
25   virtual ~DiagnosticPrinter();
26 
beginInput(const Input & pInput,const LinkerConfig & pConfig)27   virtual void beginInput(const Input& pInput, const LinkerConfig& pConfig) {}
28 
endInput()29   virtual void endInput() {}
30 
finish()31   virtual void finish() {}
32 
clear()33   virtual void clear() { m_NumErrors = m_NumWarnings = 0; }
34 
35   /// HandleDiagnostic - Handle this diagnostic, reporting it to the user or
36   /// capturing it to a log as needed.
37   virtual void handleDiagnostic(DiagnosticEngine::Severity pSeverity,
38                                 const Diagnostic& pInfo);
39 
getNumErrors()40   unsigned int getNumErrors() const { return m_NumErrors; }
getNumWarnings()41   unsigned int getNumWarnings() const { return m_NumWarnings; }
42 
43  protected:
44   unsigned int m_NumErrors;
45   unsigned int m_NumWarnings;
46 };
47 
48 }  // namespace mcld
49 
50 #endif  // MCLD_LD_DIAGNOSTICPRINTER_H_
51