1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- TextDiagnosticPrinter.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//===----------------------------------------------------------------------===//
987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines#ifndef MCLD_LD_TEXTDIAGNOSTICPRINTER_H
1087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines#define MCLD_LD_TEXTDIAGNOSTICPRINTER_H
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticPrinter.h>
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <llvm/Support/raw_ostream.h>
13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
14affc150dc44fab1911775a49636d0ce85333b634Zonr Changnamespace mcld
15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
1722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass LinkerConfig;
18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
19affc150dc44fab1911775a49636d0ce85333b634Zonr Chang/** \class TextDiagnosticPrinter
20affc150dc44fab1911775a49636d0ce85333b634Zonr Chang *  \brief The plain, text-based DiagnosticPrinter.
21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang */
22affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass TextDiagnosticPrinter : public DiagnosticPrinter
23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
24affc150dc44fab1911775a49636d0ce85333b634Zonr Changpublic:
2522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  TextDiagnosticPrinter(llvm::raw_ostream& pOStream, const LinkerConfig& pConfig);
26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual ~TextDiagnosticPrinter();
28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
29affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  /// HandleDiagnostic - Handle this diagnostic, reporting it to the user or
30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  /// capturing it to a log as needed.
31affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual void handleDiagnostic(DiagnosticEngine::Severity pSeverity,
32affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                const Diagnostic& pInfo);
33affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
3422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  virtual void beginInput(const Input& pInput, const LinkerConfig& pConfig);
35affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  virtual void endInput();
37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
38affc150dc44fab1911775a49636d0ce85333b634Zonr Changprivate:
39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  llvm::raw_ostream& m_OStream;
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  const LinkerConfig& m_Config;
41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const Input* m_pInput;
42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang};
43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} // namespace of mcld
45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#endif
47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
48