1//===- MsgHandling.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_SUPPORT_MSGHANDLING_H_
10#define MCLD_SUPPORT_MSGHANDLING_H_
11#include "mcld/LD/MsgHandler.h"
12
13namespace mcld {
14
15class LinkerConfig;
16class DiagnosticPrinter;
17class DiagnosticLineInfo;
18
19void InitializeDiagnosticEngine(const LinkerConfig& pConfig,
20                                DiagnosticPrinter* pPrinter = NULL);
21
22void FinalizeDiagnosticEngine();
23
24bool Diagnose();
25
26DiagnosticEngine& getDiagnosticEngine();
27
28MsgHandler unreachable(unsigned int pID);
29MsgHandler fatal(unsigned int pID);
30MsgHandler error(unsigned int pID);
31MsgHandler warning(unsigned int pID);
32MsgHandler debug(unsigned int pID);
33MsgHandler note(unsigned int pID);
34MsgHandler ignore(unsigned int pID);
35
36}  // namespace mcld
37
38//===----------------------------------------------------------------------===//
39//  Inline functions
40//===----------------------------------------------------------------------===//
41inline mcld::MsgHandler mcld::unreachable(unsigned int pID) {
42  return getDiagnosticEngine().report(pID, DiagnosticEngine::Unreachable);
43}
44
45inline mcld::MsgHandler mcld::fatal(unsigned int pID) {
46  return getDiagnosticEngine().report(pID, DiagnosticEngine::Fatal);
47}
48
49inline mcld::MsgHandler mcld::error(unsigned int pID) {
50  return getDiagnosticEngine().report(pID, DiagnosticEngine::Error);
51}
52
53inline mcld::MsgHandler mcld::warning(unsigned int pID) {
54  return getDiagnosticEngine().report(pID, DiagnosticEngine::Warning);
55}
56
57inline mcld::MsgHandler mcld::debug(unsigned int pID) {
58  return getDiagnosticEngine().report(pID, DiagnosticEngine::Debug);
59}
60
61inline mcld::MsgHandler mcld::note(unsigned int pID) {
62  return getDiagnosticEngine().report(pID, DiagnosticEngine::Note);
63}
64
65inline mcld::MsgHandler mcld::ignore(unsigned int pID) {
66  return getDiagnosticEngine().report(pID, DiagnosticEngine::Ignore);
67}
68
69#endif  // MCLD_SUPPORT_MSGHANDLING_H_
70