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//===----------------------------------------------------------------------===//
9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#ifndef MCLD_MESSAGE_HANDLING_H
10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#define MCLD_MESSAGE_HANDLING_H
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#ifdef ENABLE_UNITTEST
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <gtest.h>
13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#endif
14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/MsgHandler.h>
15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
1622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld {
17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
1822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass LinkerConfig;
19affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass DiagnosticPrinter;
20affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass DiagnosticLineInfo;
21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
2222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaovoid InitializeDiagnosticEngine(const LinkerConfig& pConfig,
2322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                                DiagnosticPrinter* pPrinter = NULL);
2422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaovoid FinalizeDiagnosticEngine();
2622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool Diagnose();
28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
29affc150dc44fab1911775a49636d0ce85333b634Zonr ChangDiagnosticEngine& getDiagnosticEngine();
30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
31affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler unreachable(unsigned int pID);
32affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler fatal(unsigned int pID);
33affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler error(unsigned int pID);
34affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler warning(unsigned int pID);
35affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler debug(unsigned int pID);
36affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler note(unsigned int pID);
37affc150dc44fab1911775a49636d0ce85333b634Zonr ChangMsgHandler ignore(unsigned int pID);
38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} // namespace of mcld
40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//  Inline functions
4322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
44affc150dc44fab1911775a49636d0ce85333b634Zonr Changinline mcld::MsgHandler mcld::unreachable(unsigned int pID)
45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Unreachable);
47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
49affc150dc44fab1911775a49636d0ce85333b634Zonr Changinline mcld::MsgHandler mcld::fatal(unsigned int pID)
50affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
51affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Fatal);
52affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
53affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
54affc150dc44fab1911775a49636d0ce85333b634Zonr Changinline mcld::MsgHandler mcld::error(unsigned int pID)
55affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
56affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Error);
57affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
58affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
59affc150dc44fab1911775a49636d0ce85333b634Zonr Changinline mcld::MsgHandler mcld::warning(unsigned int pID)
60affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
61affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Warning);
62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
63affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
64affc150dc44fab1911775a49636d0ce85333b634Zonr Changinline mcld::MsgHandler mcld::debug(unsigned int pID)
65affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
66affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Debug);
67affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
68affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
69affc150dc44fab1911775a49636d0ce85333b634Zonr Changinline mcld::MsgHandler mcld::note(unsigned int pID)
70affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
71affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Note);
72affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
73affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
74affc150dc44fab1911775a49636d0ce85333b634Zonr Changinline mcld::MsgHandler mcld::ignore(unsigned int pID)
75affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
76affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  return getDiagnosticEngine().report(pID, DiagnosticEngine::Ignore);
77affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
78affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
79affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#endif
80affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
81