DiagnosticPrinter.h revision 37b74a387bb3993387029859c2d9d051c41c724e
1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- DiagnosticPrinter.h ------------------------------------------------===//
2affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
3affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//                     The MCLinker Project
4affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
5affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// This file is distributed under the University of Illinois Open Source
6affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// License. See LICENSE.TXT for details.
7affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
8affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef MCLD_LD_DIAGNOSTICPRINTER_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_LD_DIAGNOSTICPRINTER_H_
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/Diagnostic.h"
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/DiagnosticEngine.h"
1437b74a387bb3993387029859c2d9d051c41c724eStephen Hines
1537b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld {
16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang/** \class DiagnosticPrinter
18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang *  \brief DiagnosticPrinter provides the interface to customize diagnostic
19affc150dc44fab1911775a49636d0ce85333b634Zonr Chang *  messages and output.
20affc150dc44fab1911775a49636d0ce85333b634Zonr Chang */
2137b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass DiagnosticPrinter {
2237b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  DiagnosticPrinter();
24affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual ~DiagnosticPrinter();
26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
2722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  virtual void beginInput(const Input& pInput, const LinkerConfig& pConfig) {}
28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
29affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual void endInput() {}
30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
31affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual void finish() {}
32affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
3337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  virtual void clear() { m_NumErrors = m_NumWarnings = 0; }
34affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
35affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  /// HandleDiagnostic - Handle this diagnostic, reporting it to the user or
36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  /// capturing it to a log as needed.
37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual void handleDiagnostic(DiagnosticEngine::Severity pSeverity,
38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                const Diagnostic& pInfo);
39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  unsigned int getNumErrors() const { return m_NumErrors; }
4122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  unsigned int getNumWarnings() const { return m_NumWarnings; }
42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
4337b74a387bb3993387029859c2d9d051c41c724eStephen Hines protected:
44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  unsigned int m_NumErrors;
45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  unsigned int m_NumWarnings;
46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang};
47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
4837b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
49affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
5037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // MCLD_LD_DIAGNOSTICPRINTER_H_
51