1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- MsgHandling.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_SUPPORT_MSGHANDLING_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_SUPPORT_MSGHANDLING_H_
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/MsgHandler.h"
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
1322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld {
14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
1522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass LinkerConfig;
16affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass DiagnosticPrinter;
17affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass DiagnosticLineInfo;
18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
1922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaovoid InitializeDiagnosticEngine(const LinkerConfig& pConfig,
2022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                                DiagnosticPrinter* pPrinter = NULL);
2122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaovoid FinalizeDiagnosticEngine();
2322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool Diagnose();
25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
26affc150dc44fab1911775a49636d0ce85333b634Zonr ChangDiagnosticEngine& getDiagnosticEngine();
27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
28affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler unreachable(unsigned int pID);
29affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler fatal(unsigned int pID);
30affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler error(unsigned int pID);
31affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler warning(unsigned int pID);
32affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler debug(unsigned int pID);
33affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler note(unsigned int pID);
34affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler ignore(unsigned int pID);
35affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
3637b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//  Inline functions
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
4137b74a387bb3993387029859c2d9d051c41c724eStephen Hinesinline mcld::MsgHandler mcld::unreachable(unsigned int pID) {
42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Unreachable);
43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
4537b74a387bb3993387029859c2d9d051c41c724eStephen Hinesinline mcld::MsgHandler mcld::fatal(unsigned int pID) {
46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Fatal);
47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
4937b74a387bb3993387029859c2d9d051c41c724eStephen Hinesinline mcld::MsgHandler mcld::error(unsigned int pID) {
50affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Error);
51affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
52affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
5337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesinline mcld::MsgHandler mcld::warning(unsigned int pID) {
54affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Warning);
55affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
56affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
5737b74a387bb3993387029859c2d9d051c41c724eStephen Hinesinline mcld::MsgHandler mcld::debug(unsigned int pID) {
58affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Debug);
59affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
60affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
6137b74a387bb3993387029859c2d9d051c41c724eStephen Hinesinline mcld::MsgHandler mcld::note(unsigned int pID) {
62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Note);
63affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
64affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
6537b74a387bb3993387029859c2d9d051c41c724eStephen Hinesinline mcld::MsgHandler mcld::ignore(unsigned int pID) {
66affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Ignore);
67affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
68affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
6937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // MCLD_SUPPORT_MSGHANDLING_H_
70