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